summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Include/Python.h1
-rw-r--r--Include/bltinmodule.h47
-rw-r--r--Include/ceval.h2
-rw-r--r--Include/import.h4
-rw-r--r--Include/pystate.h56
-rw-r--r--Include/pythonrun.h14
-rw-r--r--Include/sysmodule.h1
7 files changed, 27 insertions, 98 deletions
diff --git a/Include/Python.h b/Include/Python.h
index 96fc1f4d7e..9a18e2d534 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 66bb165277..0000000000
--- 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 cc4c4d8fc1..28053790c5 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 4ddbd4c19d..f5fa9bb1cf 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 b660ff881b..ad914268e0 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 ae336247dc..1f8093ea57 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 7761361a1a..424dc87dc5 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 *));