xref: /kvmtool/include/kvm/mutex.h (revision b5b501cc2f126a663bd328cf6db746617e3c6b56)
14ef0f4d6SPekka Enberg #ifndef KVM__MUTEX_H
24ef0f4d6SPekka Enberg #define KVM__MUTEX_H
34ef0f4d6SPekka Enberg 
44ef0f4d6SPekka Enberg #include <pthread.h>
54ef0f4d6SPekka Enberg 
64ef0f4d6SPekka Enberg #include "kvm/util.h"
74ef0f4d6SPekka Enberg 
8*b5b501ccSIngo Molnar /*
9*b5b501ccSIngo Molnar  * Kernel-alike mutex API - to make it easier for kernel developers
10*b5b501ccSIngo Molnar  * to write user-space code! :-)
11*b5b501ccSIngo Molnar  */
12*b5b501ccSIngo Molnar 
13*b5b501ccSIngo Molnar #define DEFINE_MUTEX(mutex) pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER
14*b5b501ccSIngo Molnar 
154ef0f4d6SPekka Enberg static inline void mutex_lock(pthread_mutex_t *mutex)
164ef0f4d6SPekka Enberg {
174ef0f4d6SPekka Enberg 	if (pthread_mutex_lock(mutex) != 0)
184ef0f4d6SPekka Enberg 		die("unexpected pthread_mutex_lock() failure!");
194ef0f4d6SPekka Enberg }
204ef0f4d6SPekka Enberg 
214ef0f4d6SPekka Enberg static inline void mutex_unlock(pthread_mutex_t *mutex)
224ef0f4d6SPekka Enberg {
234ef0f4d6SPekka Enberg 	if (pthread_mutex_unlock(mutex) != 0)
244ef0f4d6SPekka Enberg 		die("unexpected pthread_mutex_unlock() failure!");
254ef0f4d6SPekka Enberg }
264ef0f4d6SPekka Enberg 
274ef0f4d6SPekka Enberg #endif /* KVM__MUTEX_H */
28