1 #ifndef Py_INTERNAL_LIFECYCLE_H 2 #define Py_INTERNAL_LIFECYCLE_H 3 #ifdef __cplusplus 4 extern "C" { 5 #endif 6 7 #ifndef Py_BUILD_CORE 8 # error "this header requires Py_BUILD_CORE define" 9 #endif 10 11 #ifdef HAVE_SIGNAL_H 12 #include <signal.h> 13 #endif 14 15 #include "pycore_runtime.h" // _PyRuntimeState 16 17 #ifndef NSIG 18 # if defined(_NSIG) 19 # define NSIG _NSIG /* For BSD/SysV */ 20 # elif defined(_SIGMAX) 21 # define NSIG (_SIGMAX + 1) /* For QNX */ 22 # elif defined(SIGMAX) 23 # define NSIG (SIGMAX + 1) /* For djgpp */ 24 # else 25 # define NSIG 64 /* Use a reasonable default value */ 26 # endif 27 #endif 28 29 /* Forward declarations */ 30 struct _PyArgv; 31 struct pyruntimestate; 32 33 /* True if the main interpreter thread exited due to an unhandled 34 * KeyboardInterrupt exception, suggesting the user pressed ^C. */ 35 PyAPI_DATA(int) _Py_UnhandledKeyboardInterrupt; 36 37 extern int _Py_SetFileSystemEncoding( 38 const char *encoding, 39 const char *errors); 40 extern void _Py_ClearFileSystemEncoding(void); 41 extern PyStatus _PyUnicode_InitEncodings(PyThreadState *tstate); 42 #ifdef MS_WINDOWS 43 extern int _PyUnicode_EnableLegacyWindowsFSEncoding(void); 44 #endif 45 46 PyAPI_FUNC(void) _Py_ClearStandardStreamEncoding(void); 47 48 PyAPI_FUNC(int) _Py_IsLocaleCoercionTarget(const char *ctype_loc); 49 50 /* Various one-time initializers */ 51 52 extern PyStatus _PyUnicode_Init(PyInterpreterState *interp); 53 extern PyStatus _PyUnicode_InitTypes(void); 54 extern PyStatus _PyBytes_Init(PyInterpreterState *interp); 55 extern int _PyStructSequence_Init(void); 56 extern int _PyLong_Init(PyInterpreterState *interp); 57 extern int _PyLong_InitTypes(void); 58 extern PyStatus _PyTuple_Init(PyInterpreterState *interp); 59 extern PyStatus _PyFaulthandler_Init(int enable); 60 extern int _PyTraceMalloc_Init(int enable); 61 extern PyObject * _PyBuiltin_Init(PyInterpreterState *interp); 62 extern PyStatus _PySys_Create( 63 PyThreadState *tstate, 64 PyObject **sysmod_p); 65 extern PyStatus _PySys_ReadPreinitWarnOptions(PyWideStringList *options); 66 extern PyStatus _PySys_ReadPreinitXOptions(PyConfig *config); 67 extern int _PySys_UpdateConfig(PyThreadState *tstate); 68 extern PyStatus _PyExc_Init(PyInterpreterState *interp); 69 extern PyStatus _PyErr_InitTypes(void); 70 extern PyStatus _PyBuiltins_AddExceptions(PyObject * bltinmod); 71 extern void _PyFloat_Init(void); 72 extern int _PyFloat_InitTypes(void); 73 extern PyStatus _Py_HashRandomization_Init(const PyConfig *); 74 75 extern PyStatus _PyTypes_Init(void); 76 extern PyStatus _PyTypes_InitSlotDefs(void); 77 extern PyStatus _PyImportZip_Init(PyThreadState *tstate); 78 extern PyStatus _PyGC_Init(PyInterpreterState *interp); 79 extern PyStatus _PyAtExit_Init(PyInterpreterState *interp); 80 81 82 /* Various internal finalizers */ 83 84 extern void _PyFrame_Fini(PyInterpreterState *interp); 85 extern void _PyDict_Fini(PyInterpreterState *interp); 86 extern void _PyTuple_Fini(PyInterpreterState *interp); 87 extern void _PyList_Fini(PyInterpreterState *interp); 88 extern void _PyBytes_Fini(PyInterpreterState *interp); 89 extern void _PyFloat_Fini(PyInterpreterState *interp); 90 extern void _PySlice_Fini(PyInterpreterState *interp); 91 extern void _PyAsyncGen_Fini(PyInterpreterState *interp); 92 93 extern int _PySignal_Init(int install_signal_handlers); 94 extern void _PySignal_Fini(void); 95 96 extern void _PyExc_Fini(PyInterpreterState *interp); 97 extern void _PyImport_Fini(void); 98 extern void _PyImport_Fini2(void); 99 extern void _PyGC_Fini(PyInterpreterState *interp); 100 extern void _PyType_Fini(PyInterpreterState *interp); 101 extern void _Py_HashRandomization_Fini(void); 102 extern void _PyUnicode_Fini(PyInterpreterState *interp); 103 extern void _PyUnicode_ClearInterned(PyInterpreterState *interp); 104 extern void _PyLong_Fini(PyInterpreterState *interp); 105 extern void _PyFaulthandler_Fini(void); 106 extern void _PyHash_Fini(void); 107 extern void _PyTraceMalloc_Fini(void); 108 extern void _PyWarnings_Fini(PyInterpreterState *interp); 109 extern void _PyAST_Fini(PyInterpreterState *interp); 110 extern void _PyAtExit_Fini(PyInterpreterState *interp); 111 112 extern PyStatus _PyGILState_Init(_PyRuntimeState *runtime); 113 extern PyStatus _PyGILState_SetTstate(PyThreadState *tstate); 114 extern void _PyGILState_Fini(PyInterpreterState *interp); 115 116 PyAPI_FUNC(void) _PyGC_DumpShutdownStats(PyInterpreterState *interp); 117 118 PyAPI_FUNC(PyStatus) _Py_PreInitializeFromPyArgv( 119 const PyPreConfig *src_config, 120 const struct _PyArgv *args); 121 PyAPI_FUNC(PyStatus) _Py_PreInitializeFromConfig( 122 const PyConfig *config, 123 const struct _PyArgv *args); 124 125 126 PyAPI_FUNC(int) _Py_HandleSystemExit(int *exitcode_p); 127 128 PyAPI_FUNC(PyObject*) _PyErr_WriteUnraisableDefaultHook(PyObject *unraisable); 129 130 PyAPI_FUNC(void) _PyErr_Print(PyThreadState *tstate); 131 PyAPI_FUNC(void) _PyErr_Display(PyObject *file, PyObject *exception, 132 PyObject *value, PyObject *tb); 133 134 PyAPI_FUNC(void) _PyThreadState_DeleteCurrent(PyThreadState *tstate); 135 136 extern void _PyAtExit_Call(PyInterpreterState *interp); 137 138 #ifdef __cplusplus 139 } 140 #endif 141 #endif /* !Py_INTERNAL_LIFECYCLE_H */ 142