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