| 132 | } platform_time_worker_t; |
| 133 | |
| 134 | static void *platform_time_first_call(void *opaque) { |
| 135 | platform_time_worker_t *worker = opaque; |
| 136 | (void)atomic_fetch_add_explicit(worker->ready, 1, memory_order_acq_rel); |
| 137 | while (!atomic_load_explicit(worker->go, memory_order_acquire)) { |
| 138 | atomic_signal_fence(memory_order_seq_cst); |
| 139 | } |
| 140 | worker->value = cbm_now_ns(); |
| 141 | return NULL; |
| 142 | } |
| 143 | |
| 144 | TEST(platform_now_ns_concurrent_first_call) { |
| 145 | cbm_thread_t threads[PLATFORM_TIME_THREADS]; |
nothing calls this directly
no test coverage detected