From 27d8bc7cad4a8f68c2da3efbb77f45ec70ae40e6 Mon Sep 17 00:00:00 2001
From: liuxiaolong <liuxiaolong@aiotlink.com>
Date: 星期三, 05 一月 2022 14:11:39 +0800
Subject: [PATCH] pb.go MsgQueryProcReply add subLocalTopics and subNetTopics

---
 src/psem.h |   40 ++++++++++++++++++++++++++++++++++++----
 1 files changed, 36 insertions(+), 4 deletions(-)

diff --git a/src/psem.h b/src/psem.h
index 30c6670..41b76e6 100644
--- a/src/psem.h
+++ b/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

--
Gitblit v1.8.0