Am 9/19/2024 um 8:56 AM schrieb Boqun Feng:
On Wed, Sep 18, 2024 at 11:17:37PM +0800, Alan Huang wrote:
[...]
+#define hazptr_tryprotect(hzp, gp, field) (typeof(gp))__hazptr_tryprotect(hzp,
(void **)&(gp), offsetof(typeof(*gp), field))
+#define hazptr_protect(hzp, gp, field) ({ \
+ typeof(gp) ___p; \
+ \
+ ___p = hazptr_tryprotect(hzp, gp, field); \
+ BUG_ON(!___p); \
hazptr_tryprotect might return NULL, do you need a loop here?
Thanks for the review. It's me who didn't do a good job here on the
documentation. hazptr_protect() is supposed to use for the case where
readers know the gp won't change.
Regards,
Boqun
+ ___p; \
+})
+
Oh, disregard my other e-mail, I hadn't seen this discussion.
Do you have any specific use case of this in mind? If you know that the
pointer can't change, I would assume you can also just read the pointer
normally and assign to the hazard pointer without a fence, no?
have fun, jonas