1 2 #include <pthread.h> 3 4 #ifndef __WIFI_HAL_SYNC_H__ 5 #define __WIFI_HAL_SYNC_H__ 6 7 class Mutex 8 { 9 private: 10 pthread_mutex_t mMutex; 11 public: Mutex()12 Mutex() { 13 pthread_mutex_init(&mMutex, NULL); 14 } ~Mutex()15 ~Mutex() { 16 pthread_mutex_destroy(&mMutex); 17 } tryLock()18 int tryLock() { 19 return pthread_mutex_trylock(&mMutex); 20 } lock()21 int lock() { 22 return pthread_mutex_lock(&mMutex); 23 } unlock()24 void unlock() { 25 pthread_mutex_unlock(&mMutex); 26 } 27 }; 28 29 class Condition 30 { 31 private: 32 pthread_cond_t mCondition; 33 pthread_mutex_t mMutex; 34 35 public: Condition()36 Condition() { 37 pthread_mutex_init(&mMutex, NULL); 38 pthread_cond_init(&mCondition, NULL); 39 } ~Condition()40 ~Condition() { 41 pthread_cond_destroy(&mCondition); 42 pthread_mutex_destroy(&mMutex); 43 } 44 wait()45 int wait() { 46 return pthread_cond_wait(&mCondition, &mMutex); 47 } 48 signal()49 void signal() { 50 pthread_cond_signal(&mCondition); 51 } 52 }; 53 54 #endif