Close stream and channel file descriptors as soon as passed to sessiond
[lttng-ust.git] / libringbuffer / shm.c
index fd0919fac3b75ad057e9c0aed87efd676847a76a..69e4b1a765eb1d9dea37b9cafb6c06bbf8f4e8ad 100644 (file)
@@ -16,7 +16,8 @@
 #include <stdio.h>
 #include <signal.h>
 #include <dirent.h>
-#include <ust/align.h>
+#include <lttng/align.h>
+#include <helper.h>
 
 struct shm_object_table *shm_object_table_create(size_t max_nb_obj)
 {
@@ -203,15 +204,19 @@ void shmp_object_destroy(struct shm_object *obj)
 {
        int ret, i;
 
-        ret = munmap(obj->memory_map, obj->memory_map_size);
-        if (ret) {
-                PERROR("umnmap");
-                assert(0);
-        }
-       ret = close(obj->shm_fd);
-       if (ret) {
-               PERROR("close");
-               assert(0);
+       if (!obj->is_shadow) {
+               ret = munmap(obj->memory_map, obj->memory_map_size);
+               if (ret) {
+                       PERROR("umnmap");
+                       assert(0);
+               }
+       }
+       if (obj->shm_fd >= 0) {
+               ret = close(obj->shm_fd);
+               if (ret) {
+                       PERROR("close");
+                       assert(0);
+               }
        }
        for (i = 0; i < 2; i++) {
                if (obj->wait_fd[i] < 0)
This page took 0.028963 seconds and 4 git commands to generate.