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