pespin has uploaded this change for review.

View Change

bts: Simplify lifecycle of BTS inside bts_list

Add the BTS object to the BTS list as the first thing after it is created,
this way it's always attached and hence simply always detach it during
object free.

Change-Id: Ica4fe2a4be0c85b10702011e978be03bf970b0c8
---
M src/common/bts.c
1 file changed, 21 insertions(+), 12 deletions(-)

git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/32/32232/1
diff --git a/src/common/bts.c b/src/common/bts.c
index 23e4456..af66311 100644
--- a/src/common/bts.c
+++ b/src/common/bts.c
@@ -226,6 +226,8 @@
}

bts_osmux_release(bts);
+
+ llist_del(&bts->list);
return 0;
}

@@ -240,6 +242,9 @@

talloc_set_destructor(bts, gsm_bts_talloc_destructor);

+ /* add to list of BTSs */
+ llist_add_tail(&bts->list, &bts_gsmnet.bts_list);
+
bts->nr = bts_num;
bts->num_trx = 0;
INIT_LLIST_HEAD(&bts->trx_list);
@@ -323,19 +328,14 @@
static int initialized = 0;
void *tall_rtp_ctx;

- /* add to list of BTSs */
- llist_add_tail(&bts->list, &bts_gsmnet.bts_list);
-
bts->band = GSM_BAND_1800;

INIT_LLIST_HEAD(&bts->agch_queue.queue);
bts->agch_queue.length = 0;

bts->ctrs = rate_ctr_group_alloc(bts, &bts_ctrg_desc, bts->nr);
- if (!bts->ctrs) {
- llist_del(&bts->list);
+ if (!bts->ctrs)
return -1;
- }

/* enable management with default levels,
* raise threshold to GSM_BTS_AGCH_QUEUE_THRESH_LEVEL_DISABLE to
@@ -394,10 +394,8 @@

/* Osmux */
rc = bts_osmux_init(bts);
- if (rc < 0) {
- llist_del(&bts->list);
+ if (rc < 0)
return rc;
- }

/* features implemented in 'common', available for all models,
* order alphabetically */
@@ -409,10 +407,8 @@
osmo_bts_set_feature(bts->features, BTS_FEAT_PAGING_COORDINATION);

rc = bts_model_init(bts);
- if (rc < 0) {
- llist_del(&bts->list);
+ if (rc < 0)
return rc;
- }

/* TRX0 was allocated early during gsm_bts_alloc, not later through VTY */
bts_model_trx_init(bts->c0);

To view, visit change 32232. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Change-Id: Ica4fe2a4be0c85b10702011e978be03bf970b0c8
Gerrit-Change-Number: 32232
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin@sysmocom.de>
Gerrit-MessageType: newchange