X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=tests%2Futils%2Ftestapp%2Fsignal-helper.h;fp=tests%2Futils%2Ftestapp%2Fsignal-helper.h;h=4169e15e4a6c2dda2c403d9d0cbeeca6e3d20d1f;hb=95983a02c557a99506716fc2c28f74be37def2b3;hp=0000000000000000000000000000000000000000;hpb=9a318688b5958debecae5560842109d77abd996e;p=lttng-tools.git diff --git a/tests/utils/testapp/signal-helper.h b/tests/utils/testapp/signal-helper.h new file mode 100644 index 000000000..4169e15e4 --- /dev/null +++ b/tests/utils/testapp/signal-helper.h @@ -0,0 +1,57 @@ +/* + * Copyright (C) - 2018 Jérémie Galarneau + * + * This library is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by the + * Free Software Foundation; version 2.1 of the License. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License + * for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef LTTNG_TESTAPP_SIGNAL_HELPER_H +#define LTTNG_TESTAPP_SIGNAL_HELPER_H + +#include + +static volatile int should_quit; + +static +void sighandler(int sig) +{ + if (sig == SIGTERM) { + should_quit = 1; + } +} + +static +int set_signal_handler(void) +{ + int ret; + struct sigaction sa = { + .sa_flags = 0, + .sa_handler = sighandler, + }; + + ret = sigemptyset(&sa.sa_mask); + if (ret) { + perror("sigemptyset"); + goto end; + } + + ret = sigaction(SIGTERM, &sa, NULL); + if (ret) { + perror("sigaction"); + goto end; + } +end: + return ret; +} + +#endif /* LTTNG_TESTAPP_SIGNAL_HELPER_H */