threads.h revision 1.1.1.1.4.2
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