| #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 */ |