From f85c9b875b060681b51f57b15074ba1c7c9f5636 Mon Sep 17 00:00:00 2001 From: wangzhengquan <wangzhengquan85@126.com> Date: 星期一, 20 七月 2020 11:10:02 +0800 Subject: [PATCH] update --- queue/sem_util.c | 30 +++++++++++++++++++++++++----- 1 files changed, 25 insertions(+), 5 deletions(-) diff --git a/queue/sem_util.c b/queue/sem_util.c index d7819a2..ceedac3 100644 --- a/queue/sem_util.c +++ b/queue/sem_util.c @@ -79,8 +79,10 @@ sops.sem_flg = 0; while (semop(semId, &sops, 1) == -1) - if (errno != EINTR ) + if (errno != EINTR ) { + err_msg(errno, "SemUtil::dec"); return -1; + } return 0; } @@ -94,8 +96,10 @@ sops.sem_flg = IPC_NOWAIT; while (semop(semId, &sops, 1) == -1) - if (errno != EINTR ) + if (errno != EINTR ) { + err_msg(errno, "SemUtil::dec_nowait"); return -1; + } return 0; } @@ -109,8 +113,10 @@ sops.sem_flg = 0; while ( semtimedop(semId, &sops, 1, timeout) == -1) - if (errno != EINTR ) + if (errno != EINTR ) { + err_msg(errno, "SemUtil::dec_timeout"); return -1; + } return 0; } @@ -126,13 +132,27 @@ sops.sem_op = 1; sops.sem_flg = 0; - return semop(semId, &sops, 1); + int rv = semop(semId, &sops, 1); + if(rv == -1) { + err_msg(errno, "SemUtil::inc"); + } + return rv; } void SemUtil::remove(int semid) { union semun dummy; if (semctl(semid, 0, IPC_RMID, dummy) == -1) - err_exit(errno, "semctl"); + err_msg(errno, "SemUtil::remove"); } + +void SemUtil::set(int semId, int val) +{ + union semun arg; + arg.val = val; + if (semctl(semId, 0, SETVAL, arg) == -1) + err_msg(errno, "SemUtil::set"); +} + + -- Gitblit v1.8.0