diff options
-rw-r--r-- | include/osmocom/core/logging.h | 1 | ||||
-rw-r--r-- | src/logging.c | 15 |
2 files changed, 16 insertions, 0 deletions
diff --git a/include/osmocom/core/logging.h b/include/osmocom/core/logging.h index e51487b5..31934111 100644 --- a/include/osmocom/core/logging.h +++ b/include/osmocom/core/logging.h @@ -214,6 +214,7 @@ void logp2(int subsys, unsigned int level, const char *file, int line, int cont, const char *format, ...) __attribute__ ((format (printf, 6, 7))); int log_init(const struct log_info *inf, void *talloc_ctx); +void log_fini(void); int log_check_level(int subsys, unsigned int level); /* context management */ diff --git a/src/logging.c b/src/logging.c index b96e64a1..4d6fd40d 100644 --- a/src/logging.c +++ b/src/logging.c @@ -880,6 +880,21 @@ int log_init(const struct log_info *inf, void *ctx) return 0; } +/* \brief De-initialize the Osmocom logging core + * This function destroys all targets and releases associated memory */ +void log_fini(void) +{ + struct log_target *tar, *tar2; + + llist_for_each_entry_safe(tar, tar2, &osmo_log_target_list, entry) + log_target_destroy(tar); + + talloc_free(osmo_log_info); + osmo_log_info = NULL; + talloc_free(tall_log_ctx); + tall_log_ctx = NULL; +} + /*! \brief Check whether a log entry will be generated. * \returns != 0 if a log entry might get generated by at least one target */ int log_check_level(int subsys, unsigned int level) |