projects
/
lttng-ust.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
libust ABI: export streams
[lttng-ust.git]
/
libringbuffer
/
shm.c
diff --git
a/libringbuffer/shm.c
b/libringbuffer/shm.c
index d86abb98e210fadece1e35a01e55fd7d29a07f90..0d92572d7b5b6170d79ed7e457e115bba957b7ef 100644
(file)
--- a/
libringbuffer/shm.c
+++ b/
libringbuffer/shm.c
@@
-31,7
+31,7
@@
struct shm_object_table *shm_object_table_create(size_t max_nb_obj)
struct shm_object *shm_object_table_append(struct shm_object_table *table,
size_t memory_map_size)
{
struct shm_object *shm_object_table_append(struct shm_object_table *table,
size_t memory_map_size)
{
- int shmfd, waitfd[2], ret, i;
+ int shmfd, waitfd[2], ret, i
, sigblocked = 0
;
struct shm_object *obj;
char *memory_map;
char tmp_name[NAME_MAX] = "ust-shm-tmp-XXXXXX";
struct shm_object *obj;
char *memory_map;
char tmp_name[NAME_MAX] = "ust-shm-tmp-XXXXXX";
@@
-75,6
+75,7
@@
struct shm_object *shm_object_table_append(struct shm_object_table *table,
PERROR("pthread_sigmask");
goto error_pthread_sigmask;
}
PERROR("pthread_sigmask");
goto error_pthread_sigmask;
}
+ sigblocked = 1;
/*
* Allocate shm, and immediately unlink its shm oject, keeping
/*
* Allocate shm, and immediately unlink its shm oject, keeping
@@
-107,10
+108,11
@@
struct shm_object *shm_object_table_append(struct shm_object_table *table,
PERROR("shm_unlink");
goto error_shm_release;
}
PERROR("shm_unlink");
goto error_shm_release;
}
+ sigblocked = 0;
ret = pthread_sigmask(SIG_SETMASK, &orig_sigs, NULL);
if (ret == -1) {
PERROR("pthread_sigmask");
ret = pthread_sigmask(SIG_SETMASK, &orig_sigs, NULL);
if (ret == -1) {
PERROR("pthread_sigmask");
- goto error_s
hm
_release;
+ goto error_s
igmask
_release;
}
ret = ftruncate(shmfd, memory_map_size);
if (ret) {
}
ret = ftruncate(shmfd, memory_map_size);
if (ret) {
@@
-136,12
+138,19
@@
struct shm_object *shm_object_table_append(struct shm_object_table *table,
error_mmap:
error_ftruncate:
error_shm_release:
error_mmap:
error_ftruncate:
error_shm_release:
+error_sigmask_release:
ret = close(shmfd);
if (ret) {
PERROR("close");
assert(0);
}
error_shm_open:
ret = close(shmfd);
if (ret) {
PERROR("close");
assert(0);
}
error_shm_open:
+ if (sigblocked) {
+ ret = pthread_sigmask(SIG_SETMASK, &orig_sigs, NULL);
+ if (ret == -1) {
+ PERROR("pthread_sigmask");
+ }
+ }
error_pthread_sigmask:
error_fcntl:
for (i = 0; i < 2; i++) {
error_pthread_sigmask:
error_fcntl:
for (i = 0; i < 2; i++) {
This page took
0.023814 seconds
and
4
git commands to generate.