27 pthread_mutexattr_settype (&
recmutexattr, PTHREAD_MUTEX_RECURSIVE);
34 struct nobug_flag* flag,
35 const struct nobug_context ctx)
41 NOBUG_RESOURCE_HANDLE_INIT (self->rh);
42 NOBUG_RESOURCE_ANNOUNCE_RAW_CTX (flag,
"recmutex", purpose, self, self->rh, ctx)
54 struct nobug_flag* flag,
55 const struct nobug_context ctx)
59 NOBUG_RESOURCE_FORGET_RAW_CTX (flag, self->rh, ctx)
61 if (pthread_mutex_destroy (&self->recmutex))
#define LUMIERA_DIE(err)
Abort unconditionally with a 'Fatal Error!' message.
LumieraRecmutex lumiera_recmutex_init(LumieraRecmutex self, const char *purpose, struct nobug_flag *flag, const struct nobug_context ctx)
Initialise a recursive mutex variable Initialises a 'recursive' mutex which might be locked by the sa...
static pthread_mutexattr_t recmutexattr
LumieraRecmutex lumiera_recmutex_destroy(LumieraRecmutex self, struct nobug_flag *flag, const struct nobug_context ctx)
Destroy a recursive mutex variable.
static void recmutexattr_init()
static pthread_once_t recmutexattr_once
Mutual exclusion locking, header.
lumiera_recmutex * LumieraRecmutex