freebsd port: use a leading / prefix for shm tmp name
[lttng-ust.git] / libringbuffer / shm.c
index fc7fbfb2c0642ca0c410ddae0c6cd1a45b5a792e..c10e58a23cc281fb06128c93d16697efc2d0b019 100644 (file)
@@ -17,6 +17,8 @@
 #include <signal.h>
 #include <dirent.h>
 #include <lttng/align.h>
+#include <helper.h>
+#include <limits.h>
 
 struct shm_object_table *shm_object_table_create(size_t max_nb_obj)
 {
@@ -34,7 +36,7 @@ struct shm_object *shm_object_table_append(struct shm_object_table *table,
        int shmfd, waitfd[2], ret, i, sigblocked = 0;
        struct shm_object *obj;
        char *memory_map;
-       char tmp_name[NAME_MAX] = "ust-shm-tmp-XXXXXX";
+       char tmp_name[NAME_MAX] = "/ust-shm-tmp-XXXXXX";
        sigset_t all_sigs, orig_sigs;
 
        if (table->allocated_len >= table->size)
@@ -203,15 +205,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.023094 seconds and 4 git commands to generate.