From 54951dfb930bea890aef14be02236f81b3a19f2e Mon Sep 17 00:00:00 2001
From: cheliequan <liequanche@126.com>
Date: 星期二, 27 十二月 2022 10:23:43 +0800
Subject: [PATCH] 更新消息通知库,使用basic_create_ipc_server函数创建消息监听服务器

---
 src/memfd.c |   37 +++++++++++++++++++++++++------------
 1 files changed, 25 insertions(+), 12 deletions(-)

diff --git a/src/memfd.c b/src/memfd.c
index 0cc3fb9..00df30e 100644
--- a/src/memfd.c
+++ b/src/memfd.c
@@ -11,6 +11,8 @@
 #include <stdlib.h>
 #include <time.h>
 #include <stdarg.h>
+#include "memfd.h"
+#include <assert.h>
 
 #define errExit(msg)    do { perror(msg); exit(EXIT_FAILURE); \
 } while (0)
@@ -69,12 +71,16 @@
   struct stat st;
 
   /* Create an anonymous file in tmpfs; */
+  if(0 >= len)
+  {
+      return -1;
+  }
 
   fd = sys_memfd_create(name, MFD_CLOEXEC);
 
   if (fd == -1)
   {
-    errExit("memfd_create");
+      errExit("memfd_create");
   }
 
   /* Size the file as specified on the command line */
@@ -82,7 +88,7 @@
   mydebug("length: %zu\n", len);
   if (ftruncate(fd, len) == -1)
   {
-      errExit("truncate");
+      errExit("ftruncate");
   }
 
   if (fstat (fd, &st))
@@ -127,14 +133,19 @@
 
 int basic_shm_open(int fd, pid_t pid, int flags)
 {
-    if(0 >= flags)
-    {
-        basic_shm_path_open(fd, getpid());
+    int memfd = -1;
+    switch(flags){
+      case local_open_flag:
+        memfd = basic_shm_path_open(fd, getpid());
+        break;
+      case remote_open_flag:
+        memfd = basic_shm_path_open(fd, pid);
+        break;        
+      default:
+        mydebug("not support\n");
+        break;
     }
-    else
-    {
-        basic_shm_path_open(fd, pid);
-    }
+    return memfd;
 }
 
 int basic_shm_mmap(int fd, unsigned char** ppaddr)
@@ -168,22 +179,24 @@
     }
     len = st.st_size;
 
-    ret = munmap(*ppaddr, len);
+    ret = munmap((void *)*ppaddr, len);
     if (ret == -1)
     {
         errExit("munmap()");
     }
-
+    *ppaddr = NULL;
     mydebug("length: %zu, atime: %lu.%lu\n", len, st.st_atim.tv_sec, st.st_atim.tv_nsec);
     return len;
 }
 
 int basic_shm_close(int fd)
 {
+  int ret = -1;
   if (fd >= 0) 
   {
-    close(fd);
+    ret = close(fd);
   }
+  return ret;
 }
 
 static void mfd_assert_size(int fd, size_t size)

--
Gitblit v1.8.0