diff options
-rw-r--r-- | Include/Python.h | 1 | ||||
-rw-r--r-- | Include/bltinmodule.h | 47 | ||||
-rw-r--r-- | Include/ceval.h | 2 | ||||
-rw-r--r-- | Include/import.h | 4 | ||||
-rw-r--r-- | Include/pystate.h | 56 | ||||
-rw-r--r-- | Include/pythonrun.h | 14 | ||||
-rw-r--r-- | Include/sysmodule.h | 1 |
7 files changed, 27 insertions, 98 deletions
diff --git a/Include/Python.h b/Include/Python.h index 96fc1f4..9a18e2d 100644 --- a/Include/Python.h +++ b/Include/Python.h @@ -95,7 +95,6 @@ PERFORMANCE OF THIS SOFTWARE. #include "sysmodule.h" #include "intrcheck.h" #include "import.h" -#include "bltinmodule.h" #include "abstract.h" diff --git a/Include/bltinmodule.h b/Include/bltinmodule.h deleted file mode 100644 index 66bb165..0000000 --- a/Include/bltinmodule.h +++ /dev/null @@ -1,47 +0,0 @@ -#ifndef Py_BLTINMODULE_H -#define Py_BLTINMODULE_H -#ifdef __cplusplus -extern "C" { -#endif - -/*********************************************************** -Copyright 1991-1995 by Stichting Mathematisch Centrum, Amsterdam, -The Netherlands. - - All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the names of Stichting Mathematisch -Centrum or CWI or Corporation for National Research Initiatives or -CNRI not be used in advertising or publicity pertaining to -distribution of the software without specific, written prior -permission. - -While CWI is the initial source for this software, a modified version -is made available by the Corporation for National Research Initiatives -(CNRI) at the Internet address ftp://ftp.python.org. - -STICHTING MATHEMATISCH CENTRUM AND CNRI DISCLAIM ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH -CENTRUM OR CNRI BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL -DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR -PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER -TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. - -******************************************************************/ - -/* Built-in module interface */ - -extern void PyBuiltin_Init Py_PROTO((void)); -extern PyObject *PyBuiltin_GetDict Py_PROTO(()); -extern PyObject *PyBuiltin_GetModule Py_PROTO(()); - -#ifdef __cplusplus -} -#endif -#endif /* !Py_BLTINMODULE_H */ diff --git a/Include/ceval.h b/Include/ceval.h index cc4c4d8..2805379 100644 --- a/Include/ceval.h +++ b/Include/ceval.h @@ -105,6 +105,8 @@ extern void PyEval_RestoreThread Py_PROTO((PyThreadState *)); #ifdef WITH_THREAD extern void PyEval_InitThreads Py_PROTO((void)); +extern void PyEval_AcquireLock Py_PROTO((void)); +extern void PyEval_ReleaseLock Py_PROTO((void)); extern void PyEval_AcquireThread Py_PROTO((PyThreadState *tstate)); extern void PyEval_ReleaseThread Py_PROTO((PyThreadState *tstate)); diff --git a/Include/import.h b/Include/import.h index 4ddbd4c..f5fa9bb 100644 --- a/Include/import.h +++ b/Include/import.h @@ -37,7 +37,6 @@ PERFORMANCE OF THIS SOFTWARE. /* Module definition and import interface */ -void PyImport_Init Py_PROTO((void)); long PyImport_GetMagicNumber Py_PROTO((void)); PyObject *PyImport_ExecCodeModule Py_PROTO((char *name, PyObject *co)); PyObject *PyImport_GetModuleDict Py_PROTO((void)); @@ -47,6 +46,9 @@ PyObject *PyImport_ReloadModule Py_PROTO((PyObject *m)); void PyImport_Cleanup Py_PROTO((void)); int PyImport_ImportFrozenModule Py_PROTO((char *)); +extern PyObject *_PyImport_FindExtension Py_PROTO((char *, char *)); +extern PyObject *_PyImport_FixupExtension Py_PROTO((char *, char *)); + struct _inittab { char *name; void (*initfunc)(); diff --git a/Include/pystate.h b/Include/pystate.h index b660ff8..ad91426 100644 --- a/Include/pystate.h +++ b/Include/pystate.h @@ -42,15 +42,19 @@ PERFORMANCE OF THIS SOFTWARE. #define NEXITFUNCS 32 +struct _ts; /* Forward */ +struct _is; /* Forward */ + typedef struct _is { - PyObject *import_modules; - PyObject *sysdict; + struct _is *next; + struct _ts *tstate_head; - int nthreads; + PyObject *modules; + PyObject *sysdict; + PyObject *builtins; - void (*exitfuncs[NEXITFUNCS])(); - int nexitfuncs; + int checkinterval; } PyInterpreterState; @@ -61,7 +65,8 @@ struct _frame; /* Avoid including frameobject.h */ typedef struct _ts { - PyInterpreterState *interpreter_state; + struct _ts *next; + PyInterpreterState *interp; struct _frame *frame; int recursion_depth; @@ -70,7 +75,6 @@ typedef struct _ts { PyObject *sys_profilefunc; PyObject *sys_tracefunc; - int sys_checkinterval; PyObject *curexc_type; PyObject *curexc_value; @@ -80,54 +84,22 @@ typedef struct _ts { PyObject *exc_value; PyObject *exc_traceback; - /* XXX Other state that should be here: - - signal handlers - - low-level "pending calls" - Problem with both is that they may be referenced from - interrupt handlers where there is no clear concept of a - "current thread"??? - */ + /* XXX signal handlers should also be here */ } PyThreadState; PyInterpreterState *PyInterpreterState_New Py_PROTO((void)); +void PyInterpreterState_Clear Py_PROTO((PyInterpreterState *)); void PyInterpreterState_Delete Py_PROTO((PyInterpreterState *)); PyThreadState *PyThreadState_New Py_PROTO((PyInterpreterState *)); +void PyThreadState_Clear Py_PROTO((PyThreadState *)); void PyThreadState_Delete Py_PROTO((PyThreadState *)); PyThreadState *PyThreadState_Get Py_PROTO((void)); PyThreadState *PyThreadState_Swap Py_PROTO((PyThreadState *)); -/* Some background. - - There are lots of issues here. - - First, we can build Python without threads, with threads, or (when - Greg Stein's mods are out of beta, on some platforms) with free - threading. - - Next, assuming some form of threading is used, there can be several - kinds of threads. Python code can create threads with the thread - module. C code can create threads with the interface defined in - python's "thread.h". Or C code can create threads directly with - the OS threads interface (e.g. Solaris threads, SGI threads or - pthreads, whatever is being used, as long as it's the same that - Python is configured for). - - Next, let's discuss sharing of interpreter state between threads. - The exception state (sys.exc_* currently) should never be shared - between threads, because it is stack frame specific. The contents - of the sys module, in particular sys.modules and sys.path, are - generally shared between threads. But occasionally it is useful to - have separate module collections, e.g. when threads originate in C - code and are used to execute unrelated Python scripts. - (Traditionally, one would use separate processes for this, but - there are lots of reasons why threads are attractive.) - -*/ - #ifdef __cplusplus } #endif diff --git a/Include/pythonrun.h b/Include/pythonrun.h index ae33624..1f8093e 100644 --- a/Include/pythonrun.h +++ b/Include/pythonrun.h @@ -40,8 +40,9 @@ PERFORMANCE OF THIS SOFTWARE. void Py_SetProgramName Py_PROTO((char *)); char *Py_GetProgramName Py_PROTO((void)); -void Py_Setup Py_PROTO((void)); void Py_Initialize Py_PROTO((void)); +PyThreadState *Py_NewInterpreter Py_PROTO((void)); +void Py_EndInterpreter Py_PROTO((PyThreadState *)); int PyRun_AnyFile Py_PROTO((FILE *, char *)); @@ -64,11 +65,6 @@ int Py_AtExit Py_PROTO((void (*func) Py_PROTO((void)))); void Py_Exit Py_PROTO((int)); -void Py_Cleanup Py_PROTO((void)); - -void PyImport_Init Py_PROTO((void)); -void PyBuiltin_Init Py_PROTO((void)); - int Py_FdIsInteractive Py_PROTO((FILE *, char *)); /* In getpath.c */ @@ -84,6 +80,12 @@ const char *Py_GetCopyright Py_PROTO((void)); const char *Py_GetCompiler Py_PROTO((void)); const char *Py_GetBuildInfo Py_PROTO((void)); +/* Internal -- various one-time initializations */ + +PyObject *_PyBuiltin_Init Py_PROTO((void)); +PyObject *_PySys_Init Py_PROTO((void)); +void _PyImport_Init Py_PROTO((void)); + #ifdef __cplusplus } #endif diff --git a/Include/sysmodule.h b/Include/sysmodule.h index 7761361..424dc87 100644 --- a/Include/sysmodule.h +++ b/Include/sysmodule.h @@ -40,7 +40,6 @@ PERFORMANCE OF THIS SOFTWARE. PyObject *PySys_GetObject Py_PROTO((char *)); int PySys_SetObject Py_PROTO((char *, PyObject *)); FILE *PySys_GetFile Py_PROTO((char *, FILE *)); -void PySys_Init Py_PROTO((void)); void PySys_SetArgv Py_PROTO((int, char **)); void PySys_SetPath Py_PROTO((char *)); |