On Thu, Nov 22, 2018 at 15:20:25 +0800, [email protected] wrote:
> +static uint64_t get_free_request_bitmap(Threads *threads, ThreadLocal
> *thread)
> +{
> + uint64_t request_fill_bitmap, request_done_bitmap, result_bitmap;
> +
> + request_fill_bitmap = atomic_rcu_read(&thread->request_fill_bitmap);
> + request_done_bitmap = atomic_rcu_read(&thread->request_done_bitmap);
> + bitmap_xor(&result_bitmap, &request_fill_bitmap, &request_done_bitmap,
> + threads->thread_requests_nr);
This is not wrong, but it's a big ugly. Instead, I would:
- Introduce bitmap_xor_atomic in a previous patch
- Use bitmap_xor_atomic here, getting rid of the rcu reads
Thanks,
Emilio