From b6acfdaa24851e1aa95bfc4611709737aaafa5f1 Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Thu, 17 Oct 2013 19:41:11 +0200 Subject: bts: Introduce a singleton for the BTS and use it in the code Compared to the previous code there will be a branch to get the global pointer so the code will be slightly slower than the previous version but it allows us to start creating objects but still use the code from C. It is best approach I have found so far. One downside of C++ is that by default talloc will not be used (unless we override the new operator to use talloc. Right now we need to memset the C data structure by hand. The benefit of enforcing a better structure should is more important though. --- tests/alloc/AllocTest.cpp | 2 -- tests/emu/pcu_emu.cpp | 18 ++++-------------- 2 files changed, 4 insertions(+), 16 deletions(-) (limited to 'tests') diff --git a/tests/alloc/AllocTest.cpp b/tests/alloc/AllocTest.cpp index 3d58f509..3b75763a 100644 --- a/tests/alloc/AllocTest.cpp +++ b/tests/alloc/AllocTest.cpp @@ -33,7 +33,6 @@ extern "C" { /* globals used by the code */ void *tall_pcu_ctx; -struct gprs_rlcmac_bts *gprs_rlcmac_bts; int16_t spoof_mnc = 0, spoof_mcc = 0; static void test_alloc_a(gprs_rlcmac_tbf_direction dir, const int count) @@ -47,7 +46,6 @@ static void test_alloc_a(gprs_rlcmac_tbf_direction dir, const int count) memset(&bts, 0, sizeof(bts)); bts.alloc_algorithm = alloc_algorithm_a; - gprs_rlcmac_bts = &bts; struct gprs_rlcmac_trx *trx = &bts.trx[0]; trx->pdch[2].enable = 1; diff --git a/tests/emu/pcu_emu.cpp b/tests/emu/pcu_emu.cpp index 4b58a8b8..ed0abbe6 100644 --- a/tests/emu/pcu_emu.cpp +++ b/tests/emu/pcu_emu.cpp @@ -39,7 +39,6 @@ static int current_test; /* Extern data to please the underlying code */ void *tall_pcu_ctx; -struct gprs_rlcmac_bts *gprs_rlcmac_bts; int16_t spoof_mnc = 0, spoof_mcc = 0; extern void test_replay_gprs_attach(struct gprs_bssgp_pcu *pcu); @@ -63,13 +62,9 @@ struct gprs_test all_tests[] = { test_pdp_activation_data), }; -struct gprs_rlcmac_bts *create_bts() +static void init_main_bts() { - struct gprs_rlcmac_bts *bts; - - bts = talloc_zero(tall_pcu_ctx, struct gprs_rlcmac_bts); - if (!bts) - return NULL; + struct gprs_rlcmac_bts *bts = bts_main_data(); bts->fc_interval = 100; bts->initial_cs_dl = bts->initial_cs_ul = 1; bts->cs1 = 1; @@ -85,8 +80,6 @@ struct gprs_rlcmac_bts *create_bts() if (!bts->alloc_algorithm) bts->alloc_algorithm = alloc_algorithm_b; - - return bts; } static void bvci_unblocked(struct gprs_bssgp_pcu *pcu) @@ -124,11 +117,8 @@ int main(int argc, char **argv) vty_init(&pcu_vty_info); pcu_vty_init(&gprs_log_info); - gprs_rlcmac_bts = create_bts(); - if (!gprs_rlcmac_bts) - abort(); - - create_and_connect_bssgp(gprs_rlcmac_bts, INADDR_LOOPBACK, 23000); + init_main_bts(); + create_and_connect_bssgp(bts_main_data(), INADDR_LOOPBACK, 23000); for (;;) osmo_select_main(0); -- cgit v1.2.3