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.orgNeels 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>