fls: use local namespace to do not clash with FreeBSD string.h
[lttng-ust.git] / libringbuffer / shm.c
index ae63b004fd50723cd9c73511049bb8d042928f59..4afb0c6e25b57f0083d1feb4532b54cbb2b612ec 100644 (file)
@@ -16,7 +16,9 @@
 #include <stdio.h>
 #include <signal.h>
 #include <dirent.h>
-#include <ust/align.h>
+#include <lttng/align.h>
+#include <helper.h>
+#include <limits.h>
 
 struct shm_object_table *shm_object_table_create(size_t max_nb_obj)
 {
@@ -203,17 +205,23 @@ 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)
+                       continue;
                ret = close(obj->wait_fd[i]);
                if (ret) {
                        PERROR("close");
This page took 0.025725 seconds and 4 git commands to generate.