mutex_lock(&rcu_defer_mutex);
cds_list_for_each_entry(index, ®istry, list) {
mutex_lock(&rcu_defer_mutex);
cds_list_for_each_entry(index, ®istry, list) {
mutex_lock(&rcu_defer_mutex);
cds_list_for_each_entry(index, ®istry, list) {
mutex_lock(&rcu_defer_mutex);
cds_list_for_each_entry(index, ®istry, list) {
if (unlikely(head - tail >= DEFER_QUEUE_SIZE - 2)) {
assert(head - tail <= DEFER_QUEUE_SIZE);
rcu_defer_barrier_thread();
if (unlikely(head - tail >= DEFER_QUEUE_SIZE - 2)) {
assert(head - tail <= DEFER_QUEUE_SIZE);
rcu_defer_barrier_thread();
* If the data to encode is not aligned or the marker,
* write DQ_FCT_MARK followed by the function pointer.
*/
* If the data to encode is not aligned or the marker,
* write DQ_FCT_MARK followed by the function pointer.
*/
{
int was_empty;
assert(defer_queue.last_head == 0);
assert(defer_queue.q == NULL);
defer_queue.q = malloc(sizeof(void *) * DEFER_QUEUE_SIZE);
{
int was_empty;
assert(defer_queue.last_head == 0);
assert(defer_queue.q == NULL);
defer_queue.q = malloc(sizeof(void *) * DEFER_QUEUE_SIZE);