54 lines
947 B
C++
54 lines
947 B
C++
|
|
#include <pthread.h>
|
|
|
|
#ifndef __WIFI_HAL_SYNC_H__
|
|
#define __WIFI_HAL_SYNC_H__
|
|
|
|
class Mutex
|
|
{
|
|
private:
|
|
pthread_mutex_t mMutex;
|
|
public:
|
|
Mutex() {
|
|
pthread_mutex_init(&mMutex, NULL);
|
|
}
|
|
~Mutex() {
|
|
pthread_mutex_destroy(&mMutex);
|
|
}
|
|
int tryLock() {
|
|
return pthread_mutex_trylock(&mMutex);
|
|
}
|
|
int lock() {
|
|
return pthread_mutex_lock(&mMutex);
|
|
}
|
|
void unlock() {
|
|
pthread_mutex_unlock(&mMutex);
|
|
}
|
|
};
|
|
|
|
class Condition
|
|
{
|
|
private:
|
|
pthread_cond_t mCondition;
|
|
pthread_mutex_t mMutex;
|
|
|
|
public:
|
|
Condition() {
|
|
pthread_mutex_init(&mMutex, NULL);
|
|
pthread_cond_init(&mCondition, NULL);
|
|
}
|
|
~Condition() {
|
|
pthread_cond_destroy(&mCondition);
|
|
pthread_mutex_destroy(&mMutex);
|
|
}
|
|
|
|
int wait() {
|
|
return pthread_cond_wait(&mCondition, &mMutex);
|
|
}
|
|
|
|
void signal() {
|
|
pthread_cond_signal(&mCondition);
|
|
}
|
|
};
|
|
|
|
#endif |