diff options
author | Mathieu Desnoyers <mathieu.desnoyers@efficios.com> | 2024-02-23 14:49:09 -0500 |
---|---|---|
committer | Mathieu Desnoyers <mathieu.desnoyers@efficios.com> | 2024-02-27 11:16:08 -0500 |
commit | 41149e283a2c25b5bd3840ef77575ff9384d46f5 (patch) | |
tree | 17d24a806b50ce91435c018610c031056bbdc673 | |
parent | 201c1a2a7a84281a2eaacb0f5c93c52d2df6ff0e (diff) | |
download | librseq-41149e283a2c25b5bd3840ef77575ff9384d46f5.tar.gz |
Update rseq critical section identifiers to match pseudo-code
Apply the following mapping:
rseq_cmpeqv_storev -> rseq_load_cbne_store__ptr
rseq_addv -> rseq_load_add_store__ptr
rseq_cmpnev_storeoffp_load -> rseq_load_cbeq_store_add_load_store__ptr
rseq_offset_deref_addv -> rseq_load_add_load_add_store__ptr
rseq_cmpeqv_cmpeqv_storev -> rseq_load_cbne_load_cbne_store__ptr
rseq_cmpeqv_trystorev_storev -> rseq_load_cbne_store_store__ptr
rseq_cmpeqv_trymemcpy_storev -> rseq_load_cbne_memcpy_store__ptr
Summary of the identifier convention:
- Begin with an "rseq_" prefix,
- Followed by the pseudo-code,
- Followed by __ and the type (or eventually types) on which the API
applies (similar to the approach taken for C++ mangling).
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I59f251bcf177779ee5f8eb18c629dcd8bf1d633a
-rw-r--r-- | include/rseq/rseq-arm-bits.h | 12 | ||||
-rw-r--r-- | include/rseq/rseq-arm64-bits.h | 12 | ||||
-rw-r--r-- | include/rseq/rseq-mips-bits.h | 12 | ||||
-rw-r--r-- | include/rseq/rseq-ppc-bits.h | 12 | ||||
-rw-r--r-- | include/rseq/rseq-riscv-bits.h | 18 | ||||
-rw-r--r-- | include/rseq/rseq-s390-bits.h | 16 | ||||
-rw-r--r-- | include/rseq/rseq-x86-bits.h | 38 | ||||
-rw-r--r-- | include/rseq/rseq.h | 58 | ||||
-rw-r--r-- | tests/basic_percpu_ops_test.c | 6 | ||||
-rw-r--r-- | tests/param_test.c | 20 |
10 files changed, 88 insertions, 116 deletions
diff --git a/include/rseq/rseq-arm-bits.h b/include/rseq/rseq-arm-bits.h index 9fbeedd..7eeb845 100644 --- a/include/rseq/rseq-arm-bits.h +++ b/include/rseq/rseq-arm-bits.h @@ -17,7 +17,7 @@ (defined(RSEQ_TEMPLATE_CPU_ID) || defined(RSEQ_TEMPLATE_MM_CID)) static inline __attribute__((always_inline)) -int RSEQ_TEMPLATE_IDENTIFIER(rseq_cmpeqv_storev)(intptr_t *v, intptr_t expect, intptr_t newv, int cpu) +int RSEQ_TEMPLATE_IDENTIFIER(rseq_load_cbne_store__ptr)(intptr_t *v, intptr_t expect, intptr_t newv, int cpu) { RSEQ_INJECT_C(9) @@ -84,7 +84,7 @@ error2: } static inline __attribute__((always_inline)) -int RSEQ_TEMPLATE_IDENTIFIER(rseq_cmpnev_storeoffp_load)(intptr_t *v, intptr_t expectnot, +int RSEQ_TEMPLATE_IDENTIFIER(rseq_load_cbeq_store_add_load_store__ptr)(intptr_t *v, intptr_t expectnot, long voffp, intptr_t *load, int cpu) { RSEQ_INJECT_C(9) @@ -157,7 +157,7 @@ error2: } static inline __attribute__((always_inline)) -int RSEQ_TEMPLATE_IDENTIFIER(rseq_addv)(intptr_t *v, intptr_t count, int cpu) +int RSEQ_TEMPLATE_IDENTIFIER(rseq_load_add_store__ptr)(intptr_t *v, intptr_t count, int cpu) { RSEQ_INJECT_C(9) @@ -210,7 +210,7 @@ error1: } static inline __attribute__((always_inline)) -int RSEQ_TEMPLATE_IDENTIFIER(rseq_cmpeqv_cmpeqv_storev)(intptr_t *v, intptr_t expect, +int RSEQ_TEMPLATE_IDENTIFIER(rseq_load_cbne_load_cbne_store__ptr)(intptr_t *v, intptr_t expect, intptr_t *v2, intptr_t expect2, intptr_t newv, int cpu) { @@ -300,7 +300,7 @@ error3: (defined(RSEQ_TEMPLATE_CPU_ID) || defined(RSEQ_TEMPLATE_MM_CID)) static inline __attribute__((always_inline)) -int RSEQ_TEMPLATE_IDENTIFIER(rseq_cmpeqv_trystorev_storev)(intptr_t *v, intptr_t expect, +int RSEQ_TEMPLATE_IDENTIFIER(rseq_load_cbne_store_store__ptr)(intptr_t *v, intptr_t expect, intptr_t *v2, intptr_t newv2, intptr_t newv, int cpu) { @@ -380,7 +380,7 @@ error2: static inline __attribute__((always_inline)) -int RSEQ_TEMPLATE_IDENTIFIER(rseq_cmpeqv_trymemcpy_storev)(intptr_t *v, intptr_t expect, +int RSEQ_TEMPLATE_IDENTIFIER(rseq_load_cbne_memcpy_store__ptr)(intptr_t *v, intptr_t expect, void *dst, void *src, size_t len, intptr_t newv, int cpu) { diff --git a/include/rseq/rseq-arm64-bits.h b/include/rseq/rseq-arm64-bits.h index 709990f..8dfc853 100644 --- a/include/rseq/rseq-arm64-bits.h +++ b/include/rseq/rseq-arm64-bits.h @@ -18,7 +18,7 @@ (defined(RSEQ_TEMPLATE_CPU_ID) || defined(RSEQ_TEMPLATE_MM_CID)) static inline __attribute__((always_inline)) -int RSEQ_TEMPLATE_IDENTIFIER(rseq_cmpeqv_storev)(intptr_t *v, intptr_t expect, intptr_t newv, int cpu) +int RSEQ_TEMPLATE_IDENTIFIER(rseq_load_cbne_store__ptr)(intptr_t *v, intptr_t expect, intptr_t newv, int cpu) { RSEQ_INJECT_C(9) @@ -75,7 +75,7 @@ error2: } static inline __attribute__((always_inline)) -int RSEQ_TEMPLATE_IDENTIFIER(rseq_cmpnev_storeoffp_load)(intptr_t *v, intptr_t expectnot, +int RSEQ_TEMPLATE_IDENTIFIER(rseq_load_cbeq_store_add_load_store__ptr)(intptr_t *v, intptr_t expectnot, long voffp, intptr_t *load, int cpu) { RSEQ_INJECT_C(9) @@ -137,7 +137,7 @@ error2: } static inline __attribute__((always_inline)) -int RSEQ_TEMPLATE_IDENTIFIER(rseq_addv)(intptr_t *v, intptr_t count, int cpu) +int RSEQ_TEMPLATE_IDENTIFIER(rseq_load_add_store__ptr)(intptr_t *v, intptr_t count, int cpu) { RSEQ_INJECT_C(9) @@ -184,7 +184,7 @@ error1: } static inline __attribute__((always_inline)) -int RSEQ_TEMPLATE_IDENTIFIER(rseq_cmpeqv_cmpeqv_storev)(intptr_t *v, intptr_t expect, +int RSEQ_TEMPLATE_IDENTIFIER(rseq_load_cbne_load_cbne_store__ptr)(intptr_t *v, intptr_t expect, intptr_t *v2, intptr_t expect2, intptr_t newv, int cpu) { @@ -258,7 +258,7 @@ error3: (defined(RSEQ_TEMPLATE_CPU_ID) || defined(RSEQ_TEMPLATE_MM_CID)) static inline __attribute__((always_inline)) -int RSEQ_TEMPLATE_IDENTIFIER(rseq_cmpeqv_trystorev_storev)(intptr_t *v, intptr_t expect, +int RSEQ_TEMPLATE_IDENTIFIER(rseq_load_cbne_store_store__ptr)(intptr_t *v, intptr_t expect, intptr_t *v2, intptr_t newv2, intptr_t newv, int cpu) { @@ -325,7 +325,7 @@ error2: } static inline __attribute__((always_inline)) -int RSEQ_TEMPLATE_IDENTIFIER(rseq_cmpeqv_trymemcpy_storev)(intptr_t *v, intptr_t expect, +int RSEQ_TEMPLATE_IDENTIFIER(rseq_load_cbne_memcpy_store__ptr)(intptr_t *v, intptr_t expect, void *dst, void *src, size_t len, intptr_t newv, int cpu) { diff --git a/include/rseq/rseq-mips-bits.h b/include/rseq/rseq-mips-bits.h index 529f380..dd25580 100644 --- a/include/rseq/rseq-mips-bits.h +++ b/include/rseq/rseq-mips-bits.h @@ -18,7 +18,7 @@ (defined(RSEQ_TEMPLATE_CPU_ID) || defined(RSEQ_TEMPLATE_MM_CID)) static inline __attribute__((always_inline)) -int RSEQ_TEMPLATE_IDENTIFIER(rseq_cmpeqv_storev)(intptr_t *v, intptr_t expect, intptr_t newv, int cpu) +int RSEQ_TEMPLATE_IDENTIFIER(rseq_load_cbne_store__ptr)(intptr_t *v, intptr_t expect, intptr_t newv, int cpu) { RSEQ_INJECT_C(9) @@ -78,7 +78,7 @@ error2: } static inline __attribute__((always_inline)) -int RSEQ_TEMPLATE_IDENTIFIER(rseq_cmpnev_storeoffp_load)(intptr_t *v, intptr_t expectnot, +int RSEQ_TEMPLATE_IDENTIFIER(rseq_load_cbeq_store_add_load_store__ptr)(intptr_t *v, intptr_t expectnot, long voffp, intptr_t *load, int cpu) { RSEQ_INJECT_C(9) @@ -144,7 +144,7 @@ error2: } static inline __attribute__((always_inline)) -int RSEQ_TEMPLATE_IDENTIFIER(rseq_addv)(intptr_t *v, intptr_t count, int cpu) +int RSEQ_TEMPLATE_IDENTIFIER(rseq_load_add_store__ptr)(intptr_t *v, intptr_t count, int cpu) { RSEQ_INJECT_C(9) @@ -194,7 +194,7 @@ error1: } static inline __attribute__((always_inline)) -int RSEQ_TEMPLATE_IDENTIFIER(rseq_cmpeqv_cmpeqv_storev)(intptr_t *v, intptr_t expect, +int RSEQ_TEMPLATE_IDENTIFIER(rseq_load_cbne_load_cbne_store__ptr)(intptr_t *v, intptr_t expect, intptr_t *v2, intptr_t expect2, intptr_t newv, int cpu) { @@ -274,7 +274,7 @@ error3: (defined(RSEQ_TEMPLATE_CPU_ID) || defined(RSEQ_TEMPLATE_MM_CID)) static inline __attribute__((always_inline)) -int RSEQ_TEMPLATE_IDENTIFIER(rseq_cmpeqv_trystorev_storev)(intptr_t *v, intptr_t expect, +int RSEQ_TEMPLATE_IDENTIFIER(rseq_load_cbne_store_store__ptr)(intptr_t *v, intptr_t expect, intptr_t *v2, intptr_t newv2, intptr_t newv, int cpu) { @@ -346,7 +346,7 @@ error2: } static inline __attribute__((always_inline)) -int RSEQ_TEMPLATE_IDENTIFIER(rseq_cmpeqv_trymemcpy_storev)(intptr_t *v, intptr_t expect, +int RSEQ_TEMPLATE_IDENTIFIER(rseq_load_cbne_memcpy_store__ptr)(intptr_t *v, intptr_t expect, void *dst, void *src, size_t len, intptr_t newv, int cpu) { diff --git a/include/rseq/rseq-ppc-bits.h b/include/rseq/rseq-ppc-bits.h index ad8559b..aebb234 100644 --- a/include/rseq/rseq-ppc-bits.h +++ b/include/rseq/rseq-ppc-bits.h @@ -18,7 +18,7 @@ (defined(RSEQ_TEMPLATE_CPU_ID) || defined(RSEQ_TEMPLATE_MM_CID)) static inline __attribute__((always_inline)) -int RSEQ_TEMPLATE_IDENTIFIER(rseq_cmpeqv_storev)(intptr_t *v, intptr_t expect, intptr_t newv, int cpu) +int RSEQ_TEMPLATE_IDENTIFIER(rseq_load_cbne_store__ptr)(intptr_t *v, intptr_t expect, intptr_t newv, int cpu) { RSEQ_INJECT_C(9) @@ -82,7 +82,7 @@ error2: } static inline __attribute__((always_inline)) -int RSEQ_TEMPLATE_IDENTIFIER(rseq_cmpnev_storeoffp_load)(intptr_t *v, intptr_t expectnot, +int RSEQ_TEMPLATE_IDENTIFIER(rseq_load_cbeq_store_add_load_store__ptr)(intptr_t *v, intptr_t expectnot, long voffp, intptr_t *load, int cpu) { RSEQ_INJECT_C(9) @@ -155,7 +155,7 @@ error2: } static inline __attribute__((always_inline)) -int RSEQ_TEMPLATE_IDENTIFIER(rseq_addv)(intptr_t *v, intptr_t count, int cpu) +int RSEQ_TEMPLATE_IDENTIFIER(rseq_load_add_store__ptr)(intptr_t *v, intptr_t count, int cpu) { RSEQ_INJECT_C(9) @@ -210,7 +210,7 @@ error1: } static inline __attribute__((always_inline)) -int RSEQ_TEMPLATE_IDENTIFIER(rseq_cmpeqv_cmpeqv_storev)(intptr_t *v, intptr_t expect, +int RSEQ_TEMPLATE_IDENTIFIER(rseq_load_cbne_load_cbne_store__ptr)(intptr_t *v, intptr_t expect, intptr_t *v2, intptr_t expect2, intptr_t newv, int cpu) { @@ -295,7 +295,7 @@ error3: (defined(RSEQ_TEMPLATE_CPU_ID) || defined(RSEQ_TEMPLATE_MM_CID)) static inline __attribute__((always_inline)) -int RSEQ_TEMPLATE_IDENTIFIER(rseq_cmpeqv_trystorev_storev)(intptr_t *v, intptr_t expect, +int RSEQ_TEMPLATE_IDENTIFIER(rseq_load_cbne_store_store__ptr)(intptr_t *v, intptr_t expect, intptr_t *v2, intptr_t newv2, intptr_t newv, int cpu) { @@ -372,7 +372,7 @@ error2: } static inline __attribute__((always_inline)) -int RSEQ_TEMPLATE_IDENTIFIER(rseq_cmpeqv_trymemcpy_storev)(intptr_t *v, intptr_t expect, +int RSEQ_TEMPLATE_IDENTIFIER(rseq_load_cbne_memcpy_store__ptr)(intptr_t *v, intptr_t expect, void *dst, void *src, size_t len, intptr_t newv, int cpu) { diff --git a/include/rseq/rseq-riscv-bits.h b/include/rseq/rseq-riscv-bits.h index 467781b..2afcc5a 100644 --- a/include/rseq/rseq-riscv-bits.h +++ b/include/rseq/rseq-riscv-bits.h @@ -13,7 +13,7 @@ (defined(RSEQ_TEMPLATE_CPU_ID) || defined(RSEQ_TEMPLATE_MM_CID)) static inline __attribute__((always_inline)) -int RSEQ_TEMPLATE_IDENTIFIER(rseq_cmpeqv_storev)(intptr_t *v, intptr_t expect, intptr_t newv, int cpu) +int RSEQ_TEMPLATE_IDENTIFIER(rseq_load_cbne_store__ptr)(intptr_t *v, intptr_t expect, intptr_t newv, int cpu) { RSEQ_INJECT_C(9) @@ -66,7 +66,7 @@ error2: } static inline __attribute__((always_inline)) -int RSEQ_TEMPLATE_IDENTIFIER(rseq_cmpnev_storeoffp_load)(intptr_t *v, intptr_t expectnot, +int RSEQ_TEMPLATE_IDENTIFIER(rseq_load_cbeq_store_add_load_store__ptr)(intptr_t *v, intptr_t expectnot, off_t voffp, intptr_t *load, int cpu) { RSEQ_INJECT_C(9) @@ -123,7 +123,7 @@ error2: } static inline __attribute__((always_inline)) -int RSEQ_TEMPLATE_IDENTIFIER(rseq_addv)(intptr_t *v, intptr_t count, int cpu) +int RSEQ_TEMPLATE_IDENTIFIER(rseq_load_add_store__ptr)(intptr_t *v, intptr_t count, int cpu) { RSEQ_INJECT_C(9) @@ -167,7 +167,7 @@ error1: } static inline __attribute__((always_inline)) -int RSEQ_TEMPLATE_IDENTIFIER(rseq_cmpeqv_cmpeqv_storev)(intptr_t *v, intptr_t expect, +int RSEQ_TEMPLATE_IDENTIFIER(rseq_load_cbne_load_cbne_store__ptr)(intptr_t *v, intptr_t expect, intptr_t *v2, intptr_t expect2, intptr_t newv, int cpu) { @@ -231,12 +231,8 @@ error3: #define RSEQ_ARCH_HAS_OFFSET_DEREF_ADDV -/* - * pval = *(ptr+off) - * *pval += inc; - */ static inline __attribute__((always_inline)) -int RSEQ_TEMPLATE_IDENTIFIER(rseq_offset_deref_addv)(intptr_t *ptr, off_t off, intptr_t inc, int cpu) +int RSEQ_TEMPLATE_IDENTIFIER(rseq_load_add_load_add_store__ptr)(intptr_t *ptr, off_t off, intptr_t inc, int cpu) { RSEQ_INJECT_C(9) @@ -285,7 +281,7 @@ error1: (defined(RSEQ_TEMPLATE_CPU_ID) || defined(RSEQ_TEMPLATE_MM_CID)) static inline __attribute__((always_inline)) -int RSEQ_TEMPLATE_IDENTIFIER(rseq_cmpeqv_trystorev_storev)(intptr_t *v, intptr_t expect, +int RSEQ_TEMPLATE_IDENTIFIER(rseq_load_cbne_store_store__ptr)(intptr_t *v, intptr_t expect, intptr_t *v2, intptr_t newv2, intptr_t newv, int cpu) { @@ -348,7 +344,7 @@ error2: } static inline __attribute__((always_inline)) -int RSEQ_TEMPLATE_IDENTIFIER(rseq_cmpeqv_trymemcpy_storev)(intptr_t *v, intptr_t expect, +int RSEQ_TEMPLATE_IDENTIFIER(rseq_load_cbne_memcpy_store__ptr)(intptr_t *v, intptr_t expect, void *dst, void *src, size_t len, intptr_t newv, int cpu) { diff --git a/include/rseq/rseq-s390-bits.h b/include/rseq/rseq-s390-bits.h index e94f602..0d687f0 100644 --- a/include/rseq/rseq-s390-bits.h +++ b/include/rseq/rseq-s390-bits.h @@ -13,7 +13,7 @@ (defined(RSEQ_TEMPLATE_CPU_ID) || defined(RSEQ_TEMPLATE_MM_CID)) static inline __attribute__((always_inline)) -int RSEQ_TEMPLATE_IDENTIFIER(rseq_cmpeqv_storev)(intptr_t *v, intptr_t expect, intptr_t newv, int cpu) +int RSEQ_TEMPLATE_IDENTIFIER(rseq_load_cbne_store__ptr)(intptr_t *v, intptr_t expect, intptr_t newv, int cpu) { RSEQ_INJECT_C(9) @@ -75,12 +75,8 @@ error2: #endif } -/* - * Compare @v against @expectnot. When it does _not_ match, load @v - * into @load, and store the content of *@v + voffp into @v. - */ static inline __attribute__((always_inline)) -int RSEQ_TEMPLATE_IDENTIFIER(rseq_cmpnev_storeoffp_load)(intptr_t *v, intptr_t expectnot, +int RSEQ_TEMPLATE_IDENTIFIER(rseq_load_cbeq_store_add_load_store__ptr)(intptr_t *v, intptr_t expectnot, long voffp, intptr_t *load, int cpu) { RSEQ_INJECT_C(9) @@ -151,7 +147,7 @@ error2: } static inline __attribute__((always_inline)) -int RSEQ_TEMPLATE_IDENTIFIER(rseq_addv)(intptr_t *v, intptr_t count, int cpu) +int RSEQ_TEMPLATE_IDENTIFIER(rseq_load_add_store__ptr)(intptr_t *v, intptr_t count, int cpu) { RSEQ_INJECT_C(9) @@ -203,7 +199,7 @@ error1: } static inline __attribute__((always_inline)) -int RSEQ_TEMPLATE_IDENTIFIER(rseq_cmpeqv_cmpeqv_storev)(intptr_t *v, intptr_t expect, +int RSEQ_TEMPLATE_IDENTIFIER(rseq_load_cbne_load_cbne_store__ptr)(intptr_t *v, intptr_t expect, intptr_t *v2, intptr_t expect2, intptr_t newv, int cpu) { @@ -288,7 +284,7 @@ error3: /* s390 is TSO. */ static inline __attribute__((always_inline)) -int RSEQ_TEMPLATE_IDENTIFIER(rseq_cmpeqv_trystorev_storev)(intptr_t *v, intptr_t expect, +int RSEQ_TEMPLATE_IDENTIFIER(rseq_load_cbne_store_store__ptr)(intptr_t *v, intptr_t expect, intptr_t *v2, intptr_t newv2, intptr_t newv, int cpu) { @@ -361,7 +357,7 @@ error2: /* s390 is TSO. */ static inline __attribute__((always_inline)) -int RSEQ_TEMPLATE_IDENTIFIER(rseq_cmpeqv_trymemcpy_storev)(intptr_t *v, intptr_t expect, +int RSEQ_TEMPLATE_IDENTIFIER(rseq_load_cbne_memcpy_store__ptr)(intptr_t *v, intptr_t expect, void *dst, void *src, size_t len, intptr_t newv, int cpu) { diff --git a/include/rseq/rseq-x86-bits.h b/include/rseq/rseq-x86-bits.h index 937092e..2bfa851 100644 --- a/include/rseq/rseq-x86-bits.h +++ b/include/rseq/rseq-x86-bits.h @@ -18,7 +18,7 @@ (defined(RSEQ_TEMPLATE_CPU_ID) || defined(RSEQ_TEMPLATE_MM_CID)) static inline __attribute__((always_inline)) -int RSEQ_TEMPLATE_IDENTIFIER(rseq_cmpeqv_storev)(intptr_t *v, intptr_t expect, intptr_t newv, int cpu) +int RSEQ_TEMPLATE_IDENTIFIER(rseq_load_cbne_store__ptr)(intptr_t *v, intptr_t expect, intptr_t newv, int cpu) { RSEQ_INJECT_C(9) @@ -78,12 +78,8 @@ error2: #endif } -/* - * Compare @v against @expectnot. When it does _not_ match, load @v - * into @load, and store the content of *@v + voffp into @v. - */ static inline __attribute__((always_inline)) -int RSEQ_TEMPLATE_IDENTIFIER(rseq_cmpnev_storeoffp_load)(intptr_t *v, intptr_t expectnot, +int RSEQ_TEMPLATE_IDENTIFIER(rseq_load_cbeq_store_add_load_store__ptr)(intptr_t *v, intptr_t expectnot, long voffp, intptr_t *load, int cpu) { RSEQ_INJECT_C(9) @@ -152,7 +148,7 @@ error2: } static inline __attribute__((always_inline)) -int RSEQ_TEMPLATE_IDENTIFIER(rseq_addv)(intptr_t *v, intptr_t count, int cpu) +int RSEQ_TEMPLATE_IDENTIFIER(rseq_load_add_store__ptr)(intptr_t *v, intptr_t count, int cpu) { RSEQ_INJECT_C(9) @@ -201,12 +197,8 @@ error1: #define RSEQ_ARCH_HAS_OFFSET_DEREF_ADDV -/* - * pval = *(ptr+off) - * *pval += inc; - */ static inline __attribute__((always_inline)) -int RSEQ_TEMPLATE_IDENTIFIER(rseq_offset_deref_addv)(intptr_t *ptr, long off, intptr_t inc, int cpu) +int RSEQ_TEMPLATE_IDENTIFIER(rseq_load_add_load_add_store__ptr)(intptr_t *ptr, long off, intptr_t inc, int cpu) { RSEQ_INJECT_C(9) @@ -257,7 +249,7 @@ error1: } static inline __attribute__((always_inline)) -int RSEQ_TEMPLATE_IDENTIFIER(rseq_cmpeqv_cmpeqv_storev)(intptr_t *v, intptr_t expect, +int RSEQ_TEMPLATE_IDENTIFIER(rseq_load_cbne_load_cbne_store__ptr)(intptr_t *v, intptr_t expect, intptr_t *v2, intptr_t expect2, intptr_t newv, int cpu) { @@ -339,7 +331,7 @@ error3: (defined(RSEQ_TEMPLATE_CPU_ID) || defined(RSEQ_TEMPLATE_MM_CID)) static inline __attribute__((always_inline)) -int RSEQ_TEMPLATE_IDENTIFIER(rseq_cmpeqv_trystorev_storev)(intptr_t *v, intptr_t expect, +int RSEQ_TEMPLATE_IDENTIFIER(rseq_load_cbne_store_store__ptr)(intptr_t *v, intptr_t expect, intptr_t *v2, intptr_t newv2, intptr_t newv, int cpu) { @@ -409,7 +401,7 @@ error2: } static inline __attribute__((always_inline)) -int RSEQ_TEMPLATE_IDENTIFIER(rseq_cmpeqv_trymemcpy_storev)(intptr_t *v, intptr_t expect, +int RSEQ_TEMPLATE_IDENTIFIER(rseq_load_cbne_memcpy_store__ptr)(intptr_t *v, intptr_t expect, void *dst, void *src, size_t len, intptr_t newv, int cpu) { @@ -530,7 +522,7 @@ error2: (defined(RSEQ_TEMPLATE_CPU_ID) || defined(RSEQ_TEMPLATE_MM_CID)) static inline __attribute__((always_inline)) -int RSEQ_TEMPLATE_IDENTIFIER(rseq_cmpeqv_storev)(intptr_t *v, intptr_t expect, intptr_t newv, int cpu) +int RSEQ_TEMPLATE_IDENTIFIER(rseq_load_cbne_store__ptr)(intptr_t *v, intptr_t expect, intptr_t newv, int cpu) { RSEQ_INJECT_C(9) @@ -590,12 +582,8 @@ error2: #endif } -/* - * Compare @v against @expectnot. When it does _not_ match, load @v - * into @load, and store the content of *@v + voffp into @v. - */ static inline __attribute__((always_inline)) -int RSEQ_TEMPLATE_IDENTIFIER(rseq_cmpnev_storeoffp_load)(intptr_t *v, intptr_t expectnot, +int RSEQ_TEMPLATE_IDENTIFIER(rseq_load_cbeq_store_add_load_store__ptr)(intptr_t *v, intptr_t expectnot, long voffp, intptr_t *load, int cpu) { RSEQ_INJECT_C(9) @@ -664,7 +652,7 @@ error2: } static inline __attribute__((always_inline)) -int RSEQ_TEMPLATE_IDENTIFIER(rseq_addv)(intptr_t *v, intptr_t count, int cpu) +int RSEQ_TEMPLATE_IDENTIFIER(rseq_load_add_store__ptr)(intptr_t *v, intptr_t count, int cpu) { RSEQ_INJECT_C(9) @@ -712,7 +700,7 @@ error1: } static inline __attribute__((always_inline)) -int RSEQ_TEMPLATE_IDENTIFIER(rseq_cmpeqv_cmpeqv_storev)(intptr_t *v, intptr_t expect, +int RSEQ_TEMPLATE_IDENTIFIER(rseq_load_cbne_load_cbne_store__ptr)(intptr_t *v, intptr_t expect, intptr_t *v2, intptr_t expect2, intptr_t newv, int cpu) { @@ -795,7 +783,7 @@ error3: (defined(RSEQ_TEMPLATE_CPU_ID) || defined(RSEQ_TEMPLATE_MM_CID)) static inline __attribute__((always_inline)) -int RSEQ_TEMPLATE_IDENTIFIER(rseq_cmpeqv_trystorev_storev)(intptr_t *v, intptr_t expect, +int RSEQ_TEMPLATE_IDENTIFIER(rseq_load_cbne_store_store__ptr)(intptr_t *v, intptr_t expect, intptr_t *v2, intptr_t newv2, intptr_t newv, int cpu) { @@ -872,7 +860,7 @@ error2: /* TODO: implement a faster memcpy. */ static inline __attribute__((always_inline)) -int RSEQ_TEMPLATE_IDENTIFIER(rseq_cmpeqv_trymemcpy_storev)(intptr_t *v, intptr_t expect, +int RSEQ_TEMPLATE_IDENTIFIER(rseq_load_cbne_memcpy_store__ptr)(intptr_t *v, intptr_t expect, void *dst, void *src, size_t len, intptr_t newv, int cpu) { diff --git a/include/rseq/rseq.h b/include/rseq/rseq.h index 222c36a..520005b 100644 --- a/include/rseq/rseq.h +++ b/include/rseq/rseq.h @@ -275,7 +275,7 @@ static inline void rseq_prepare_unload(void) #include "rseq-pseudocode.h" static inline __attribute__((always_inline)) -int rseq_cmpeqv_storev(enum rseq_mo rseq_mo, enum rseq_percpu_mode percpu_mode, +int rseq_load_cbne_store__ptr(enum rseq_mo rseq_mo, enum rseq_percpu_mode percpu_mode, intptr_t *v, intptr_t expect, intptr_t newv, int cpu) { @@ -283,20 +283,16 @@ int rseq_cmpeqv_storev(enum rseq_mo rseq_mo, enum rseq_percpu_mode percpu_mode, return -1; switch (percpu_mode) { case RSEQ_PERCPU_CPU_ID: - return rseq_cmpeqv_storev_relaxed_cpu_id(v, expect, newv, cpu); + return rseq_load_cbne_store__ptr_relaxed_cpu_id(v, expect, newv, cpu); case RSEQ_PERCPU_MM_CID: - return rseq_cmpeqv_storev_relaxed_mm_cid(v, expect, newv, cpu); + return rseq_load_cbne_store__ptr_relaxed_mm_cid(v, expect, newv, cpu); default: return -1; } } -/* - * Compare @v against @expectnot. When it does _not_ match, load @v - * into @load, and store the content of *@v + voffp into @v. - */ static inline __attribute__((always_inline)) -int rseq_cmpnev_storeoffp_load(enum rseq_mo rseq_mo, enum rseq_percpu_mode percpu_mode, +int rseq_load_cbeq_store_add_load_store__ptr(enum rseq_mo rseq_mo, enum rseq_percpu_mode percpu_mode, intptr_t *v, intptr_t expectnot, long voffp, intptr_t *load, int cpu) { @@ -304,46 +300,42 @@ int rseq_cmpnev_storeoffp_load(enum rseq_mo rseq_mo, enum rseq_percpu_mode percp return -1; switch (percpu_mode) { case RSEQ_PERCPU_CPU_ID: - return rseq_cmpnev_storeoffp_load_relaxed_cpu_id(v, expectnot, voffp, load, cpu); + return rseq_load_cbeq_store_add_load_store__ptr_relaxed_cpu_id(v, expectnot, voffp, load, cpu); case RSEQ_PERCPU_MM_CID: - return rseq_cmpnev_storeoffp_load_relaxed_mm_cid(v, expectnot, voffp, load, cpu); + return rseq_load_cbeq_store_add_load_store__ptr_relaxed_mm_cid(v, expectnot, voffp, load, cpu); default: return -1; } } static inline __attribute__((always_inline)) -int rseq_addv(enum rseq_mo rseq_mo, enum rseq_percpu_mode percpu_mode, +int rseq_load_add_store__ptr(enum rseq_mo rseq_mo, enum rseq_percpu_mode percpu_mode, intptr_t *v, intptr_t count, int cpu) { if (rseq_mo != RSEQ_MO_RELAXED) return -1; switch (percpu_mode) { case RSEQ_PERCPU_CPU_ID: - return rseq_addv_relaxed_cpu_id(v, count, cpu); + return rseq_load_add_store__ptr_relaxed_cpu_id(v, count, cpu); case RSEQ_PERCPU_MM_CID: - return rseq_addv_relaxed_mm_cid(v, count, cpu); + return rseq_load_add_store__ptr_relaxed_mm_cid(v, count, cpu); default: return -1; } } #ifdef RSEQ_ARCH_HAS_OFFSET_DEREF_ADDV -/* - * pval = *(ptr+off) - * *pval += inc; - */ static inline __attribute__((always_inline)) -int rseq_offset_deref_addv(enum rseq_mo rseq_mo, enum rseq_percpu_mode percpu_mode, +int rseq_load_add_load_add_store__ptr(enum rseq_mo rseq_mo, enum rseq_percpu_mode percpu_mode, intptr_t *ptr, long off, intptr_t inc, int cpu) { if (rseq_mo != RSEQ_MO_RELAXED) return -1; switch (percpu_mode) { case RSEQ_PERCPU_CPU_ID: - return rseq_offset_deref_addv_relaxed_cpu_id(ptr, off, inc, cpu); + return rseq_load_add_load_add_store__ptr_relaxed_cpu_id(ptr, off, inc, cpu); case RSEQ_PERCPU_MM_CID: - return rseq_offset_deref_addv_relaxed_mm_cid(ptr, off, inc, cpu); + return rseq_load_add_load_add_store__ptr_relaxed_mm_cid(ptr, off, inc, cpu); default: return -1; } @@ -351,7 +343,7 @@ int rseq_offset_deref_addv(enum rseq_mo rseq_mo, enum rseq_percpu_mode percpu_mo #endif static inline __attribute__((always_inline)) -int rseq_cmpeqv_trystorev_storev(enum rseq_mo rseq_mo, enum rseq_percpu_mode percpu_mode, +int rseq_load_cbne_store_store__ptr(enum rseq_mo rseq_mo, enum rseq_percpu_mode percpu_mode, intptr_t *v, intptr_t expect, intptr_t *v2, intptr_t newv2, intptr_t newv, int cpu) @@ -360,18 +352,18 @@ int rseq_cmpeqv_trystorev_storev(enum rseq_mo rseq_mo, enum rseq_percpu_mode per case RSEQ_MO_RELAXED: switch (percpu_mode) { case RSEQ_PERCPU_CPU_ID: - return rseq_cmpeqv_trystorev_storev_relaxed_cpu_id(v, expect, v2, newv2, newv, cpu); + return rseq_load_cbne_store_store__ptr_relaxed_cpu_id(v, expect, v2, newv2, newv, cpu); case RSEQ_PERCPU_MM_CID: - return rseq_cmpeqv_trystorev_storev_relaxed_mm_cid(v, expect, v2, newv2, newv, cpu); + return rseq_load_cbne_store_store__ptr_relaxed_mm_cid(v, expect, v2, newv2, newv, cpu); default: return -1; } case RSEQ_MO_RELEASE: switch (percpu_mode) { case RSEQ_PERCPU_CPU_ID: - return rseq_cmpeqv_trystorev_storev_release_cpu_id(v, expect, v2, newv2, newv, cpu); + return rseq_load_cbne_store_store__ptr_release_cpu_id(v, expect, v2, newv2, newv, cpu); case RSEQ_PERCPU_MM_CID: - return rseq_cmpeqv_trystorev_storev_release_mm_cid(v, expect, v2, newv2, newv, cpu); + return rseq_load_cbne_store_store__ptr_release_mm_cid(v, expect, v2, newv2, newv, cpu); default: return -1; } @@ -385,7 +377,7 @@ int rseq_cmpeqv_trystorev_storev(enum rseq_mo rseq_mo, enum rseq_percpu_mode per } static inline __attribute__((always_inline)) -int rseq_cmpeqv_cmpeqv_storev(enum rseq_mo rseq_mo, enum rseq_percpu_mode percpu_mode, +int rseq_load_cbne_load_cbne_store__ptr(enum rseq_mo rseq_mo, enum rseq_percpu_mode percpu_mode, intptr_t *v, intptr_t expect, intptr_t *v2, intptr_t expect2, intptr_t newv, int cpu) @@ -394,16 +386,16 @@ int rseq_cmpeqv_cmpeqv_storev(enum rseq_mo rseq_mo, enum rseq_percpu_mode percpu return -1; switch (percpu_mode) { case RSEQ_PERCPU_CPU_ID: - return rseq_cmpeqv_cmpeqv_storev_relaxed_cpu_id(v, expect, v2, expect2, newv, cpu); + return rseq_load_cbne_load_cbne_store__ptr_relaxed_cpu_id(v, expect, v2, expect2, newv, cpu); case RSEQ_PERCPU_MM_CID: - return rseq_cmpeqv_cmpeqv_storev_relaxed_mm_cid(v, expect, v2, expect2, newv, cpu); + return rseq_load_cbne_load_cbne_store__ptr_relaxed_mm_cid(v, expect, v2, expect2, newv, cpu); default: return -1; } } static inline __attribute__((always_inline)) -int rseq_cmpeqv_trymemcpy_storev(enum rseq_mo rseq_mo, enum rseq_percpu_mode percpu_mode, +int rseq_load_cbne_memcpy_store__ptr(enum rseq_mo rseq_mo, enum rseq_percpu_mode percpu_mode, intptr_t *v, intptr_t expect, void *dst, void *src, size_t len, intptr_t newv, int cpu) @@ -412,18 +404,18 @@ int rseq_cmpeqv_trymemcpy_storev(enum rseq_mo rseq_mo, enum rseq_percpu_mode per case RSEQ_MO_RELAXED: switch (percpu_mode) { case RSEQ_PERCPU_CPU_ID: - return rseq_cmpeqv_trymemcpy_storev_relaxed_cpu_id(v, expect, dst, src, len, newv, cpu); + return rseq_load_cbne_memcpy_store__ptr_relaxed_cpu_id(v, expect, dst, src, len, newv, cpu); case RSEQ_PERCPU_MM_CID: - return rseq_cmpeqv_trymemcpy_storev_relaxed_mm_cid(v, expect, dst, src, len, newv, cpu); + return rseq_load_cbne_memcpy_store__ptr_relaxed_mm_cid(v, expect, dst, src, len, newv, cpu); default: return -1; } case RSEQ_MO_RELEASE: switch (percpu_mode) { case RSEQ_PERCPU_CPU_ID: - return rseq_cmpeqv_trymemcpy_storev_release_cpu_id(v, expect, dst, src, len, newv, cpu); + return rseq_load_cbne_memcpy_store__ptr_release_cpu_id(v, expect, dst, src, len, newv, cpu); case RSEQ_PERCPU_MM_CID: - return rseq_cmpeqv_trymemcpy_storev_release_mm_cid(v, expect, dst, src, len, newv, cpu); + return rseq_load_cbne_memcpy_store__ptr_release_mm_cid(v, expect, dst, src, len, newv, cpu); default: return -1; } diff --git a/tests/basic_percpu_ops_test.c b/tests/basic_percpu_ops_test.c index d40729c..ff26009 100644 --- a/tests/basic_percpu_ops_test.c +++ b/tests/basic_percpu_ops_test.c @@ -97,7 +97,7 @@ static int rseq_this_cpu_lock(struct percpu_lock *lock) int ret; cpu = get_current_cpu_id(); - ret = rseq_cmpeqv_storev(RSEQ_MO_RELAXED, RSEQ_PERCPU, + ret = rseq_load_cbne_store__ptr(RSEQ_MO_RELAXED, RSEQ_PERCPU, &lock->c[cpu].v, 0, 1, cpu); if (rseq_likely(!ret)) break; @@ -196,7 +196,7 @@ static void this_cpu_list_push(struct percpu_list *list, newval = (intptr_t)node; targetptr = (intptr_t *)&list->c[cpu].head; node->next = (struct percpu_list_node *)expect; - ret = rseq_cmpeqv_storev(RSEQ_MO_RELAXED, RSEQ_PERCPU, + ret = rseq_load_cbne_store__ptr(RSEQ_MO_RELAXED, RSEQ_PERCPU, targetptr, expect, newval, cpu); if (rseq_likely(!ret)) break; @@ -225,7 +225,7 @@ static struct percpu_list_node *this_cpu_list_pop(struct percpu_list *list, expectnot = (intptr_t)NULL; offset = offsetof(struct percpu_list_node, next); load = (intptr_t *)&head; - ret = rseq_cmpnev_storeoffp_load(RSEQ_MO_RELAXED, RSEQ_PERCPU, + ret = rseq_load_cbeq_store_add_load_store__ptr(RSEQ_MO_RELAXED, RSEQ_PERCPU, targetptr, expectnot, offset, load, cpu); if (rseq_likely(!ret)) { diff --git a/tests/param_test.c b/tests/param_test.c index e200356..9751667 100644 --- a/tests/param_test.c +++ b/tests/param_test.c @@ -439,7 +439,7 @@ static int rseq_this_cpu_lock(struct percpu_lock *lock) getpid(), (int) rseq_gettid(), rseq_current_cpu_raw(), cpu); abort(); } - ret = rseq_cmpeqv_storev(RSEQ_MO_RELAXED, RSEQ_PERCPU, + ret = rseq_load_cbne_store__ptr(RSEQ_MO_RELAXED, RSEQ_PERCPU, &lock->c[cpu].v, 0, 1, cpu); if (rseq_likely(!ret)) @@ -558,7 +558,7 @@ static void *test_percpu_inc_thread(void *arg) int cpu; cpu = get_current_cpu_id(); - ret = rseq_addv(RSEQ_MO_RELAXED, RSEQ_PERCPU, + ret = rseq_load_add_store__ptr(RSEQ_MO_RELAXED, RSEQ_PERCPU, &data->c[cpu].count, 1, cpu); } while (rseq_unlikely(ret)); #ifndef BENCHMARK @@ -634,7 +634,7 @@ static void this_cpu_list_push(struct percpu_list *list, newval = (intptr_t)node; targetptr = (intptr_t *)&list->c[cpu].head; node->next = (struct percpu_list_node *)expect; - ret = rseq_cmpeqv_storev(RSEQ_MO_RELAXED, RSEQ_PERCPU, + ret = rseq_load_cbne_store__ptr(RSEQ_MO_RELAXED, RSEQ_PERCPU, targetptr, expect, newval, cpu); if (rseq_likely(!ret)) break; @@ -666,7 +666,7 @@ static struct percpu_list_node *this_cpu_list_pop(struct percpu_list *list, expectnot = (intptr_t)NULL; offset = offsetof(struct percpu_list_node, next); load = (intptr_t *)&head; - ret = rseq_cmpnev_storeoffp_load(RSEQ_MO_RELAXED, RSEQ_PERCPU, + ret = rseq_load_cbeq_store_add_load_store__ptr(RSEQ_MO_RELAXED, RSEQ_PERCPU, targetptr, expectnot, offset, load, cpu); if (rseq_likely(!ret)) { @@ -814,7 +814,7 @@ static bool this_cpu_buffer_push(struct percpu_buffer *buffer, targetptr_spec = (intptr_t *)&buffer->c[cpu].array[offset]; newval_final = offset + 1; targetptr_final = &buffer->c[cpu].offset; - ret = rseq_cmpeqv_trystorev_storev(opt_mo, RSEQ_PERCPU, + ret = rseq_load_cbne_store_store__ptr(opt_mo, RSEQ_PERCPU, targetptr_final, offset, targetptr_spec, newval_spec, newval_final, cpu); if (rseq_likely(!ret)) { @@ -849,7 +849,7 @@ static struct percpu_buffer_node *this_cpu_buffer_pop(struct percpu_buffer *buff head = RSEQ_READ_ONCE(buffer->c[cpu].array[offset - 1]); newval = offset - 1; targetptr = (intptr_t *)&buffer->c[cpu].offset; - ret = rseq_cmpeqv_cmpeqv_storev(RSEQ_MO_RELAXED, RSEQ_PERCPU, + ret = rseq_load_cbne_load_cbne_store__ptr(RSEQ_MO_RELAXED, RSEQ_PERCPU, targetptr, offset, (intptr_t *)&buffer->c[cpu].array[offset - 1], (intptr_t)head, newval, cpu); @@ -1019,7 +1019,7 @@ static bool this_cpu_memcpy_buffer_push(struct percpu_memcpy_buffer *buffer, copylen = sizeof(item); newval_final = offset + 1; targetptr_final = &buffer->c[cpu].offset; - ret = rseq_cmpeqv_trymemcpy_storev( + ret = rseq_load_cbne_memcpy_store__ptr( opt_mo, RSEQ_PERCPU, targetptr_final, offset, destptr, srcptr, copylen, @@ -1059,7 +1059,7 @@ static bool this_cpu_memcpy_buffer_pop(struct percpu_memcpy_buffer *buffer, copylen = sizeof(*item); newval_final = offset - 1; targetptr_final = &buffer->c[cpu].offset; - ret = rseq_cmpeqv_trymemcpy_storev(RSEQ_MO_RELAXED, RSEQ_PERCPU, + ret = rseq_load_cbne_memcpy_store__ptr(RSEQ_MO_RELAXED, RSEQ_PERCPU, targetptr_final, offset, destptr, srcptr, copylen, newval_final, cpu); if (rseq_likely(!ret)) { @@ -1281,7 +1281,7 @@ void *test_membarrier_worker_thread(void *arg) do { int cpu = get_current_cpu_id(); - ret = rseq_offset_deref_addv(RSEQ_MO_RELAXED, RSEQ_PERCPU, + ret = rseq_load_add_load_add_store__ptr(RSEQ_MO_RELAXED, RSEQ_PERCPU, &args->percpu_list_ptr, sizeof(struct percpu_list_entry) * cpu, 1, cpu); } while (rseq_unlikely(ret)); @@ -1472,7 +1472,7 @@ void test_membarrier(void) "Skipping membarrier test.\n"); return; } - fprintf(stderr, "rseq_offset_deref_addv is not implemented on this architecture. " + fprintf(stderr, "rseq_load_add_load_add_store__ptr is not implemented on this architecture. " "Skipping membarrier test.\n"); } #endif |