Lines Matching refs:ec

18 	struct ck_ec32 *ec;  member
24 struct ck_ec64 *ec; member
35 ck_ec32_wake(struct ck_ec32 *ec, const struct ck_ec_ops *ops) in ck_ec32_wake() argument
38 ck_pr_and_32(&ec->counter, (1U << 31) - 1); in ck_ec32_wake()
39 ops->wake32(ops, &ec->counter); in ck_ec32_wake()
44 ck_ec32_wait_slow(struct ck_ec32 *ec, in ck_ec32_wait_slow() argument
49 return ck_ec32_wait_pred_slow(ec, ops, old_value, in ck_ec32_wait_slow()
55 ck_ec64_wake(struct ck_ec64 *ec, const struct ck_ec_ops *ops) in ck_ec64_wake() argument
57 ck_pr_and_64(&ec->counter, ~1); in ck_ec64_wake()
58 ops->wake64(ops, &ec->counter); in ck_ec64_wake()
63 ck_ec64_wait_slow(struct ck_ec64 *ec, in ck_ec64_wait_slow() argument
68 return ck_ec64_wait_pred_slow(ec, ops, old_value, in ck_ec64_wait_slow()
202 static uint##W##_t ck_ec##W##_wait_easy(struct ck_ec##W* ec, \
206 uint##W##_t current = ck_pr_load_##W(&ec->counter); \
215 current = ck_pr_load_##W(&ec->counter); \
234 static bool ck_ec##W##_upgrade(struct ck_ec##W* ec, \
255 return (ck_pr_cas_##W##_value(&ec->counter, \
278 const struct ck_ec32 *ec = state->ec; in ck_ec32_wait_slow_once() local
281 wait_state->ops->wait32(wait_state, &ec->counter, in ck_ec32_wait_slow_once()
283 return ck_pr_load_32(&ec->counter) != flagged_word; in ck_ec32_wait_slow_once()
293 const struct ck_ec64 *ec = state->ec; in ck_ec64_wait_slow_once() local
300 if (ck_pr_load_64(&ec->counter) != flagged_word) { in ck_ec64_wait_slow_once()
304 wait_state->ops->wait64(wait_state, &ec->counter, in ck_ec64_wait_slow_once()
306 return ck_pr_load_64(&ec->counter) != flagged_word; in ck_ec64_wait_slow_once()
315 #define WAIT_SLOW_BODY(W, ec, ops, pred, data, deadline_ptr, \ argument
323 .ec = ec, \
338 current = ck_ec##W##_wait_easy(ec, ops, unflagged); \
346 ck_ec##W##_upgrade(ec, current, \
360 current = ck_ec##W##_wait_easy(ec, ops, flagged); \
374 if (ck_ec##W##_value(ec) != old_value) { \
384 ck_ec32_wait_pred_slow(struct ck_ec32 *ec, in ck_ec32_wait_pred_slow() argument
395 if (CK_CC_UNLIKELY(ck_ec32_value(ec) != old_value)) { in ck_ec32_wait_pred_slow()
399 WAIT_SLOW_BODY(32, ec, ops, pred, data, deadline_ptr, in ck_ec32_wait_pred_slow()
405 ck_ec64_wait_pred_slow(struct ck_ec64 *ec, in ck_ec64_wait_pred_slow() argument
416 if (CK_CC_UNLIKELY(ck_ec64_value(ec) != old_value)) { in ck_ec64_wait_pred_slow()
420 WAIT_SLOW_BODY(64, ec, ops, pred, data, deadline_ptr, in ck_ec64_wait_pred_slow()