| | |
| | | |
| | | /* Reserve semaphore - decrement it by 1 */ |
| | | int SemUtil::dec(int semId) { |
| | | logger.debug("%d: SemUtil::dec\n", semId); |
| | | // logger.debug("%d: SemUtil::dec\n", semId); |
| | | struct sembuf sops; |
| | | |
| | | sops.sem_num = 0; |
| | |
| | | |
| | | while (semop(semId, &sops, 1) == -1) |
| | | if (errno != EINTR) { |
| | | err_msg(errno, "SemUtil::dec"); |
| | | // err_msg(errno, "SemUtil::dec"); |
| | | return -1; |
| | | } |
| | | |
| | |
| | | |
| | | while (semop(semId, &sops, 1) == -1) |
| | | if (errno != EINTR) { |
| | | err_msg(errno, "SemUtil::dec_nowait"); |
| | | // err_msg(errno, "SemUtil::dec_nowait"); |
| | | return -1; |
| | | } |
| | | |
| | |
| | | |
| | | while (semtimedop(semId, &sops, 1, timeout) == -1) |
| | | if (errno != EINTR) { |
| | | err_msg(errno, "SemUtil::dec_timeout"); |
| | | //err_msg(errno, "SemUtil::dec_timeout"); |
| | | return -1; |
| | | } |
| | | |