diff options
author | Pau Espin Pedrol <pespin@sysmocom.de> | 2023-04-25 12:38:49 +0200 |
---|---|---|
committer | Pau Espin Pedrol <pespin@sysmocom.de> | 2023-04-26 14:14:08 +0200 |
commit | e8fc1e922859cd300257914604c8659d8e8ae648 (patch) | |
tree | 25f90ca93e2cc205957dd16304e2981f67f38011 | |
parent | d0a1ec6204aae39fadb04ed3f70d7c4fc7421471 (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.c | 14 |
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; } |