summaryrefslogtreecommitdiff
path: root/include/linux/mutex.h
blob: ffccb9d670b51fefba23dc0043d3fc9555a63fe3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#ifndef __TOOLS_LINUX_MUTEX_H
#define __TOOLS_LINUX_MUTEX_H

#include <pthread.h>

struct mutex {
	pthread_mutex_t lock;
};

#define DEFINE_MUTEX(mutexname) \
	struct mutex mutexname = { .lock = PTHREAD_MUTEX_INITIALIZER }

#define mutex_init(l)		pthread_mutex_init(&(l)->lock, NULL)
#define mutex_lock(l)		pthread_mutex_lock(&(l)->lock)
#define mutex_trylock(l)	(!pthread_mutex_trylock(&(l)->lock))
#define mutex_unlock(l)		pthread_mutex_unlock(&(l)->lock)

DEFINE_GUARD(mutex, struct mutex *, mutex_lock(_T), mutex_unlock(_T))

#endif /* __TOOLS_LINUX_MUTEX_H */