From 287d5ef4d4497748658bc4127061c23b3b8c4421 Mon Sep 17 00:00:00 2001
From: shenxin <shenxin@basic.com>
Date: 星期一, 30 八月 2021 20:15:07 +0800
Subject: [PATCH] add bhome_node.go
---
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