Change in osmo-bsc[master]: cosmetic: penalty timers: constify, tweak doc

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/gerrit-log@lists.osmocom.org/.

Neels Hofmeyr gerrit-no-reply at lists.osmocom.org
Thu May 24 16:59:47 UTC 2018


Neels Hofmeyr has uploaded this change for review. ( https://gerrit.osmocom.org/9285


Change subject: cosmetic: penalty timers: constify, tweak doc
......................................................................

cosmetic: penalty timers: constify, tweak doc

Change-Id: I28addc9a16a4c81978290303d368f630a8334228
---
M include/osmocom/bsc/penalty_timers.h
M src/libbsc/penalty_timers.c
2 files changed, 15 insertions(+), 10 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/85/9285/1

diff --git a/include/osmocom/bsc/penalty_timers.h b/include/osmocom/bsc/penalty_timers.h
index 4b1dcce..3aae8a0 100644
--- a/include/osmocom/bsc/penalty_timers.h
+++ b/include/osmocom/bsc/penalty_timers.h
@@ -10,24 +10,29 @@
  * returns an empty struct penalty_timers.  */
 struct penalty_timers *penalty_timers_init(void *ctx);
 
-/* Add a penalty timer for a BTS.
+/* Add a penalty timer for an arbitary object.
+ * Note: the ownership of for_object remains with the caller; it is handled as a mere void* value, so
+ * invalid pointers can be handled without problems, while common sense dictates that invalidated
+ * pointers (freed objects) should probably be removed from this list. More importantly, the pointer must
+ * match any pointers used to query penalty timers, so for_object should reference some global/singleton
+ * object that tends to stay around longer than the penalty timers.
  * param pt: penalty timers list as from penalty_timers_init().
  * param for_object: arbitrary pointer reference to store a penalty timer for (passing NULL is possible,
  *         but note that penalty_timers_clear() will clear all timers if given for_object=NULL).
  * param timeout: penalty time in seconds. */
-void penalty_timers_add(struct penalty_timers *pt, void *for_object, int timeout);
+void penalty_timers_add(struct penalty_timers *pt, const void *for_object, int timeout);
 
-/* Return the amount of penalty time remaining for a BTS.
+/* Return the amount of penalty time remaining for an object.
  * param pt: penalty timers list as from penalty_timers_init().
  * param for_object: arbitrary pointer reference to query penalty timers for.
  * returns seconds remaining until all penalty time has expired. */
-unsigned int penalty_timers_remaining(struct penalty_timers *pt, void *for_object);
+unsigned int penalty_timers_remaining(struct penalty_timers *pt, const void *for_object);
 
-/* Clear penalty timers for one or all BTS.
+/* Clear penalty timers for one or all objects.
  * param pt: penalty timers list as from penalty_timers_init().
  * param for_object: arbitrary pointer reference to clear penalty time for,
  *                   or NULL to clear all timers. */
-void penalty_timers_clear(struct penalty_timers *pt, void *for_object);
+void penalty_timers_clear(struct penalty_timers *pt, const void *for_object);
 
 /* Free a struct as returned from penalty_timers_init().
  * Clear all timers from the list, deallocate the list and set the pointer to NULL.
diff --git a/src/libbsc/penalty_timers.c b/src/libbsc/penalty_timers.c
index b80fec9..02cf246 100644
--- a/src/libbsc/penalty_timers.c
+++ b/src/libbsc/penalty_timers.c
@@ -34,7 +34,7 @@
 
 struct penalty_timer {
 	struct llist_head entry;
-	void *for_object;
+	const void *for_object;
 	unsigned int timeout;
 };
 
@@ -55,7 +55,7 @@
 	return pt;
 }
 
-void penalty_timers_add(struct penalty_timers *pt, void *for_object, int timeout)
+void penalty_timers_add(struct penalty_timers *pt, const void *for_object, int timeout)
 {
 	struct penalty_timer *timer;
 	unsigned int now;
@@ -89,7 +89,7 @@
 	llist_add_tail(&timer->entry, &pt->timers);
 }
 
-unsigned int penalty_timers_remaining(struct penalty_timers *pt, void *for_object)
+unsigned int penalty_timers_remaining(struct penalty_timers *pt, const void *for_object)
 {
 	struct penalty_timer *timer;
 	unsigned int now = time_now();
@@ -107,7 +107,7 @@
 	return max_remaining;
 }
 
-void penalty_timers_clear(struct penalty_timers *pt, void *for_object)
+void penalty_timers_clear(struct penalty_timers *pt, const void *for_object)
 {
 	struct penalty_timer *timer, *timer2;
 	llist_for_each_entry_safe(timer, timer2, &pt->timers, entry) {

-- 
To view, visit https://gerrit.osmocom.org/9285
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I28addc9a16a4c81978290303d368f630a8334228
Gerrit-Change-Number: 9285
Gerrit-PatchSet: 1
Gerrit-Owner: Neels Hofmeyr <nhofmeyr at sysmocom.de>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20180524/3cb56d96/attachment.htm>


More information about the gerrit-log mailing list