00001
00008 #ifndef MUTEX_H_
00009 #define MUTEX_H_
00010
00011 #include "semaphore.h"
00012
00014 struct mutex {
00016 semaphore_t sem;
00018 thread_t owner;
00019 };
00020
00022 typedef struct mutex mutex_t;
00023
00024
00025 void mutex_init(mutex_t *mtx);
00026 void mutex_destroy(mutex_t *mtx);
00031 #ifdef DEBUG_MUTEX
00032 #define mutex_lock(mtx_ptr) mutex_lock_debug(mtx_ptr)
00033 #define mutex_lock_timeout(mtx_ptr, msec) mutex_lock_timeout_debug(mtx_ptr, msec)
00034 #define mutex_unlock(mtx_ptr) mutex_unlock_debug(mtx_ptr)
00035 #else
00036 #define mutex_lock(mtx_ptr) mutex_lock_nondebug(mtx_ptr)
00037 #define mutex_lock_timeout(mtx_ptr, msec) mutex_lock_timeout_nondebug(mtx_ptr, msec)
00038 #define mutex_unlock(mtx_ptr) mutex_unlock_nondebug(mtx_ptr)
00039 #endif
00040
00042 void mutex_unlock(mutex_t *mtx);
00043 void mutex_lock(mutex_t *mtx);
00044
00045 #endif