aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPau Espin Pedrol <pespin@sysmocom.de>2018-02-21 20:15:18 +0100
committerPau Espin Pedrol <pespin@sysmocom.de>2018-02-22 20:04:47 +0100
commitab22f4c421e088bbc6ebef151ee3231ffb68e778 (patch)
treed3733901401723c5d6c8dd460892de87b581a420
parent8b843e5bed6e3dab1068b86805e557a196f9aa4c (diff)
osmo-trx: set up signals using libosmocore helpers
-rw-r--r--Transceiver52M/osmo-trx.cpp32
1 files changed, 20 insertions, 12 deletions
diff --git a/Transceiver52M/osmo-trx.cpp b/Transceiver52M/osmo-trx.cpp
index 16866f4..0562dcd 100644
--- a/Transceiver52M/osmo-trx.cpp
+++ b/Transceiver52M/osmo-trx.cpp
@@ -37,6 +37,7 @@
#include <Logger.h>
extern "C" {
+#include <osmocom/core/application.h>
#include "convolve.h"
#include "convert.h"
}
@@ -240,20 +241,27 @@ Transceiver *makeTransceiver(struct trx_config *config, RadioInterface *radio)
static void sig_handler(int signo)
{
- fprintf(stdout, "Received shutdown signal");
- gshutdown = true;
+ fprintf(stdout, "signal %d received\n", signo);
+ switch (signo) {
+ case SIGINT:
+ case SIGTERM:
+ fprintf(stdout, "shutting down\n");
+ gshutdown = true;
+ break;
+ default:
+ break;
+ }
}
static void setup_signal_handlers()
{
- if (signal(SIGINT, sig_handler) == SIG_ERR) {
- fprintf(stderr, "Failed to install SIGINT signal handler\n");
- exit(EXIT_FAILURE);
- }
- if (signal(SIGTERM, sig_handler) == SIG_ERR) {
- fprintf(stderr, "Couldn't install SIGTERM signal handler\n");
- exit( EXIT_FAILURE);
- }
+ /* Handle keyboard interrupt SIGINT */
+ signal(SIGINT, &sig_handler);
+ signal(SIGTERM, &sig_handler);
+ signal(SIGABRT, &sig_handler);
+ signal(SIGUSR1, &sig_handler);
+ signal(SIGUSR2, &sig_handler);
+ osmo_init_ignore_signals();
}
@@ -478,6 +486,8 @@ int main(int argc, char *argv[])
RadioDevice::InterfaceType iface = RadioDevice::NORMAL;
struct trx_config config;
+ setup_signal_handlers();
+
#ifdef HAVE_SSE3
printf("Info: SSE3 support compiled in");
#ifdef HAVE___BUILTIN_CPU_SUPPORTS
@@ -512,8 +522,6 @@ int main(int argc, char *argv[])
return EXIT_FAILURE;
}
- setup_signal_handlers();
-
/* Check database sanity */
if (!trx_setup_config(&config)) {
std::cerr << "Config: Database failure - exiting" << std::endl;