diff options
author | Neels Hofmeyr <neels@hofmeyr.de> | 2018-03-22 15:56:49 +0100 |
---|---|---|
committer | Neels Hofmeyr <neels@hofmeyr.de> | 2018-03-22 17:06:05 +0100 |
commit | c01e90933fef6449f64db65a63590a6507bae34a (patch) | |
tree | 8757bfb928e630e32f40272509479c4137f161f0 | |
parent | 6a8b9c70fceba57f624c9c23c97cbb27389e4584 (diff) |
dissolve libcommon: move talloc ctx into msc_main.c, drop talloc_ctx.c
Drop tall_bsc_ctx; in mncc_sock_init(), talloc the mncc_sock_state from
gsm_network.
In tests or utils, move from using an extern tall_bsc_ctx to a local root
context pointer.
Change-Id: I92c252be1d1e7634f1653de47d37c99d77d9501c
-rw-r--r-- | include/osmocom/msc/gsm_data.h | 2 | ||||
-rw-r--r-- | include/osmocom/msc/gsup_client.h | 3 | ||||
-rw-r--r-- | src/libcommon/Makefile.am | 1 | ||||
-rw-r--r-- | src/libcommon/gsup_client.c | 5 | ||||
-rw-r--r-- | src/libcommon/gsup_test_client.c | 4 | ||||
-rw-r--r-- | src/libcommon/talloc_ctx.c | 38 | ||||
-rw-r--r-- | src/libmsc/mncc_sock.c | 2 | ||||
-rw-r--r-- | src/libvlr/vlr.c | 2 | ||||
-rw-r--r-- | src/osmo-msc/msc_main.c | 10 | ||||
-rw-r--r-- | tests/msc_vlr/msc_vlr_tests.c | 28 |
10 files changed, 31 insertions, 64 deletions
diff --git a/include/osmocom/msc/gsm_data.h b/include/osmocom/msc/gsm_data.h index 2d1d20c19..9b6e4e4bb 100644 --- a/include/osmocom/msc/gsm_data.h +++ b/include/osmocom/msc/gsm_data.h @@ -359,8 +359,6 @@ struct gsm_sms { char text[SMS_TEXT_SIZE]; }; -extern void talloc_ctx_init(void *ctx_root); - extern void *tall_bsc_ctx; extern int ipacc_rtp_direct; diff --git a/include/osmocom/msc/gsup_client.h b/include/osmocom/msc/gsup_client.h index ce065a6e3..59e650f63 100644 --- a/include/osmocom/msc/gsup_client.h +++ b/include/osmocom/msc/gsup_client.h @@ -54,7 +54,8 @@ struct gsup_client { int got_ipa_pong; }; -struct gsup_client *gsup_client_create(const char *unit_name, +struct gsup_client *gsup_client_create(void *talloc_ctx, + const char *unit_name, const char *ip_addr, unsigned int tcp_port, gsup_client_read_cb_t read_cb, diff --git a/src/libcommon/Makefile.am b/src/libcommon/Makefile.am index 5bd1c2f94..dff0be35d 100644 --- a/src/libcommon/Makefile.am +++ b/src/libcommon/Makefile.am @@ -23,7 +23,6 @@ libcommon_a_SOURCES = \ gsm_data.c \ gsup_client.c \ oap_client.c \ - talloc_ctx.c \ gsm_subscriber_base.c \ $(NULL) diff --git a/src/libcommon/gsup_client.c b/src/libcommon/gsup_client.c index 0335e210b..9051b3197 100644 --- a/src/libcommon/gsup_client.c +++ b/src/libcommon/gsup_client.c @@ -265,7 +265,8 @@ static void start_test_procedure(struct gsup_client *gsupc) gsup_client_send_ping(gsupc); } -struct gsup_client *gsup_client_create(const char *unit_name, +struct gsup_client *gsup_client_create(void *talloc_ctx, + const char *unit_name, const char *ip_addr, unsigned int tcp_port, gsup_client_read_cb_t read_cb, @@ -274,7 +275,7 @@ struct gsup_client *gsup_client_create(const char *unit_name, struct gsup_client *gsupc; int rc; - gsupc = talloc_zero(tall_bsc_ctx, struct gsup_client); + gsupc = talloc_zero(talloc_ctx, struct gsup_client); OSMO_ASSERT(gsupc); /* struct ipaccess_unit has a non-const unit_name, so let's copy to be diff --git a/src/libcommon/gsup_test_client.c b/src/libcommon/gsup_test_client.c index 3e88689e7..add98e47a 100644 --- a/src/libcommon/gsup_test_client.c +++ b/src/libcommon/gsup_test_client.c @@ -275,8 +275,6 @@ static void sig_cb(int sig) } } -void *tall_bsc_ctx = NULL; - /* default categories */ static struct log_info_cat default_categories[] = { }; @@ -294,7 +292,7 @@ int main(int argc, char **argv) osmo_init_logging(&gsup_test_client_log_info); - g_gc = gsup_client_create("GSUPTEST", server_host, server_port, + g_gc = gsup_client_create(NULL, "GSUPTEST", server_host, server_port, gsupc_read_cb, NULL); diff --git a/src/libcommon/talloc_ctx.c b/src/libcommon/talloc_ctx.c deleted file mode 100644 index ccda0d0f2..000000000 --- a/src/libcommon/talloc_ctx.c +++ /dev/null @@ -1,38 +0,0 @@ -/* OpenBSC allocation contexts initialization code */ -/* (C) 2011-2016 by sysmocom s.f.m.c. GmbH <info@sysmocom.de> - * All Rights Reserved - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ - -#include <osmocom/core/talloc.h> -#include <osmocom/core/msgb.h> - -extern void *tall_bsc_ctx; -extern void *tall_gsms_ctx; -extern void *tall_subscr_ctx; -extern void *tall_call_ctx; -extern void *tall_sigh_ctx; -extern void *tall_trans_ctx; - -void talloc_ctx_init(void *ctx_root) -{ - msgb_talloc_ctx_init(ctx_root, 0); - tall_gsms_ctx = talloc_named_const(ctx_root, 0, "sms"); - tall_subscr_ctx = talloc_named_const(ctx_root, 0, "subscriber"); - tall_call_ctx = talloc_named_const(ctx_root, 0, "gsm_call"); - tall_sigh_ctx = talloc_named_const(ctx_root, 0, "signal_handler"); - tall_trans_ctx = talloc_named_const(ctx_root, 0, "transaction"); -} diff --git a/src/libmsc/mncc_sock.c b/src/libmsc/mncc_sock.c index 14613ca2c..74ea9d20c 100644 --- a/src/libmsc/mncc_sock.c +++ b/src/libmsc/mncc_sock.c @@ -284,7 +284,7 @@ int mncc_sock_init(struct gsm_network *net, const char *sock_path) struct osmo_fd *bfd; int rc; - state = talloc_zero(tall_bsc_ctx, struct mncc_sock_state); + state = talloc_zero(net, struct mncc_sock_state); if (!state) return -ENOMEM; diff --git a/src/libvlr/vlr.c b/src/libvlr/vlr.c index f73eeb4f8..01e7ee104 100644 --- a/src/libvlr/vlr.c +++ b/src/libvlr/vlr.c @@ -1040,7 +1040,7 @@ int vlr_start(const char *gsup_unit_name, struct vlr_instance *vlr, { OSMO_ASSERT(vlr); - vlr->gsup_client = gsup_client_create(gsup_unit_name, + vlr->gsup_client = gsup_client_create(vlr, gsup_unit_name, gsup_server_addr_str, gsup_server_port, &vlr_gsupc_read_cb, NULL); diff --git a/src/osmo-msc/msc_main.c b/src/osmo-msc/msc_main.c index 1cf264274..2b1a8c753 100644 --- a/src/osmo-msc/msc_main.c +++ b/src/osmo-msc/msc_main.c @@ -513,6 +513,10 @@ const struct log_info log_info = { .num_cat = ARRAY_SIZE(msc_default_categories), }; +extern void *tall_gsms_ctx; +extern void *tall_call_ctx; +extern void *tall_trans_ctx; + int main(int argc, char **argv) { int rc; @@ -520,9 +524,13 @@ int main(int argc, char **argv) msc_vty_info.copyright = osmomsc_copyright; tall_msc_ctx = talloc_named_const(NULL, 1, "osmo_msc"); - talloc_ctx_init(tall_msc_ctx); msc_vty_info.tall_ctx = tall_msc_ctx; + msgb_talloc_ctx_init(tall_msc_ctx, 0); + tall_gsms_ctx = talloc_named_const(tall_msc_ctx, 0, "sms"); + tall_call_ctx = talloc_named_const(tall_msc_ctx, 0, "gsm_call"); + tall_trans_ctx = talloc_named_const(tall_msc_ctx, 0, "transaction"); + osmo_init_logging(&log_info); osmo_stats_init(tall_msc_ctx); diff --git a/tests/msc_vlr/msc_vlr_tests.c b/tests/msc_vlr/msc_vlr_tests.c index 4c51790cf..709355ce8 100644 --- a/tests/msc_vlr/msc_vlr_tests.c +++ b/tests/msc_vlr/msc_vlr_tests.c @@ -45,6 +45,8 @@ #include "msc_vlr_tests.h" +void *msc_vlr_tests_ctx = NULL; + bool _log_lines = false; struct gsm_network *net = NULL; @@ -472,8 +474,6 @@ static struct log_info info = { .num_cat = ARRAY_SIZE(test_categories), }; -extern void *tall_bsc_ctx; - int mncc_recv(struct gsm_network *net, struct msgb *msg) { struct gsm_mncc *mncc = (void*)msg->data; @@ -513,7 +513,7 @@ __wrap_gsup_client_create(const char *ip_addr, unsigned int tcp_port, struct oap_client_config *oap_config) { struct gsup_client *gsupc; - gsupc = talloc_zero(tall_bsc_ctx, struct gsup_client); + gsupc = talloc_zero(msc_vlr_tests_ctx, struct gsup_client); OSMO_ASSERT(gsupc); return gsupc; } @@ -805,12 +805,12 @@ void fake_time_start() fake_time_passes(0, 0); } -static void check_talloc(void *msgb_ctx, void *tall_bsc_ctx, int expected_blocks) +static void check_talloc(void *msgb_ctx, void *msc_vlr_tests_ctx, int expected_blocks) { talloc_report_full(msgb_ctx, stderr); - /* Expecting these to stick around in tall_bsc_ctx: + /* Expecting these to stick around in msc_vlr_tests_ctx: full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 7 +talloc_total_blocks(msc_vlr_tests_ctx) == 7 full talloc report on 'subscr_conn_test_ctx' (total 2642 bytes in 8 blocks) struct gsup_client contains 248 bytes in 1 blocks (ref 0) 0x61300000dee0 struct gsm_network contains 2023 bytes in 6 blocks (ref 0) 0x61700000fce0 @@ -820,9 +820,9 @@ full talloc report on 'subscr_conn_test_ctx' (total 2642 bytes in 8 blocks) msgb contains 0 bytes in 1 blocks (ref 0) 0x60800000bf80 */ fprintf(stderr, "talloc_total_blocks(tall_bsc_ctx) == %zu\n", - talloc_total_blocks(tall_bsc_ctx)); - if (talloc_total_blocks(tall_bsc_ctx) != expected_blocks) - talloc_report_full(tall_bsc_ctx, stderr); + talloc_total_blocks(msc_vlr_tests_ctx)); + if (talloc_total_blocks(msc_vlr_tests_ctx) != expected_blocks) + talloc_report_full(msc_vlr_tests_ctx, stderr); fprintf(stderr, "\n"); } @@ -895,7 +895,7 @@ static void run_tests(int nr) if (cmdline_opts.verbose) fprintf(stderr, "(test nr %d)\n", test_nr + 1); - check_talloc(msgb_ctx, tall_bsc_ctx, 7); + check_talloc(msgb_ctx, msc_vlr_tests_ctx, 7); } } @@ -926,8 +926,8 @@ int main(int argc, char **argv) { handle_options(argc, argv); - tall_bsc_ctx = talloc_named_const(NULL, 0, "subscr_conn_test_ctx"); - msgb_ctx = msgb_talloc_ctx_init(tall_bsc_ctx, 0); + msc_vlr_tests_ctx = talloc_named_const(NULL, 0, "msc_vlr_tests_ctx"); + msgb_ctx = msgb_talloc_ctx_init(msc_vlr_tests_ctx, 0); osmo_init_logging(&info); _log_lines = cmdline_opts.verbose; @@ -941,7 +941,7 @@ int main(int argc, char **argv) if (cmdline_opts.verbose) log_set_category_filter(osmo_stderr_target, DLSMS, 1, LOGL_DEBUG); - net = test_net(tall_bsc_ctx); + net = test_net(msc_vlr_tests_ctx); osmo_fsm_log_addr(false); @@ -969,6 +969,6 @@ int main(int argc, char **argv) printf("Done\n"); - check_talloc(msgb_ctx, tall_bsc_ctx, 7); + check_talloc(msgb_ctx, msc_vlr_tests_ctx, 7); return 0; } |