Home | History | Annotate | Line # | Download | only in include
      1 
      2 /*
      3  * Licensed Materials - Property of IBM
      4  *
      5  * trousers - An open source TCG Software Stack
      6  *
      7  * (C) Copyright International Business Machines Corp. 2006
      8  *
      9  */
     10 
     11 #ifndef __THREADS_H__
     12 #define __THREADS_H__
     13 
     14 #ifdef HAVE_PTHREAD_H
     15 
     16 #include <pthread.h>
     17 
     18 /* mutex abstractions */
     19 #define MUTEX_INIT(m)		pthread_mutex_init(&m, NULL)
     20 #define MUTEX_LOCK(m)		pthread_mutex_lock(&m)
     21 #define MUTEX_UNLOCK(m)		pthread_mutex_unlock(&m)
     22 #define MUTEX_DECLARE(m)	pthread_mutex_t m
     23 #define MUTEX_DECLARE_INIT(m)	pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER
     24 #define MUTEX_DECLARE_EXTERN(m)	extern pthread_mutex_t m
     25 
     26 /* condition variable abstractions */
     27 #define COND_DECLARE(c)		pthread_cond_t c
     28 #define COND_INIT(c)		pthread_cond_init(&c, NULL)
     29 #define COND_VAR		pthread_cond_t
     30 #define COND_WAIT(c,m)		pthread_cond_wait(c,m)
     31 #define COND_SIGNAL(c)		pthread_cond_signal(c)
     32 
     33 /* thread abstractions */
     34 #define THREAD_ID			((THREAD_TYPE)pthread_self())
     35 #define THREAD_TYPE			pthread_t
     36 #define THREAD_JOIN			pthread_join
     37 #define THREAD_DETACH			pthread_detach
     38 #define THREAD_ATTR_DECLARE(a)		pthread_attr_t a
     39 #define THREAD_ATTR_INIT(a)		pthread_attr_init(&a)
     40 #define THREAD_ATTR_SETJOINABLE(a)	pthread_attr_setdetachstate(&a, PTHREAD_CREATE_JOINABLE)
     41 #define THREAD_EXIT			pthread_exit
     42 #define THREAD_CREATE(a,b,c,d)		pthread_create(a,b,c,d)
     43 #define THREAD_SET_SIGNAL_MASK		pthread_sigmask
     44 #define THREAD_NULL			(THREAD_TYPE *)0
     45 
     46 #else
     47 
     48 #error No threading library defined! (Cannot find pthread.h)
     49 
     50 #endif
     51 
     52 #endif
     53