Lines Matching refs:barrier
34 ck_barrier_mcs_init(struct ck_barrier_mcs *barrier, unsigned int nthr) in ck_barrier_mcs_init() argument
38 ck_pr_store_uint(&barrier->tid, 0); in ck_barrier_mcs_init()
46 barrier[i].havechild[j] = ((i << 2) + j < nthr - 1) ? ~0 : 0; in ck_barrier_mcs_init()
52 barrier[i].childnotready[j] = barrier[i].havechild[j]; in ck_barrier_mcs_init()
56 barrier[i].parent = (i == 0) ? in ck_barrier_mcs_init()
57 &barrier[i].dummy : in ck_barrier_mcs_init()
58 &barrier[(i - 1) >> 2].childnotready[(i - 1) & 3]; in ck_barrier_mcs_init()
61 barrier[i].children[0] = ((i << 1) + 1 >= nthr) ? in ck_barrier_mcs_init()
62 &barrier[i].dummy : in ck_barrier_mcs_init()
63 &barrier[(i << 1) + 1].parentsense; in ck_barrier_mcs_init()
65 barrier[i].children[1] = ((i << 1) + 2 >= nthr) ? in ck_barrier_mcs_init()
66 &barrier[i].dummy : in ck_barrier_mcs_init()
67 &barrier[(i << 1) + 2].parentsense; in ck_barrier_mcs_init()
69 barrier[i].parentsense = 0; in ck_barrier_mcs_init()
76 ck_barrier_mcs_subscribe(struct ck_barrier_mcs *barrier, struct ck_barrier_mcs_state *state) in ck_barrier_mcs_subscribe() argument
80 state->vpid = ck_pr_faa_uint(&barrier->tid, 1); in ck_barrier_mcs_subscribe()
112 ck_barrier_mcs(struct ck_barrier_mcs *barrier, in ck_barrier_mcs() argument
120 while (ck_barrier_mcs_check_children(barrier[state->vpid].childnotready) == false) in ck_barrier_mcs()
124 ck_barrier_mcs_reinitialize_children(&barrier[state->vpid]); in ck_barrier_mcs()
127 ck_pr_store_uint(barrier[state->vpid].parent, 0); in ck_barrier_mcs()
131 while (ck_pr_load_uint(&barrier[state->vpid].parentsense) != state->sense) in ck_barrier_mcs()
136 ck_pr_store_uint(barrier[state->vpid].children[0], state->sense); in ck_barrier_mcs()
137 ck_pr_store_uint(barrier[state->vpid].children[1], state->sense); in ck_barrier_mcs()