X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=libust%2Ftracectl.c;h=e0b9370963a482a206be9b358d4705ecae727e9c;hb=2c1ccefa04f76f4ed7ed2c6bd02b1144e3ba1582;hp=2e9052386c7121131d91c0495522752c96a9b57b;hpb=fc253ce0fd26aa660b249013f4c802e54eefc0e9;p=ust.git diff --git a/libust/tracectl.c b/libust/tracectl.c index 2e90523..e0b9370 100644 --- a/libust/tracectl.c +++ b/libust/tracectl.c @@ -23,7 +23,6 @@ #include #include #include -#include #include #include #include @@ -37,8 +36,6 @@ #include "buffers.h" #include "marker-control.h" -//#define USE_CLONE - #define USTSIGNAL SIGIO #define MAX_MSG_SIZE (100) @@ -1111,32 +1108,24 @@ void *listener_main(void *p) } volatile sig_atomic_t have_listener = 0; -#ifndef USE_CLONE +/* These should only be accessed in the parent thread, + * not the listener. + */ static pthread_t listener_thread; -#endif void create_listener(void) { -#ifdef USE_CLONE - static char listener_stack[16384]; int result; -#endif if(have_listener) { WARN("not creating listener because we already had one"); return; } -#ifdef USE_CLONE - result = clone((int (*)(void *)) listener_main, listener_stack+sizeof(listener_stack)-1, CLONE_FS | CLONE_FILES | CLONE_VM | CLONE_SIGHAND | CLONE_THREAD, NULL); + result = pthread_create(&listener_thread, NULL, listener_main, NULL); if(result == -1) { - perror("clone"); - return; + PERROR("pthread_create"); } -#else - - pthread_create(&listener_thread, NULL, listener_main, NULL); -#endif have_listener = 1; } @@ -1481,8 +1470,10 @@ static void ust_fork(void) /* Delete all blocked consumers */ list_for_each_entry(bc, &blocked_consumers, list) { - close(bc->fd_producer); - close(bc->fd_consumer); + result = close(bc->fd_producer); + if(result == -1) { + PERROR("close"); + } free(deletable_bc); deletable_bc = bc; list_del(&bc->list);