| | |
| | | |
| | | 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) { |
| | |
| | | { |
| | | int rv; |
| | | |
| | | logger->debug("%d destroy threadlocal socket\n", pthread_self()); |
| | | logger->debug("%lu destroy threadlocal socket\n", pthread_self()); |
| | | |
| | | if(tmp_socket == NULL) |
| | | return; |
| | |
| | | opt = parse_args(argc, argv); |
| | | if(opt.bind == 0) { |
| | | usage(argv[0]); |
| | | exit(1); |
| | | } else { |
| | | start_recvfrom(opt.bind, opt.force); |
| | | } |