diff options
Diffstat (limited to 'src/include/threads.h')
-rw-r--r-- | src/include/threads.h | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/include/threads.h b/src/include/threads.h new file mode 100644 index 0000000..3c57144 --- /dev/null +++ b/src/include/threads.h @@ -0,0 +1,52 @@ + +/* + * Licensed Materials - Property of IBM + * + * trousers - An open source TCG Software Stack + * + * (C) Copyright International Business Machines Corp. 2006 + * + */ + +#ifndef __THREADS_H__ +#define __THREADS_H__ + +#ifdef HAVE_PTHREAD_H + +#include <pthread.h> + +/* mutex abstractions */ +#define MUTEX_INIT(m) pthread_mutex_init(&m, NULL) +#define MUTEX_LOCK(m) pthread_mutex_lock(&m) +#define MUTEX_UNLOCK(m) pthread_mutex_unlock(&m) +#define MUTEX_DECLARE(m) pthread_mutex_t m +#define MUTEX_DECLARE_INIT(m) pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER +#define MUTEX_DECLARE_EXTERN(m) extern pthread_mutex_t m + +/* condition variable abstractions */ +#define COND_DECLARE(c) pthread_cond_t c +#define COND_INIT(c) pthread_cond_init(&c, NULL) +#define COND_VAR pthread_cond_t +#define COND_WAIT(c,m) pthread_cond_wait(c,m) +#define COND_SIGNAL(c) pthread_cond_signal(c) + +/* thread abstractions */ +#define THREAD_ID ((THREAD_TYPE)pthread_self()) +#define THREAD_TYPE pthread_t +#define THREAD_JOIN pthread_join +#define THREAD_DETACH pthread_detach +#define THREAD_ATTR_DECLARE(a) pthread_attr_t a +#define THREAD_ATTR_INIT(a) pthread_attr_init(&a) +#define THREAD_ATTR_SETJOINABLE(a) pthread_attr_setdetachstate(&a, PTHREAD_CREATE_JOINABLE) +#define THREAD_EXIT pthread_exit +#define THREAD_CREATE(a,b,c,d) pthread_create(a,b,c,d) +#define THREAD_SET_SIGNAL_MASK pthread_sigmask +#define THREAD_NULL (THREAD_TYPE *)0 + +#else + +#error No threading library defined! (Cannot find pthread.h) + +#endif + +#endif |