From 3de97e192688b75a24077bb7072030f4a4dc5ef3 Mon Sep 17 00:00:00 2001 From: Max Date: Wed, 2 Nov 2016 10:37:58 +0100 Subject: Add logging and testing for FSM deallocation osmo_fsm_inst_alloc() logs allocation but osmo_fsm_inst_free() is silent. Fix this by adding log message for deallocation to make FSM lifecycle tracking easier. Also make sure it's covered by test suite. Change-Id: I7e5b55a1fff8e36cf61c7fb61d3e79c1f00e29d2 --- src/fsm.c | 1 + tests/fsm/fsm_test.c | 9 +++++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/fsm.c b/src/fsm.c index f525f400..9dc6b987 100644 --- a/src/fsm.c +++ b/src/fsm.c @@ -233,6 +233,7 @@ struct osmo_fsm_inst *osmo_fsm_inst_alloc_child(struct osmo_fsm *fsm, */ void osmo_fsm_inst_free(struct osmo_fsm_inst *fi) { + LOGPFSM(fi, "Deallocated\n"); osmo_timer_del(&fi->timer); llist_del(&fi->list); talloc_free(fi); diff --git a/tests/fsm/fsm_test.c b/tests/fsm/fsm_test.c index 29b31efc..edbba9ef 100644 --- a/tests/fsm/fsm_test.c +++ b/tests/fsm/fsm_test.c @@ -89,7 +89,7 @@ static struct osmo_fsm fsm = { .log_subsys = DMAIN, }; -static int foo(void) +static struct osmo_fsm_inst *foo(void) { struct osmo_fsm_inst *fi; @@ -115,7 +115,7 @@ static int foo(void) OSMO_ASSERT(fi->state == ST_TWO); - return 0; + return fi; } static const struct log_info_cat default_categories[] = { @@ -134,6 +134,7 @@ static const struct log_info log_info = { int main(int argc, char **argv) { struct log_target *stderr_target; + struct osmo_fsm_inst *finst; osmo_fsm_log_addr(false); @@ -145,12 +146,12 @@ int main(int argc, char **argv) g_ctx = NULL; osmo_fsm_register(&fsm); - foo(); + finst = foo(); while (1) { osmo_select_main(0); } - + osmo_fsm_inst_free(finst); osmo_fsm_unregister(&fsm); exit(0); } -- cgit v1.2.3