#include "psem.h"
|
#include <semaphore.h>
|
#include "time_util.h"
|
|
|
|
int psem_timedwait(sem_t *sem, const struct timespec *ts) {
|
struct timespec abs_timeout = TimeUtil::calc_abs_time(ts);
|
|
int rv ;
|
while ( (rv = sem_timedwait(sem, &abs_timeout)) == -1) {
|
if(errno == EINTR)
|
continue;
|
else {
|
// LoggerFactory::getLogger()->error(errno, "LockFreeQueue push_timeout");
|
return -1;
|
}
|
}
|
return 0;
|
}
|
|
|
int psem_wait(sem_t *sem) {
|
int rv;
|
while ( (rv = sem_wait(sem)) == -1) {
|
if(errno == EINTR)
|
continue;
|
else {
|
// LoggerFactory::getLogger()->error(errno, "LockFreeQueue push_timeout");
|
return -1;
|
}
|
}
|
return 0;
|
}
|
|
int psem_trywait(sem_t *sem) {
|
return sem_trywait(sem);
|
}
|
|
int psem_post(sem_t *sem) {
|
return sem_post(sem);
|
}
|