X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=libringbuffer%2Fshm.c;h=c10e58a23cc281fb06128c93d16697efc2d0b019;hb=2253b139ffb6a4eca7291b60083cc5206a6e128d;hp=fd0919fac3b75ad057e9c0aed87efd676847a76a;hpb=824f40b81426c6ac82685251018dae00947786a9;p=lttng-ust.git diff --git a/libringbuffer/shm.c b/libringbuffer/shm.c index fd0919fa..c10e58a2 100644 --- a/libringbuffer/shm.c +++ b/libringbuffer/shm.c @@ -16,7 +16,9 @@ #include #include #include -#include +#include +#include +#include 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)