diff options
Diffstat (limited to 'generic')
-rw-r--r-- | generic/tcl.decls | 6 | ||||
-rw-r--r-- | generic/tcl.h | 26 | ||||
-rw-r--r-- | generic/tclDecls.h | 12 | ||||
-rw-r--r-- | generic/tclInt.h | 10 | ||||
-rw-r--r-- | generic/tclStubInit.c | 3 | ||||
-rw-r--r-- | generic/tclThreadTest.c | 5 |
6 files changed, 47 insertions, 15 deletions
diff --git a/generic/tcl.decls b/generic/tcl.decls index 7c2837d..9d75c87 100644 --- a/generic/tcl.decls +++ b/generic/tcl.decls @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: tcl.decls,v 1.32 2000/04/04 20:28:40 kupries Exp $ +# RCS: @(#) $Id: tcl.decls,v 1.33 2000/04/09 16:04:17 kupries Exp $ library tcl @@ -1353,6 +1353,10 @@ declare 391 generic { declare 392 generic { void Tcl_MutexFinalize (Tcl_Mutex *mutex) } +declare 393 generic { + int Tcl_CreateThread (Tcl_ThreadId *idPtr, Tcl_ThreadCreateProc proc, \ + ClientData clientData, int stackSize, int flags) +} ############################################################################## diff --git a/generic/tcl.h b/generic/tcl.h index 8ecd7d6..8bc298a 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tcl.h,v 1.64 2000/04/04 20:28:41 kupries Exp $ + * RCS: @(#) $Id: tcl.h,v 1.65 2000/04/09 16:04:17 kupries Exp $ */ #ifndef _TCL @@ -387,6 +387,30 @@ typedef struct Tcl_Trace_ *Tcl_Trace; typedef struct Tcl_Var_ *Tcl_Var; /* + * Definition of the interface to procedures implementing threads. + * A procedure following this definition is given to each call of + * 'Tcl_CreateThread' and will be called as the main fuction of + * the new thread created by that call. + */ + +#ifdef MAC_TCL +typedef pascal void *(Tcl_ThreadCreateProc) _ANSI_ARGS_((ClientData clientData)); +#elif defined __WIN32__ +typedef unsigned __stdcall (Tcl_ThreadCreateProc) _ANSI_ARGS_((ClientData clientData)); +#else +typedef void (Tcl_ThreadCreateProc) _ANSI_ARGS_((ClientData clientData)); +#endif + +/* + * Definition of values for default stacksize and the possible flags to be + * given to Tcl_CreateThread. + */ + +#define TCL_THREAD_STACK_DEFAULT (0) /* Use default size for stack */ +#define TCL_THREAD_NOFLAGS (0000) /* Standard flags, default behaviour */ +#define TCL_THREAD_JOINABLE (0001) /* Mark the thread as joinable */ + +/* * Flag values passed to Tcl_GetRegExpFromObj. */ diff --git a/generic/tclDecls.h b/generic/tclDecls.h index 22c6af4..8cef5c4 100644 --- a/generic/tclDecls.h +++ b/generic/tclDecls.h @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclDecls.h,v 1.33 2000/04/05 00:42:19 welch Exp $ + * RCS: @(#) $Id: tclDecls.h,v 1.34 2000/04/09 16:04:17 kupries Exp $ */ #ifndef _TCLDECLS @@ -1223,6 +1223,11 @@ EXTERN void Tcl_ConditionFinalize _ANSI_ARGS_(( Tcl_Condition * condPtr)); /* 392 */ EXTERN void Tcl_MutexFinalize _ANSI_ARGS_((Tcl_Mutex * mutex)); +/* 393 */ +EXTERN int Tcl_CreateThread _ANSI_ARGS_((Tcl_ThreadId * idPtr, + Tcl_ThreadCreateProc proc, + ClientData clientData, int stackSize, + int flags)); typedef struct TclStubHooks { struct TclPlatStubs *tclPlatStubs; @@ -1683,6 +1688,7 @@ typedef struct TclStubs { int (*tcl_ProcObjCmd) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 390 */ void (*tcl_ConditionFinalize) _ANSI_ARGS_((Tcl_Condition * condPtr)); /* 391 */ void (*tcl_MutexFinalize) _ANSI_ARGS_((Tcl_Mutex * mutex)); /* 392 */ + int (*tcl_CreateThread) _ANSI_ARGS_((Tcl_ThreadId * idPtr, Tcl_ThreadCreateProc proc, ClientData clientData, int stackSize, int flags)); /* 393 */ } TclStubs; #ifdef __cplusplus @@ -3300,6 +3306,10 @@ extern TclStubs *tclStubsPtr; #define Tcl_MutexFinalize \ (tclStubsPtr->tcl_MutexFinalize) /* 392 */ #endif +#ifndef Tcl_CreateThread +#define Tcl_CreateThread \ + (tclStubsPtr->tcl_CreateThread) /* 393 */ +#endif #endif /* defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) */ diff --git a/generic/tclInt.h b/generic/tclInt.h index 66a0cc1..bd6a314 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclInt.h,v 1.41 2000/04/04 20:28:42 kupries Exp $ + * RCS: @(#) $Id: tclInt.h,v 1.42 2000/04/09 16:04:18 kupries Exp $ */ #ifndef _TCLINT @@ -790,12 +790,6 @@ EXTERN void TclThreadDataKeySet _ANSI_ARGS_((Tcl_ThreadDataKey *keyPtr, VOID *da #define TCL_TSD_INIT(keyPtr) (ThreadSpecificData *)Tcl_GetThreadData((keyPtr), sizeof(ThreadSpecificData)) -#ifdef MAC_TCL -typedef pascal void *(Tcl_ThreadCreateProc) _ANSI_ARGS_((ClientData clientData)); -#else -typedef void (Tcl_ThreadCreateProc) _ANSI_ARGS_((ClientData clientData)); -#endif - /* *---------------------------------------------------------------- * Data structures related to bytecode compilation and execution. @@ -1799,8 +1793,6 @@ EXTERN int TclProcCompileProc _ANSI_ARGS_((Tcl_Interp *interp, EXTERN void TclProcDeleteProc _ANSI_ARGS_((ClientData clientData)); EXTERN int TclProcInterpProc _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); -EXTERN int TclpThreadCreate _ANSI_ARGS_((Tcl_ThreadId *idPtr, - Tcl_ThreadCreateProc proc, ClientData clientData)); EXTERN VOID * TclpThreadDataKeyGet _ANSI_ARGS_(( Tcl_ThreadDataKey *keyPtr)); EXTERN void TclpThreadDataKeyInit _ANSI_ARGS_(( diff --git a/generic/tclStubInit.c b/generic/tclStubInit.c index 13180f8..78f57ea 100644 --- a/generic/tclStubInit.c +++ b/generic/tclStubInit.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclStubInit.c,v 1.34 2000/04/05 00:42:19 welch Exp $ + * RCS: @(#) $Id: tclStubInit.c,v 1.35 2000/04/09 16:04:18 kupries Exp $ */ #include "tclInt.h" @@ -790,6 +790,7 @@ TclStubs tclStubs = { Tcl_ProcObjCmd, /* 390 */ Tcl_ConditionFinalize, /* 391 */ Tcl_MutexFinalize, /* 392 */ + Tcl_CreateThread, /* 393 */ }; /* !END!: Do not edit above this line. */ diff --git a/generic/tclThreadTest.c b/generic/tclThreadTest.c index d924d4f..d548423 100644 --- a/generic/tclThreadTest.c +++ b/generic/tclThreadTest.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclThreadTest.c,v 1.7 2000/04/04 20:28:43 kupries Exp $ + * RCS: @(#) $Id: tclThreadTest.c,v 1.8 2000/04/09 16:04:19 kupries Exp $ */ #include "tclInt.h" @@ -359,7 +359,8 @@ TclCreateThread(interp, script) ctrl.flags = 0; Tcl_MutexLock(&threadMutex); - if (TclpThreadCreate(&id, NewThread, (ClientData) &ctrl) != TCL_OK) { + if (Tcl_CreateThread(&id, NewThread, (ClientData) &ctrl, + TCL_THREAD_STACK_DEFAULT, TCL_THREAD_NOFLAGS) != TCL_OK) { Tcl_MutexUnlock(&threadMutex); Tcl_AppendResult(interp,"can't create a new thread",0); ckfree((void*)ctrl.script); |