patch: subscriber usage debug

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/OpenBSC@lists.osmocom.org/.

Andreas.Eversberg Andreas.Eversberg at versatel.de
Mon Nov 16 17:52:31 UTC 2009


this patch will give more detailed debug information about subscriber
usage.

when subcriber structure is allocated, it will be shown on debug output.
subscr_get() and subscr_put() debug will also show the calling function
for better understanding.


diff --git a/openbsc/include/openbsc/gsm_subscriber.h
b/openbsc/include/openbsc/gsm_subscriber.h
index d612ed5..02e193a 100644
--- a/openbsc/include/openbsc/gsm_subscriber.h
+++ b/openbsc/include/openbsc/gsm_subscriber.h
@@ -71,8 +71,10 @@ enum gsm_subscriber_update_reason {
 	GSM_SUBSCRIBER_UPDATE_EQUIPMENT,
 };
 
-struct gsm_subscriber *subscr_get(struct gsm_subscriber *subscr);
-struct gsm_subscriber *subscr_put(struct gsm_subscriber *subscr);
+#define subscr_get(subscr) _subscr_get(__FUNCTION__, subscr)
+struct gsm_subscriber *_subscr_get(const char *func, struct
gsm_subscriber *subscr);
+#define subscr_put(subscr) _subscr_put(__FUNCTION__, subscr)
+struct gsm_subscriber *_subscr_put(const char *func, struct
gsm_subscriber *subscr);
 struct gsm_subscriber *subscr_get_by_tmsi(struct gsm_network *net,
 					  u_int32_t tmsi);
 struct gsm_subscriber *subscr_get_by_imsi(struct gsm_network *net,
@@ -87,7 +89,8 @@ void subscr_get_channel(struct gsm_subscriber *subscr,
                         int type, gsm_cbfn *cbfn, void *param);
 
 /* internal */
-struct gsm_subscriber *subscr_alloc(void);
+#define subscr_alloc() _subscr_alloc(__FUNCTION__)
+struct gsm_subscriber *_subscr_alloc(const char *func);
 extern struct llist_head active_subscribers;
 
 #endif /* _GSM_SUBSCR_H */
diff --git a/openbsc/src/gsm_subscriber_base.c
b/openbsc/src/gsm_subscriber_base.c
index bcf55d1..7fe2f21 100644
--- a/openbsc/src/gsm_subscriber_base.c
+++ b/openbsc/src/gsm_subscriber_base.c
@@ -113,7 +113,7 @@ static void subscr_send_paging_request(struct
gsm_subscriber *subscr)
 	}
 }
 
-struct gsm_subscriber *subscr_alloc(void)
+struct gsm_subscriber *_subscr_alloc(const char *func)
 {
 	struct gsm_subscriber *s;
 
@@ -123,6 +123,8 @@ struct gsm_subscriber *subscr_alloc(void)
 
 	memset(s, 0, sizeof(*s));
 	llist_add_tail(&s->entry, &active_subscribers);
+	DEBUGP(DCC, "(from %s) new subscr allocated, setting usage to:
1\n",
+			func);
 	s->use_count = 1;
 	s->tmsi = GSM_RESERVED_TMSI;
 
@@ -137,19 +139,19 @@ static void subscr_free(struct gsm_subscriber
*subscr)
 	talloc_free(subscr);
 }
 
-struct gsm_subscriber *subscr_get(struct gsm_subscriber *subscr)
+struct gsm_subscriber *_subscr_get(const char *func, struct
gsm_subscriber *subscr)
 {
 	subscr->use_count++;
-	DEBUGP(DCC, "subscr %s usage increases usage to: %d\n",
-			subscr->extension, subscr->use_count);
+	DEBUGP(DCC, "(from %s) subscr %s usage increases usage to:
%d\n",
+			func, subscr->extension, subscr->use_count);
 	return subscr;
 }
 
-struct gsm_subscriber *subscr_put(struct gsm_subscriber *subscr)
+struct gsm_subscriber *_subscr_put(const char *func, struct
gsm_subscriber *subscr)
 {
 	subscr->use_count--;
-	DEBUGP(DCC, "subscr %s usage decreased usage to: %d\n",
-			subscr->extension, subscr->use_count);
+	DEBUGP(DCC, "(from %s) subscr %s usage decreased usage to:
%d\n",
+			func, subscr->extension, subscr->use_count);
 	if (subscr->use_count <= 0)
 		subscr_free(subscr);
 	return NULL;




More information about the OpenBSC mailing list