d46fd38a80a80932775ae58ca7268b0444fe9ad1
1 // SPDX-FileCopyrightText: 2023 Olivier Dion <odion@efficios.com>
3 // SPDX-License-Identifier: GPL-2.0-or-later
5 /* Common states for benchmarks. */
9 #include <urcu/uatomic.h>
11 extern volatile int _test_go
, _test_stop
;
13 static inline void complete_sleep(unsigned int seconds
)
15 while (seconds
!= 0) {
16 seconds
= sleep(seconds
);
20 static inline void begin_test(void)
22 uatomic_store(&_test_go
, 1, CMM_RELEASE
);
25 static inline void end_test(void)
27 uatomic_store(&_test_stop
, 1, CMM_RELAXED
);
30 static inline void test_for(unsigned int duration
)
33 complete_sleep(duration
);
37 static inline void wait_until_go(void)
39 while (!uatomic_load(&_test_go
, CMM_ACQUIRE
))
45 * returns 0 if test should end.
47 static inline int test_duration_write(void)
49 return !uatomic_load(&_test_stop
, CMM_RELAXED
);
52 static inline int test_duration_read(void)
54 return !uatomic_load(&_test_stop
, CMM_RELAXED
);
This page took 0.031908 seconds and 3 git commands to generate.