<p>Neels Hofmeyr has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/9285">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">cosmetic: penalty timers: constify, tweak doc<br><br>Change-Id: I28addc9a16a4c81978290303d368f630a8334228<br>---<br>M include/osmocom/bsc/penalty_timers.h<br>M src/libbsc/penalty_timers.c<br>2 files changed, 15 insertions(+), 10 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/85/9285/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmocom/bsc/penalty_timers.h b/include/osmocom/bsc/penalty_timers.h</span><br><span>index 4b1dcce..3aae8a0 100644</span><br><span>--- a/include/osmocom/bsc/penalty_timers.h</span><br><span>+++ b/include/osmocom/bsc/penalty_timers.h</span><br><span>@@ -10,24 +10,29 @@</span><br><span>  * returns an empty struct penalty_timers.  */</span><br><span> struct penalty_timers *penalty_timers_init(void *ctx);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* Add a penalty timer for a BTS.</span><br><span style="color: hsl(120, 100%, 40%);">+/* Add a penalty timer for an arbitary object.</span><br><span style="color: hsl(120, 100%, 40%);">+ * Note: the ownership of for_object remains with the caller; it is handled as a mere void* value, so</span><br><span style="color: hsl(120, 100%, 40%);">+ * invalid pointers can be handled without problems, while common sense dictates that invalidated</span><br><span style="color: hsl(120, 100%, 40%);">+ * pointers (freed objects) should probably be removed from this list. More importantly, the pointer must</span><br><span style="color: hsl(120, 100%, 40%);">+ * match any pointers used to query penalty timers, so for_object should reference some global/singleton</span><br><span style="color: hsl(120, 100%, 40%);">+ * object that tends to stay around longer than the penalty timers.</span><br><span>  * param pt: penalty timers list as from penalty_timers_init().</span><br><span>  * param for_object: arbitrary pointer reference to store a penalty timer for (passing NULL is possible,</span><br><span>  *         but note that penalty_timers_clear() will clear all timers if given for_object=NULL).</span><br><span>  * param timeout: penalty time in seconds. */</span><br><span style="color: hsl(0, 100%, 40%);">-void penalty_timers_add(struct penalty_timers *pt, void *for_object, int timeout);</span><br><span style="color: hsl(120, 100%, 40%);">+void penalty_timers_add(struct penalty_timers *pt, const void *for_object, int timeout);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* Return the amount of penalty time remaining for a BTS.</span><br><span style="color: hsl(120, 100%, 40%);">+/* Return the amount of penalty time remaining for an object.</span><br><span>  * param pt: penalty timers list as from penalty_timers_init().</span><br><span>  * param for_object: arbitrary pointer reference to query penalty timers for.</span><br><span>  * returns seconds remaining until all penalty time has expired. */</span><br><span style="color: hsl(0, 100%, 40%);">-unsigned int penalty_timers_remaining(struct penalty_timers *pt, void *for_object);</span><br><span style="color: hsl(120, 100%, 40%);">+unsigned int penalty_timers_remaining(struct penalty_timers *pt, const void *for_object);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* Clear penalty timers for one or all BTS.</span><br><span style="color: hsl(120, 100%, 40%);">+/* Clear penalty timers for one or all objects.</span><br><span>  * param pt: penalty timers list as from penalty_timers_init().</span><br><span>  * param for_object: arbitrary pointer reference to clear penalty time for,</span><br><span>  *                   or NULL to clear all timers. */</span><br><span style="color: hsl(0, 100%, 40%);">-void penalty_timers_clear(struct penalty_timers *pt, void *for_object);</span><br><span style="color: hsl(120, 100%, 40%);">+void penalty_timers_clear(struct penalty_timers *pt, const void *for_object);</span><br><span> </span><br><span> /* Free a struct as returned from penalty_timers_init().</span><br><span>  * Clear all timers from the list, deallocate the list and set the pointer to NULL.</span><br><span>diff --git a/src/libbsc/penalty_timers.c b/src/libbsc/penalty_timers.c</span><br><span>index b80fec9..02cf246 100644</span><br><span>--- a/src/libbsc/penalty_timers.c</span><br><span>+++ b/src/libbsc/penalty_timers.c</span><br><span>@@ -34,7 +34,7 @@</span><br><span> </span><br><span> struct penalty_timer {</span><br><span>       struct llist_head entry;</span><br><span style="color: hsl(0, 100%, 40%);">-        void *for_object;</span><br><span style="color: hsl(120, 100%, 40%);">+     const void *for_object;</span><br><span>      unsigned int timeout;</span><br><span> };</span><br><span> </span><br><span>@@ -55,7 +55,7 @@</span><br><span>  return pt;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-void penalty_timers_add(struct penalty_timers *pt, void *for_object, int timeout)</span><br><span style="color: hsl(120, 100%, 40%);">+void penalty_timers_add(struct penalty_timers *pt, const void *for_object, int timeout)</span><br><span> {</span><br><span>   struct penalty_timer *timer;</span><br><span>         unsigned int now;</span><br><span>@@ -89,7 +89,7 @@</span><br><span>        llist_add_tail(&timer->entry, &pt->timers);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-unsigned int penalty_timers_remaining(struct penalty_timers *pt, void *for_object)</span><br><span style="color: hsl(120, 100%, 40%);">+unsigned int penalty_timers_remaining(struct penalty_timers *pt, const void *for_object)</span><br><span> {</span><br><span>  struct penalty_timer *timer;</span><br><span>         unsigned int now = time_now();</span><br><span>@@ -107,7 +107,7 @@</span><br><span>         return max_remaining;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-void penalty_timers_clear(struct penalty_timers *pt, void *for_object)</span><br><span style="color: hsl(120, 100%, 40%);">+void penalty_timers_clear(struct penalty_timers *pt, const void *for_object)</span><br><span> {</span><br><span>      struct penalty_timer *timer, *timer2;</span><br><span>        llist_for_each_entry_safe(timer, timer2, &pt->timers, entry) {</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/9285">change 9285</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/9285"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-bsc </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: I28addc9a16a4c81978290303d368f630a8334228 </div>
<div style="display:none"> Gerrit-Change-Number: 9285 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Neels Hofmeyr <nhofmeyr@sysmocom.de> </div>