X-Git-Url: https://git.liburcu.org/?a=blobdiff_plain;f=libust%2Ftracectl.c;h=d4cd5942d7bed35cc0663445c6f3c713aa0a62bf;hb=2944a62989b8466e0d551e37a0be0e8e6cd69905;hp=2d4341d3b418cd4957b8ab2efc95fbf564f6520e;hpb=c5fdc88852bc232e24fb3941ea5d5719b4490a87;p=ust.git diff --git a/libust/tracectl.c b/libust/tracectl.c index 2d4341d..d4cd594 100644 --- a/libust/tracectl.c +++ b/libust/tracectl.c @@ -798,61 +798,11 @@ void create_listener(void) have_listener = 1; } -/* The signal handler itself. Signals must be setup so there cannot be - nested signals. */ - -void sighandler(int sig) -{ - DBG("sighandler"); - - if(!have_listener) { - create_listener(); - } -} - -/* Called by the app signal handler to chain it to us. */ - -void chain_signal(void) -{ - sighandler(USTSIGNAL); -} - static int init_socket(void) { return ustcomm_init_app(getpid(), &ustcomm_app); } -static int init_signal_handler(void) -{ - /* Attempt to handler SIGIO. If the main program wants to - * handle it, fine, it'll override us. They it'll have to - * use the chaining function. - */ - - int result; - struct sigaction act; - - result = sigemptyset(&act.sa_mask); - if(result == -1) { - PERROR("sigemptyset"); - return -1; - } - - act.sa_handler = sighandler; - act.sa_flags = SA_RESTART; - - /* Only defer ourselves. Also, try to restart interrupted - * syscalls to disturb the traced program as little as possible. - */ - result = sigaction(SIGIO, &act, NULL); - if(result == -1) { - PERROR("sigaction"); - return -1; - } - - return 0; -} - #define AUTOPROBE_DISABLED 0 #define AUTOPROBE_ENABLE_ALL 1 #define AUTOPROBE_ENABLE_REGEX 2 @@ -916,11 +866,8 @@ static void __attribute__((constructor)) init() ERR("init_socket error"); return; } - result = init_signal_handler(); - if(result == -1) { - ERR("init_signal_handler error"); - return; - } + + create_listener(); autoprobe_val = getenv("UST_AUTOPROBE"); if(autoprobe_val) {