summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPau Espin Pedrol <pespin@sysmocom.de>2023-04-25 12:38:49 +0200
committerPau Espin Pedrol <pespin@sysmocom.de>2023-04-26 14:14:08 +0200
commite8fc1e922859cd300257914604c8659d8e8ae648 (patch)
tree25f90ca93e2cc205957dd16304e2981f67f38011
parentd0a1ec6204aae39fadb04ed3f70d7c4fc7421471 (diff)
layer23: modem: Unregister registered callbacks upon app exit
It's just a good practice to delete all resources allocated during startup. The main aim here is to keep resemblance to what the mobile app is doing, so that they can slowly be merged and some functionalities from the mobile app can be added to the modem app, like shutting down the MS without killing the process eventually. Change-Id: I5a641fa3dadb6ea7346b25a20215896ab32eb805
-rw-r--r--src/host/layer23/src/modem/app_modem.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/host/layer23/src/modem/app_modem.c b/src/host/layer23/src/modem/app_modem.c
index 211621ee..12ac4aeb 100644
--- a/src/host/layer23/src/modem/app_modem.c
+++ b/src/host/layer23/src/modem/app_modem.c
@@ -114,8 +114,8 @@ void layer3_app_reset(void)
memset(&app_data, 0x00, sizeof(app_data));
}
-static int signal_cb(unsigned int subsys, unsigned int signal,
- void *handler_data, void *signal_data)
+static int global_signal_cb(unsigned int subsys, unsigned int signal,
+ void *handler_data, void *signal_data)
{
struct osmocom_ms *ms;
@@ -151,11 +151,19 @@ static int _modem_start(void)
return 0;
}
+/* global exit */
+static int _modem_exit(void)
+{
+ osmo_signal_unregister_handler(SS_GLOBAL, &global_signal_cb, NULL);
+ return 0;
+}
+
int l23_app_init(void)
{
int rc;
l23_app_start = _modem_start;
+ l23_app_exit = _modem_exit;
log_set_category_filter(osmo_stderr_target, DLGLOBAL, 1, LOGL_DEBUG);
log_set_category_filter(osmo_stderr_target, DLCSN1, 1, LOGL_DEBUG);
@@ -189,7 +197,7 @@ int l23_app_init(void)
return rc;
}
- osmo_signal_register_handler(SS_L1CTL, &signal_cb, NULL);
+ osmo_signal_register_handler(SS_L1CTL, &global_signal_cb, NULL);
lapdm_channel_set_l3(&app_data.ms->lapdm_channel, &modem_grr_rslms_cb, app_data.ms);
return 0;
}