CPU_ZERO(&mask);
CPU_SET(crdp->cpu_affinity, &mask);
#if SCHED_SETAFFINITY_ARGS == 2
CPU_ZERO(&mask);
CPU_SET(crdp->cpu_affinity, &mask);
#if SCHED_SETAFFINITY_ARGS == 2
unsigned long cbcount;
struct call_rcu_data *crdp = (struct call_rcu_data *) arg;
int rt = !!(uatomic_read(&crdp->flags) & URCU_CALL_RCU_RT);
unsigned long cbcount;
struct call_rcu_data *crdp = (struct call_rcu_data *) arg;
int rt = !!(uatomic_read(&crdp->flags) & URCU_CALL_RCU_RT);
struct cds_wfcq_node *cbs, *cbs_tmp_n;
enum cds_wfcq_ret splice_ret;
struct cds_wfcq_node *cbs, *cbs_tmp_n;
enum cds_wfcq_ret splice_ret;
cmm_smp_mb__before_uatomic_or();
uatomic_or(&crdp->flags, URCU_CALL_RCU_PAUSED);
while ((uatomic_read(&crdp->flags) & URCU_CALL_RCU_PAUSE) != 0)
cmm_smp_mb__before_uatomic_or();
uatomic_or(&crdp->flags, URCU_CALL_RCU_PAUSED);
while ((uatomic_read(&crdp->flags) & URCU_CALL_RCU_PAUSE) != 0)
uatomic_and(&crdp->flags, ~URCU_CALL_RCU_PAUSED);
cmm_smp_mb__after_uatomic_and();
rcu_register_thread();
uatomic_and(&crdp->flags, ~URCU_CALL_RCU_PAUSED);
cmm_smp_mb__after_uatomic_and();
rcu_register_thread();
crdp->flags = flags;
cds_list_add(&crdp->list, &call_rcu_data_list);
crdp->cpu_affinity = cpu_affinity;
crdp->flags = flags;
cds_list_add(&crdp->list, &call_rcu_data_list);
crdp->cpu_affinity = cpu_affinity;
cmm_smp_mb(); /* Structure initialized before pointer is planted. */
*crdpp = crdp;
ret = pthread_create(&crdp->tid, NULL, call_rcu_thread, crdp);
cmm_smp_mb(); /* Structure initialized before pointer is planted. */
*crdpp = crdp;
ret = pthread_create(&crdp->tid, NULL, call_rcu_thread, crdp);
crdp = get_call_rcu_data();
_call_rcu(head, func, crdp);
crdp = get_call_rcu_data();
_call_rcu(head, func, crdp);
uatomic_or(&crdp->flags, URCU_CALL_RCU_STOP);
wake_call_rcu_thread(crdp);
while ((uatomic_read(&crdp->flags) & URCU_CALL_RCU_STOPPED) == 0)
uatomic_or(&crdp->flags, URCU_CALL_RCU_STOP);
wake_call_rcu_thread(crdp);
while ((uatomic_read(&crdp->flags) & URCU_CALL_RCU_STOPPED) == 0)
}
if (!cds_wfcq_empty(&crdp->cbs_head, &crdp->cbs_tail)) {
/* Create default call rcu data if need be */
}
if (!cds_wfcq_empty(&crdp->cbs_head, &crdp->cbs_tail)) {
/* Create default call rcu data if need be */
}
cds_list_for_each_entry(crdp, &call_rcu_data_list, list) {
while ((uatomic_read(&crdp->flags) & URCU_CALL_RCU_PAUSED) == 0)
}
cds_list_for_each_entry(crdp, &call_rcu_data_list, list) {
while ((uatomic_read(&crdp->flags) & URCU_CALL_RCU_PAUSED) == 0)
uatomic_and(&crdp->flags, ~URCU_CALL_RCU_PAUSE);
cds_list_for_each_entry(crdp, &call_rcu_data_list, list) {
while ((uatomic_read(&crdp->flags) & URCU_CALL_RCU_PAUSED) != 0)
uatomic_and(&crdp->flags, ~URCU_CALL_RCU_PAUSE);
cds_list_for_each_entry(crdp, &call_rcu_data_list, list) {
while ((uatomic_read(&crdp->flags) & URCU_CALL_RCU_PAUSED) != 0)