Arax -8d09c51940345c86062e8ef2427c705ae66e5926
A Runtime Framework for Decoupling Applications from Heterogeneous Accelerators
Loading...
Searching...
No Matches
spin/async.c
Go to the documentation of this file.
1#include "async.h"
2
5
8
10{
11 completion->completed = 0;
12}
13
15{
16 __sync_bool_compare_and_swap(&(completion->completed), 0, 1);
17}
18
20{
21 while (!__sync_bool_compare_and_swap(&(completion->completed), 1, 0));
22}
23
25{
26 return completion->completed;
27}
28
30{
31 sem->value = 0;
32}
33
35{
36 return sem->value;
37}
38
40{
41 __sync_fetch_and_add(&(sem->value), 1);
42}
43
45{
46 int value;
47
48 do{
49 value = sem->value;
50 if (value >= 1) {
51 if (__sync_bool_compare_and_swap(&(sem->value), value, value - 1))
52 break;
53 }
54 }while (1);
55}
56
63
68
75
80
85
87{ }
volatile size_t completed
volatile size_t value
async_semaphore_s semaphore
async_completion_s mutex
void async_semaphore_inc(async_semaphore_s *sem)
Definition spin/async.c:39
void async_condition_wait(async_condition_s *cond)
Definition spin/async.c:69
void async_semaphore_init(async_meta_s *meta, async_semaphore_s *sem)
Definition spin/async.c:29
int async_semaphore_value(async_semaphore_s *sem)
Definition spin/async.c:34
void async_condition_unlock(async_condition_s *cond)
Definition spin/async.c:81
void async_condition_notify(async_condition_s *cond)
Definition spin/async.c:76
void async_semaphore_dec(async_semaphore_s *sem)
Definition spin/async.c:44
void async_meta_init_once(async_meta_s *meta, arch_alloc_s *alloc)
Definition spin/async.c:6
void async_completion_init(async_meta_s *meta, async_completion_s *completion)
Definition spin/async.c:9
void async_condition_init(async_meta_s *meta, async_condition_s *cond)
Definition spin/async.c:57
void async_completion_complete(async_completion_s *completion)
Definition spin/async.c:14
void async_meta_init_always(async_meta_s *meta)
Definition spin/async.c:3
int async_completion_check(async_completion_s *completion)
Definition spin/async.c:24
void async_completion_wait(async_completion_s *completion)
Definition spin/async.c:19
void async_condition_lock(async_condition_s *cond)
Definition spin/async.c:64
void async_meta_exit(async_meta_s *meta)
Definition spin/async.c:86