lfstack: make cds_lfs_empty argument const master
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Wed, 12 Jun 2024 20:42:51 +0000 (16:42 -0400)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Wed, 12 Jun 2024 20:42:51 +0000 (16:42 -0400)
cds_lfs_empty doesn't modify its argument. Hence, it can be marked as
`const`.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Iebbd1d7f2ff50ccbe36e43bec59081ce213b9a0d

include/urcu/lfstack.h
include/urcu/static/lfstack.h
src/lfstack.c

index 77af43bf18069df89619f85be6ac46178980de5c..2a3073d695b7ae479d2a848420b15c7b70be647e 100644 (file)
@@ -84,6 +84,11 @@ typedef union {
        struct __cds_lfs_stack *_s;
        struct cds_lfs_stack *s;
 } __attribute__((__transparent_union__)) cds_lfs_stack_ptr_t;
+
+typedef union {
+       const struct __cds_lfs_stack *_s;
+       const struct cds_lfs_stack *s;
+} __attribute__((__transparent_union__)) cds_lfs_stack_const_ptr_t;
 #if defined(__clang__)
 #pragma clang diagnostic pop
 #endif
@@ -141,7 +146,7 @@ extern void __cds_lfs_init(struct __cds_lfs_stack *s);
  *
  * No memory barrier is issued. No mutual exclusion is required.
  */
-extern bool cds_lfs_empty(cds_lfs_stack_ptr_t s);
+extern bool cds_lfs_empty(cds_lfs_stack_const_ptr_t s);
 
 /*
  * cds_lfs_push: push a node into the stack.
@@ -276,9 +281,25 @@ static inline cds_lfs_stack_ptr_t cds_lfs_stack_cast(struct cds_lfs_stack *s)
        return ret;
 }
 
+static inline cds_lfs_stack_const_ptr_t cds_lfs_stack_const_cast(const struct __cds_lfs_stack *s)
+{
+       cds_lfs_stack_const_ptr_t ret = {
+               ._s = s,
+       };
+       return ret;
+}
+
+static inline cds_lfs_stack_const_ptr_t cds_lfs_stack_const_cast(const struct cds_lfs_stack *s)
+{
+       cds_lfs_stack_const_ptr_t ret = {
+               .s = s,
+       };
+       return ret;
+}
+
 template<typename T> static inline bool cds_lfs_empty(T s)
 {
-       return cds_lfs_empty(cds_lfs_stack_cast(s));
+       return cds_lfs_empty(cds_lfs_stack_const_cast(s));
 }
 
 template<typename T> static inline bool cds_lfs_push(T s,
index d7e70d4966d6bab1f5f040c634a025c84f7baa99..22233d8d22b3d3deacfef4abf502e28dd8bcc2e1 100644 (file)
@@ -87,7 +87,7 @@ void ___cds_lfs_init(struct __cds_lfs_stack *s)
 }
 
 static inline
-bool ___cds_lfs_empty_head(struct cds_lfs_head *head)
+bool ___cds_lfs_empty_head(const struct cds_lfs_head *head)
 {
        return head == NULL;
 }
@@ -98,7 +98,7 @@ bool ___cds_lfs_empty_head(struct cds_lfs_head *head)
  * No memory barrier is issued. No mutual exclusion is required.
  */
 static inline
-bool _cds_lfs_empty(cds_lfs_stack_ptr_t s)
+bool _cds_lfs_empty(cds_lfs_stack_const_ptr_t s)
 {
        return ___cds_lfs_empty_head(uatomic_load(&s._s->head, CMM_RELAXED));
 }
index 5a2c80f71f347a7994e40310098f13430715dc5c..ca3de8595d7bfd8ee9121e621f8618449ec88ef5 100644 (file)
@@ -36,7 +36,7 @@ void __cds_lfs_init(struct __cds_lfs_stack *s)
        ___cds_lfs_init(s);
 }
 
-bool cds_lfs_empty(cds_lfs_stack_ptr_t s)
+bool cds_lfs_empty(cds_lfs_stack_const_ptr_t s)
 {
        return _cds_lfs_empty(s);
 }
This page took 0.02802 seconds and 4 git commands to generate.