Macros
Thread.h File Reference

Detailed Description

This interface contains Thread and Mutex abstractions via Macros.

Macros

#define Thread_T   pthread_t
 
#define Sem_T   pthread_cond_t
 
#define Mutex_T   pthread_mutex_t
 
#define Once_T   pthread_once_t
 
#define ThreadData_T   pthread_key_t
 
#define wrapper(F)
 
#define Thread_create(thread, threadFunc, threadArgs)   wrapper(pthread_create(&thread, NULL, threadFunc, (void*)threadArgs))
 
#define Thread_self()   pthread_self()
 
#define Thread_detach(thread)   wrapper(pthread_detach(thread))
 
#define Thread_cancel(thread)   wrapper(pthread_cancel(thread))
 
#define Thread_join(thread)   wrapper(pthread_join(thread, NULL))
 
#define Thread_once(control, ctor)   pthread_once(&(control), ctor)
 
#define Sem_init(sem)   wrapper(pthread_cond_init(&sem, NULL))
 
#define Sem_wait(sem, mutex)   wrapper(pthread_cond_wait(&sem, &mutex))
 
#define Sem_signal(sem)   wrapper(pthread_cond_signal(&sem))
 
#define Sem_broadcast(sem)   wrapper(pthread_cond_broadcast(&sem))
 
#define Sem_destroy(sem)   wrapper(pthread_cond_destroy(&sem))
 
#define Sem_timeWait(sem, mutex, time)   wrapper(pthread_cond_timedwait(&sem, &mutex, &time))
 
#define Mutex_init(mutex)   wrapper(pthread_mutex_init(&mutex, NULL))
 
#define Mutex_destroy(mutex)   wrapper(pthread_mutex_destroy(&mutex))
 
#define Mutex_lock(mutex)   wrapper(pthread_mutex_lock(&mutex))
 
#define Mutex_unlock(mutex)   wrapper(pthread_mutex_unlock(&mutex))
 
#define LOCK(mutex)
 
#define END_LOCK   wrapper(pthread_mutex_unlock(_yymutex)); } while (0)
 
#define ThreadData_create(key, dtor)   wrapper(pthread_key_create(&(key), dtor))
 
#define ThreadData_set(key, value)   pthread_setspecific((key), (value))
 
#define ThreadData_get(key)   pthread_getspecific((key))
 

Macro Definition Documentation

◆ Thread_T

#define Thread_T   pthread_t

◆ Sem_T

#define Sem_T   pthread_cond_t

◆ Mutex_T

#define Mutex_T   pthread_mutex_t

◆ Once_T

#define Once_T   pthread_once_t

◆ ThreadData_T

#define ThreadData_T   pthread_key_t

◆ wrapper

#define wrapper (   F)
Value:
do { int status=F; \
if (status!=0 && status!=ETIMEDOUT) \
ABORT("Thread: %s\n", System_getError(status)); \
} while (0)

◆ Thread_create

#define Thread_create (   thread,
  threadFunc,
  threadArgs 
)    wrapper(pthread_create(&thread, NULL, threadFunc, (void*)threadArgs))

◆ Thread_self

#define Thread_self ( )    pthread_self()

◆ Thread_detach

#define Thread_detach (   thread)    wrapper(pthread_detach(thread))

◆ Thread_cancel

#define Thread_cancel (   thread)    wrapper(pthread_cancel(thread))

◆ Thread_join

#define Thread_join (   thread)    wrapper(pthread_join(thread, NULL))

◆ Thread_once

#define Thread_once (   control,
  ctor 
)    pthread_once(&(control), ctor)

◆ Sem_init

#define Sem_init (   sem)    wrapper(pthread_cond_init(&sem, NULL))

◆ Sem_wait

#define Sem_wait (   sem,
  mutex 
)    wrapper(pthread_cond_wait(&sem, &mutex))

◆ Sem_signal

#define Sem_signal (   sem)    wrapper(pthread_cond_signal(&sem))

◆ Sem_broadcast

#define Sem_broadcast (   sem)    wrapper(pthread_cond_broadcast(&sem))

◆ Sem_destroy

#define Sem_destroy (   sem)    wrapper(pthread_cond_destroy(&sem))

◆ Sem_timeWait

#define Sem_timeWait (   sem,
  mutex,
  time 
)    wrapper(pthread_cond_timedwait(&sem, &mutex, &time))

◆ Mutex_init

#define Mutex_init (   mutex)    wrapper(pthread_mutex_init(&mutex, NULL))

◆ Mutex_destroy

#define Mutex_destroy (   mutex)    wrapper(pthread_mutex_destroy(&mutex))

◆ Mutex_lock

#define Mutex_lock (   mutex)    wrapper(pthread_mutex_lock(&mutex))

◆ Mutex_unlock

#define Mutex_unlock (   mutex)    wrapper(pthread_mutex_unlock(&mutex))

◆ LOCK

#define LOCK (   mutex)
Value:
do { Mutex_T *_yymutex=&(mutex); \
wrapper(pthread_mutex_lock(_yymutex));
#define Mutex_T
Definition: Thread.h:39

◆ END_LOCK

#define END_LOCK   wrapper(pthread_mutex_unlock(_yymutex)); } while (0)

◆ ThreadData_create

#define ThreadData_create (   key,
  dtor 
)    wrapper(pthread_key_create(&(key), dtor))

◆ ThreadData_set

#define ThreadData_set (   key,
  value 
)    pthread_setspecific((key), (value))

◆ ThreadData_get

#define ThreadData_get (   key)    pthread_getspecific((key))

Copyright © Tildeslash Ltd. All rights reserved.