<p>pespin <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-pcu/+/22275">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  laforge: Looks good to me, but someone else must approve
  osmith: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Get rid of bts singletons<br><br>There's no BTS single global object anymore, get rid of those APIs. Move<br>users to use "pcu->bts", which will evolve to a linked list in the<br>future.<br><br>Change-Id: I9cf762b0d3cb9e2cc3582727e07fa82c8e183ec5<br>---<br>M src/bts.cpp<br>M src/bts.h<br>M src/gprs_bssgp_pcu.cpp<br>M src/osmobts_sock.cpp<br>M src/pcu_l1_if.cpp<br>M src/pcu_vty.c<br>M tests/emu/pcu_emu.cpp<br>7 files changed, 17 insertions(+), 30 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/bts.cpp b/src/bts.cpp</span><br><span>index 294739c..92cbca5 100644</span><br><span>--- a/src/bts.cpp</span><br><span>+++ b/src/bts.cpp</span><br><span>@@ -249,16 +249,6 @@</span><br><span>   OSMO_ASSERT(bts->statg);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-struct gprs_rlcmac_bts *bts_main_data()</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-    return the_pcu->bts;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-struct rate_ctr_group *bts_main_data_stats()</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-   return bts_rate_counters(the_pcu->bts);</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> static void bts_cleanup(gprs_rlcmac_bts *bts)</span><br><span> {</span><br><span>    /* this can cause counter updates and must not be left to the</span><br><span>diff --git a/src/bts.h b/src/bts.h</span><br><span>index d316370..8d06939 100644</span><br><span>--- a/src/bts.h</span><br><span>+++ b/src/bts.h</span><br><span>@@ -318,9 +318,6 @@</span><br><span> </span><br><span> struct gprs_rlcmac_bts *bts_alloc(struct gprs_pcu *pcu);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-struct gprs_rlcmac_bts *bts_main_data();</span><br><span style="color: hsl(0, 100%, 40%);">-struct rate_ctr_group *bts_main_data_stats();</span><br><span style="color: hsl(0, 100%, 40%);">-struct osmo_stat_item_group *bts_main_data_stat_items();</span><br><span> void bts_recalc_initial_cs(struct gprs_rlcmac_bts *bts);</span><br><span> void bts_recalc_initial_mcs(struct gprs_rlcmac_bts *bts);</span><br><span> void bts_recalc_max_cs(struct gprs_rlcmac_bts *bts);</span><br><span>diff --git a/src/gprs_bssgp_pcu.cpp b/src/gprs_bssgp_pcu.cpp</span><br><span>index 92fa845..997cb1b 100644</span><br><span>--- a/src/gprs_bssgp_pcu.cpp</span><br><span>+++ b/src/gprs_bssgp_pcu.cpp</span><br><span>@@ -808,7 +808,7 @@</span><br><span>            LOGP(DBSSGP, LOGL_ERROR, "No bctx\n");</span><br><span>             return -EIO;</span><br><span>         }</span><br><span style="color: hsl(0, 100%, 40%);">-       bts = bts_main_data();</span><br><span style="color: hsl(120, 100%, 40%);">+        bts = the_pcu->bts;</span><br><span> </span><br><span>   max_cs_dl = max_coding_scheme_dl(bts);</span><br><span> </span><br><span>diff --git a/src/osmobts_sock.cpp b/src/osmobts_sock.cpp</span><br><span>index 6addda6..d94c7e7 100644</span><br><span>--- a/src/osmobts_sock.cpp</span><br><span>+++ b/src/osmobts_sock.cpp</span><br><span>@@ -62,7 +62,7 @@</span><br><span> </span><br><span> static void pcu_tx_txt_retry(void *_priv)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-       struct gprs_rlcmac_bts *bts = bts_main_data();</span><br><span style="color: hsl(120, 100%, 40%);">+        struct gprs_rlcmac_bts *bts = the_pcu->bts;</span><br><span> </span><br><span>   if (bts->active)</span><br><span>          return;</span><br><span>@@ -90,7 +90,7 @@</span><br><span> static void pcu_sock_close(int lost)</span><br><span> {</span><br><span>     struct osmo_fd *bfd = &pcu_sock_state.conn_bfd;</span><br><span style="color: hsl(0, 100%, 40%);">-     struct gprs_rlcmac_bts *bts = bts_main_data();</span><br><span style="color: hsl(120, 100%, 40%);">+        struct gprs_rlcmac_bts *bts = the_pcu->bts;</span><br><span>       uint8_t trx, ts;</span><br><span> </span><br><span>         LOGP(DL1IF, LOGL_NOTICE, "PCU socket has %s connection\n",</span><br><span>diff --git a/src/pcu_l1_if.cpp b/src/pcu_l1_if.cpp</span><br><span>index 1a47b37..ce0f55e 100644</span><br><span>--- a/src/pcu_l1_if.cpp</span><br><span>+++ b/src/pcu_l1_if.cpp</span><br><span>@@ -201,7 +201,7 @@</span><br><span>  uint32_t fn, uint8_t block_nr)</span><br><span> {</span><br><span> #ifdef ENABLE_DIRECT_PHY</span><br><span style="color: hsl(0, 100%, 40%);">- struct gprs_rlcmac_bts *bts = bts_main_data();</span><br><span style="color: hsl(120, 100%, 40%);">+        struct gprs_rlcmac_bts *bts = the_pcu->bts;</span><br><span> </span><br><span>   if (bts->trx[trx].fl1h) {</span><br><span>                 l1if_pdch_req(bts->trx[trx].fl1h, ts, 0, fn, arfcn, block_nr,</span><br><span>@@ -286,13 +286,13 @@</span><br><span> {</span><br><span>        struct gprs_rlcmac_pdch *pdch;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-      pdch = &bts_main_data()->trx[trx_no].pdch[ts_no];</span><br><span style="color: hsl(120, 100%, 40%);">+      pdch = &the_pcu->bts->trx[trx_no].pdch[ts_no];</span><br><span>     return pdch->rcv_block(data, len, fn, meas);</span><br><span> }</span><br><span> </span><br><span> static int pcu_rx_data_ind_bcch(uint8_t *data, uint8_t len)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    struct gprs_rlcmac_bts *bts = bts_main_data();</span><br><span style="color: hsl(120, 100%, 40%);">+        struct gprs_rlcmac_bts *bts = the_pcu->bts;</span><br><span> </span><br><span>   if (len == 0) {</span><br><span>              bts->si13_is_set = false;</span><br><span>@@ -384,13 +384,13 @@</span><br><span> extern "C" int pcu_rx_rts_req_pdtch(uint8_t trx, uint8_t ts,</span><br><span>       uint32_t fn, uint8_t block_nr)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-     return gprs_rlcmac_rcv_rts_block(bts_main_data(),</span><br><span style="color: hsl(120, 100%, 40%);">+     return gprs_rlcmac_rcv_rts_block(the_pcu->bts,</span><br><span>                                    trx, ts, fn, block_nr);</span><br><span> }</span><br><span> extern "C" int pcu_rx_rts_req_ptcch(uint8_t trx, uint8_t ts,</span><br><span>       uint32_t fn, uint8_t block_nr)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-     struct gprs_rlcmac_bts *bts = bts_main_data();</span><br><span style="color: hsl(120, 100%, 40%);">+        struct gprs_rlcmac_bts *bts = the_pcu->bts;</span><br><span>       struct gprs_rlcmac_pdch *pdch;</span><br><span> </span><br><span>   /* Prevent buffer overflow */</span><br><span>@@ -544,7 +544,7 @@</span><br><span> </span><br><span> static int pcu_rx_info_ind(const struct gsm_pcu_if_info_ind *info_ind)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-  struct gprs_rlcmac_bts *bts = bts_main_data();</span><br><span style="color: hsl(120, 100%, 40%);">+        struct gprs_rlcmac_bts *bts = the_pcu->bts;</span><br><span>       struct gprs_bssgp_pcu *pcu;</span><br><span>  int rc = 0;</span><br><span>  unsigned int trx_nr, ts_nr;</span><br><span>diff --git a/src/pcu_vty.c b/src/pcu_vty.c</span><br><span>index ed1a6a4..9beb4c1 100644</span><br><span>--- a/src/pcu_vty.c</span><br><span>+++ b/src/pcu_vty.c</span><br><span>@@ -753,7 +753,7 @@</span><br><span>       "show bts statistics",</span><br><span>       SHOW_STR "BTS related functionality\nStatistics\n")</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-        vty_out_rate_ctr_group(vty, "", bts_main_data_stats());</span><br><span style="color: hsl(120, 100%, 40%);">+     vty_out_rate_ctr_group(vty, "", bts_rate_counters(the_pcu->bts));</span><br><span>       return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span>@@ -762,7 +762,7 @@</span><br><span>       "show bts pdch",</span><br><span>       SHOW_STR "BTS related functionality\nPDCH timeslots\n")</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-  return pcu_vty_show_bts_pdch(vty, bts_main_data());</span><br><span style="color: hsl(120, 100%, 40%);">+   return pcu_vty_show_bts_pdch(vty, the_pcu->bts);</span><br><span> }</span><br><span> </span><br><span> #define IDLE_TIME_STR "keep an idle DL TBF alive for the time given\n"</span><br><span>@@ -1013,7 +1013,7 @@</span><br><span>       SHOW_STR "Show BTS controlled timers\n"</span><br><span>       OSMO_TDEF_VTY_DOC_T)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-  struct gprs_rlcmac_bts *bts = bts_main_data();</span><br><span style="color: hsl(120, 100%, 40%);">+        struct gprs_rlcmac_bts *bts = the_pcu->bts;</span><br><span>       const char *T_arg = argc > 0 ? argv[0] : NULL;</span><br><span>    return osmo_tdef_vty_show_cmd(vty, bts->T_defs_bts, T_arg, NULL);</span><br><span> }</span><br><span>@@ -1047,7 +1047,7 @@</span><br><span>       "TBFs allocated via CCCH\n"</span><br><span>       "TBFs allocated via PACCH\n")</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-  struct gprs_rlcmac_bts *bts = bts_main_data();</span><br><span style="color: hsl(120, 100%, 40%);">+        struct gprs_rlcmac_bts *bts = the_pcu->bts;</span><br><span>       uint32_t flags = UINT32_MAX;</span><br><span> </span><br><span>     if (argv[0][0] == 'c')</span><br><span>@@ -1063,7 +1063,7 @@</span><br><span>       "show ms all",</span><br><span>       SHOW_STR "information about MSs\n" "All TBFs\n")</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-     struct gprs_rlcmac_bts *bts = bts_main_data();</span><br><span style="color: hsl(120, 100%, 40%);">+        struct gprs_rlcmac_bts *bts = the_pcu->bts;</span><br><span>       return pcu_vty_show_ms_all(vty, bts);</span><br><span> }</span><br><span> </span><br><span>@@ -1072,7 +1072,7 @@</span><br><span>       "show ms tlli TLLI",</span><br><span>       SHOW_STR "information about MSs\n" "Select MS by TLLI\n" "TLLI as hex\n")</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    struct gprs_rlcmac_bts *bts = bts_main_data();</span><br><span style="color: hsl(120, 100%, 40%);">+        struct gprs_rlcmac_bts *bts = the_pcu->bts;</span><br><span>       char *endp = NULL;</span><br><span>   unsigned long long tlli = strtoll(argv[0], &endp, 16);</span><br><span>   if ((endp != NULL && *endp != 0) || tlli > 0xffffffffULL) {</span><br><span>@@ -1087,7 +1087,7 @@</span><br><span>       "show ms imsi IMSI",</span><br><span>       SHOW_STR "information about MSs\n" "Select MS by IMSI\n" "IMSI\n")</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-   struct gprs_rlcmac_bts *bts = bts_main_data();</span><br><span style="color: hsl(120, 100%, 40%);">+        struct gprs_rlcmac_bts *bts = the_pcu->bts;</span><br><span>       return pcu_vty_show_ms_by_imsi(vty, bts, argv[0]);</span><br><span> }</span><br><span> </span><br><span>diff --git a/tests/emu/pcu_emu.cpp b/tests/emu/pcu_emu.cpp</span><br><span>index ab2804b..d7b11ca 100644</span><br><span>--- a/tests/emu/pcu_emu.cpp</span><br><span>+++ b/tests/emu/pcu_emu.cpp</span><br><span>@@ -65,7 +65,7 @@</span><br><span> </span><br><span> static void init_main_bts()</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-        struct gprs_rlcmac_bts *bts = bts_main_data();</span><br><span style="color: hsl(120, 100%, 40%);">+        struct gprs_rlcmac_bts *bts = the_pcu->bts;</span><br><span>       bts->initial_cs_dl = bts->initial_cs_ul = 1;</span><br><span>   bts->cs_mask = 1 << 0; /* CS-1 always enabled by default */</span><br><span>         bts->n3101 = 10;</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-pcu/+/22275">change 22275</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-pcu/+/22275"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-pcu </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I9cf762b0d3cb9e2cc3582727e07fa82c8e183ec5 </div>
<div style="display:none"> Gerrit-Change-Number: 22275 </div>
<div style="display:none"> Gerrit-PatchSet: 2 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: osmith <osmith@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>