| #ifndef Py_INTERNAL_ATEXIT_H | |
| #define Py_INTERNAL_ATEXIT_H | |
| #ifdef __cplusplus | |
| extern "C" { | |
| #endif | |
| #ifndef Py_BUILD_CORE | |
| # error "this header requires Py_BUILD_CORE define" | |
| #endif | |
| #ifdef Py_GIL_DISABLED | |
| # define _PyAtExit_LockCallbacks(state) PyMutex_Lock(&state->ll_callbacks_lock); | |
| # define _PyAtExit_UnlockCallbacks(state) PyMutex_Unlock(&state->ll_callbacks_lock); | |
| #else | |
| # define _PyAtExit_LockCallbacks(state) | |
| # define _PyAtExit_UnlockCallbacks(state) | |
| #endif | |
| // Export for '_interpchannels' shared extension | |
| PyAPI_FUNC(int) _Py_AtExit( | |
| PyInterpreterState *interp, | |
| atexit_datacallbackfunc func, | |
| void *data); | |
| #ifdef __cplusplus | |
| } | |
| #endif | |
| #endif /* !Py_INTERNAL_ATEXIT_H */ |