improve LOCK init
This commit is contained in:
parent
80cb87c41c
commit
ab9d2da775
30
C/pl-yap.c
30
C/pl-yap.c
@ -319,6 +319,7 @@ word lookupAtom(const char *s, size_t len)
|
|||||||
|
|
||||||
/* dirty trick to ensure s is null terminated */
|
/* dirty trick to ensure s is null terminated */
|
||||||
char *st = (char *)s;
|
char *st = (char *)s;
|
||||||
|
if (st[len])
|
||||||
st[len] = '\0';
|
st[len] = '\0';
|
||||||
if (len >= strlen(s)) {
|
if (len >= strlen(s)) {
|
||||||
at = YAP_LookupAtom(st);
|
at = YAP_LookupAtom(st);
|
||||||
@ -1300,12 +1301,6 @@ sysError(const char *fm, ...)
|
|||||||
|
|
||||||
#if THREADS
|
#if THREADS
|
||||||
|
|
||||||
#define COUNT_MUTEX_INITIALIZER(name) \
|
|
||||||
{ PTHREAD_MUTEX_INITIALIZER, \
|
|
||||||
name, \
|
|
||||||
0L \
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
recursive_attr(pthread_mutexattr_t **ap)
|
recursive_attr(pthread_mutexattr_t **ap)
|
||||||
{ static int done;
|
{ static int done;
|
||||||
@ -1360,27 +1355,4 @@ recursiveMutexInit(recursiveMutex *m)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
counting_mutex _PL_mutexes[] =
|
|
||||||
{ COUNT_MUTEX_INITIALIZER("L_MISC"),
|
|
||||||
COUNT_MUTEX_INITIALIZER("L_ALLOC"),
|
|
||||||
COUNT_MUTEX_INITIALIZER("L_ATOM"),
|
|
||||||
COUNT_MUTEX_INITIALIZER("L_FLAG"),
|
|
||||||
COUNT_MUTEX_INITIALIZER("L_FUNCTOR"),
|
|
||||||
COUNT_MUTEX_INITIALIZER("L_RECORD"),
|
|
||||||
COUNT_MUTEX_INITIALIZER("L_THREAD"),
|
|
||||||
COUNT_MUTEX_INITIALIZER("L_PREDICATE"),
|
|
||||||
COUNT_MUTEX_INITIALIZER("L_MODULE"),
|
|
||||||
COUNT_MUTEX_INITIALIZER("L_TABLE"),
|
|
||||||
COUNT_MUTEX_INITIALIZER("L_BREAK"),
|
|
||||||
COUNT_MUTEX_INITIALIZER("L_FILE"),
|
|
||||||
COUNT_MUTEX_INITIALIZER("L_PLFLAG"),
|
|
||||||
COUNT_MUTEX_INITIALIZER("L_OP"),
|
|
||||||
COUNT_MUTEX_INITIALIZER("L_INIT"),
|
|
||||||
COUNT_MUTEX_INITIALIZER("L_TERM"),
|
|
||||||
COUNT_MUTEX_INITIALIZER("L_GC"),
|
|
||||||
COUNT_MUTEX_INITIALIZER("L_AGC"),
|
|
||||||
COUNT_MUTEX_INITIALIZER("L_FOREIGN"),
|
|
||||||
COUNT_MUTEX_INITIALIZER("L_OS")
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
56
os/pl-file.c
56
os/pl-file.c
@ -5039,10 +5039,66 @@ struct PL_local_data *Yap_InitThreadIO(int wid)
|
|||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef THREADS
|
||||||
|
|
||||||
|
#define COUNT_MUTEX_INITIALIZER(name) \
|
||||||
|
{ PTHREAD_MUTEX_INITIALIZER, \
|
||||||
|
name, \
|
||||||
|
0L \
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
counting_mutex _PL_mutexes[] =
|
||||||
|
{ COUNT_MUTEX_INITIALIZER("L_MISC"),
|
||||||
|
COUNT_MUTEX_INITIALIZER("L_ALLOC"),
|
||||||
|
COUNT_MUTEX_INITIALIZER("L_ATOM"),
|
||||||
|
COUNT_MUTEX_INITIALIZER("L_FLAG"),
|
||||||
|
COUNT_MUTEX_INITIALIZER("L_FUNCTOR"),
|
||||||
|
COUNT_MUTEX_INITIALIZER("L_RECORD"),
|
||||||
|
COUNT_MUTEX_INITIALIZER("L_THREAD"),
|
||||||
|
COUNT_MUTEX_INITIALIZER("L_PREDICATE"),
|
||||||
|
COUNT_MUTEX_INITIALIZER("L_MODULE"),
|
||||||
|
COUNT_MUTEX_INITIALIZER("L_TABLE"),
|
||||||
|
COUNT_MUTEX_INITIALIZER("L_BREAK"),
|
||||||
|
COUNT_MUTEX_INITIALIZER("L_FILE"),
|
||||||
|
COUNT_MUTEX_INITIALIZER("L_PLFLAG"),
|
||||||
|
COUNT_MUTEX_INITIALIZER("L_OP"),
|
||||||
|
COUNT_MUTEX_INITIALIZER("L_INIT"),
|
||||||
|
COUNT_MUTEX_INITIALIZER("L_TERM"),
|
||||||
|
COUNT_MUTEX_INITIALIZER("L_GC"),
|
||||||
|
COUNT_MUTEX_INITIALIZER("L_AGC"),
|
||||||
|
COUNT_MUTEX_INITIALIZER("L_STOPTHEWORLD"),
|
||||||
|
COUNT_MUTEX_INITIALIZER("L_FOREIGN"),
|
||||||
|
COUNT_MUTEX_INITIALIZER("L_OS"),
|
||||||
|
COUNT_MUTEX_INITIALIZER("L_LOCALE")
|
||||||
|
#ifdef __WINDOWS__
|
||||||
|
, COUNT_MUTEX_INITIALIZER("L_DDE")
|
||||||
|
, COUNT_MUTEX_INITIALIZER("L_CSTACK")
|
||||||
|
#endif
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
static void
|
||||||
|
initMutexes( void )
|
||||||
|
{ counting_mutex *m;
|
||||||
|
int n = sizeof(_PL_mutexes)/sizeof(*m);
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for(i=0, m=_PL_mutexes; i<n; i++, m++)
|
||||||
|
simpleMutexInit(&m->mutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
init_yap(void)
|
init_yap(void)
|
||||||
{
|
{
|
||||||
GET_LD
|
GET_LD
|
||||||
|
#ifdef THREADS
|
||||||
|
initMutexes();
|
||||||
|
#endif
|
||||||
/* we need encodings first */
|
/* we need encodings first */
|
||||||
initCharTypes();
|
initCharTypes();
|
||||||
initPrologFlags();
|
initPrologFlags();
|
||||||
|
Reference in New Issue
Block a user