diff options
| author | welch <welch> | 1999-08-10 02:42:36 (GMT) | 
|---|---|---|
| committer | welch <welch> | 1999-08-10 02:42:36 (GMT) | 
| commit | 24e9f11aa2c7e32ed6e8a0e6a2c7ae4f0ff12bac (patch) | |
| tree | 3dda6d8125f2a42360c01e1206096b0d0bd753f3 /unix/tclUnixThrd.c | |
| parent | 3a26c6d4498ad6fad866d54c7b23cb221fe21898 (diff) | |
| download | tcl-24e9f11aa2c7e32ed6e8a0e6a2c7ae4f0ff12bac.zip tcl-24e9f11aa2c7e32ed6e8a0e6a2c7ae4f0ff12bac.tar.gz tcl-24e9f11aa2c7e32ed6e8a0e6a2c7ae4f0ff12bac.tar.bz2  | |
Added Tcl_GetAllocMutex for use by tclAlloc.c and tclCkalloc.c
Diffstat (limited to 'unix/tclUnixThrd.c')
| -rw-r--r-- | unix/tclUnixThrd.c | 49 | 
1 files changed, 24 insertions, 25 deletions
diff --git a/unix/tclUnixThrd.c b/unix/tclUnixThrd.c index ac0804e..a9127a7 100644 --- a/unix/tclUnixThrd.c +++ b/unix/tclUnixThrd.c @@ -36,6 +36,13 @@ static pthread_mutex_t masterLock = PTHREAD_MUTEX_INITIALIZER;  static pthread_mutex_t initLock = PTHREAD_MUTEX_INITIALIZER;  /* + * allocLock is used by Tcl's version of malloc for synchronization. + * For obvious reasons, cannot use any dyamically allocated storage. + */ + +static pthread_mutex_t allocLock = PTHREAD_MUTEX_INITIALIZER; + +/*   * These are for the critical sections inside this file.   */ @@ -248,45 +255,37 @@ TclpMasterUnlock()  #endif  } -#ifdef TCL_THREADS  /*   *----------------------------------------------------------------------   * - * TclpMutexInit -- - * TclpMutexLock -- - * TclpMutexUnlock -- + * Tcl_GetAllocMutex + * + *	This procedure returns a pointer to a statically initialized + *	mutex for use by the memory allocator.  The alloctor must + *	use this lock, because all other locks are allocated...   * - *	These procedures use an explicitly initialized mutex. - *	These are used by memory allocators for their own mutex. - *    * Results: - *	None. + *	A pointer to a mutex that is suitable for passing to + *	Tcl_MutexLock and Tcl_MutexUnlock.   *   * Side effects: - *	Initialize, Lock, and Unlock the mutex. + *	None.   *   *----------------------------------------------------------------------   */ -void -TclpMutexInit(mPtr) -    TclpMutex *mPtr; +Tcl_Mutex * +Tcl_GetAllocMutex()  { -    pthread_mutex_init((pthread_mutex_t *)mPtr, NULL); -} -void -TclpMutexLock(mPtr) -    TclpMutex *mPtr; -{ -    pthread_mutex_lock((pthread_mutex_t *)mPtr); -} -void -TclpMutexUnlock(mPtr) -    TclpMutex *mPtr; -{ -    pthread_mutex_unlock((pthread_mutex_t *)mPtr); +#ifdef TCL_THREADS +    return (Tcl_Mutex *)&allocLock; +#else +    return NULL; +#endif  } + +#ifdef TCL_THREADS  /*   *----------------------------------------------------------------------  | 
