liuxiaolong
2022-01-05 27d8bc7cad4a8f68c2da3efbb77f45ec70ae40e6
src/psem.h
@@ -2,13 +2,45 @@
#define _PSEM_H_  
#include "usg_common.h"
#include <semaphore.h>
#include "time_util.h"
int psem_wait(sem_t *sem) ;
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;
}
int psem_timedwait(sem_t *sem, const struct timespec *ts);
int psem_trywait(sem_t *sem) ;
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;
}
int psem_post(sem_t *sem);
inline int psem_trywait(sem_t *sem) {
   return sem_trywait(sem);
}
inline int psem_post(sem_t *sem) {
   return sem_post(sem);
}
#endif