- if (&crdp->cbs.head != _CMM_LOAD_SHARED(crdp->cbs.tail)) {
- while ((cbs = _CMM_LOAD_SHARED(crdp->cbs.head)) == NULL)
- poll(NULL, 0, 1);
- _CMM_STORE_SHARED(crdp->cbs.head, NULL);
- cbs_tail = (struct cds_wfq_node **)
- uatomic_xchg(&crdp->cbs.tail, &crdp->cbs.head);
+ struct cds_wfcq_head cbs_tmp_head;
+ struct cds_wfcq_tail cbs_tmp_tail;
+ struct cds_wfcq_node *cbs, *cbs_tmp_n;
+
+ cds_wfcq_init(&cbs_tmp_head, &cbs_tmp_tail);
+ __cds_wfcq_splice_blocking(&cbs_tmp_head, &cbs_tmp_tail,
+ &crdp->cbs_head, &crdp->cbs_tail);
+ if (!cds_wfcq_empty(&cbs_tmp_head, &cbs_tmp_tail)) {