| | |
| | | |
| | | inline int psem_timedwait(sem_t *sem, const struct timespec *ts) { |
| | | struct timespec abs_timeout = TimeUtil::calc_abs_time(ts); |
| | | return sem_timedwait(sem, &abs_timeout); |
| | | // 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; |
| | | // return sem_timedwait(sem, &abs_timeout); |
| | | 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; |
| | | } |
| | | |
| | | |
| | | inline int psem_wait(sem_t *sem) { |
| | | return sem_wait(sem); |
| | | // int rv; |
| | | // while ( (rv = sem_wait(sem)) == -1) { |
| | | // if(errno == EINTR) |
| | | // continue; |
| | | // else { |
| | | // return -1; |
| | | // } |
| | | // } |
| | | // return 0; |
| | | // return sem_wait(sem); |
| | | int rv; |
| | | while ( (rv = sem_wait(sem)) == -1) { |
| | | if(errno == EINTR) |
| | | continue; |
| | | else { |
| | | return -1; |
| | | } |
| | | } |
| | | return 0; |
| | | } |
| | | |
| | | inline int psem_trywait(sem_t *sem) { |