Skip to content

Commit fed0236

Browse files
committed
Add helgrind and drd annotations to critnib data strcture
1 parent a339b1f commit fed0236

File tree

2 files changed

+8
-0
lines changed

2 files changed

+8
-0
lines changed

src/critnib/critnib.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@
6464
#include "utils_assert.h"
6565
#include "utils_common.h"
6666
#include "utils_concurrency.h"
67+
#include "utils_sanitizers.h"
6768

6869
/*
6970
* A node that has been deleted is left untouched for this many delete
@@ -137,10 +138,12 @@ struct critnib {
137138
* atomic load
138139
*/
139140
static void load(void *src, void *dst) {
141+
utils_annotate_acquire(src);
140142
util_atomic_load_acquire((word *)src, (word *)dst);
141143
}
142144

143145
static void load64(uint64_t *src, uint64_t *dst) {
146+
utils_annotate_acquire((void *)src);
144147
util_atomic_load_acquire(src, dst);
145148
}
146149

@@ -149,6 +152,7 @@ static void load64(uint64_t *src, uint64_t *dst) {
149152
*/
150153
static void store(void *dst, void *src) {
151154
util_atomic_store_release((word *)dst, (word)src);
155+
utils_annotate_release(dst);
152156
}
153157

154158
/*

src/utils/utils_sanitizers.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,8 @@ extern "C" {
113113
static inline void utils_annotate_acquire(void *ptr) {
114114
#if __SANITIZE_THREAD__
115115
__tsan_acquire(ptr);
116+
#elif UMF_VG_HELGRIND_ENABLED || UMF_VG_DRD_ENABLED
117+
ANNOTATE_HAPPENS_AFTER(ptr);
116118
#else
117119
(void)ptr;
118120
#endif
@@ -121,6 +123,8 @@ static inline void utils_annotate_acquire(void *ptr) {
121123
static inline void utils_annotate_release(void *ptr) {
122124
#if __SANITIZE_THREAD__
123125
__tsan_release(ptr);
126+
#elif UMF_VG_HELGRIND_ENABLED || UMF_VG_DRD_ENABLED
127+
ANNOTATE_HAPPENS_BEFORE(ptr);
124128
#else
125129
(void)ptr;
126130
#endif

0 commit comments

Comments
 (0)