On 2024-10-08 15:50, Mathieu Desnoyers wrote: [...]
+/* Retire the protected hazard pointer from @slot. */ +static inline +void hazptr_retire(struct hazptr_slot *slot, void *addr) +{ + WARN_ON_ONCE(slot->addr != addr); + smp_store_release(&slot->addr, NULL); +}
Actually, comparing this with the literature and past presentations from Maged Michael, "retire" is not the appropriate name here. With Hazard Pointers, AFAIU, the "retire" operation is similar to a call_rcu() memory reclaim. It marks the object for eventual reclamation when it is safe to do so. The API here really just releases the recently protected hazard pointer. So I will rename this to "hazptr_release()". At this stage, this hazptr API does not implement any retire operation, and only offers the hazptr_scan() for reader/updater synchronization, leaving the actual reclaim to the caller. Thanks, Mathieu -- Mathieu Desnoyers EfficiOS Inc. https://www.efficios.com