On Wed, Mar 19, 2014 at 05:49:07PM +0100, Oleg Nesterov wrote:
> +static void add_wait_queue_flag(wait_queue_head_t *q, wait_queue_t *wait)
> +{
> +     struct list_head *head = &q->task_list;
> +     wait_queue_t *excl;
> +
> +     if (wait->flags & WQ_FLAG_EXCLUSIVE) {
> +             if (wait->flags & WQ_FLAG_EXCLUSIVE_HEAD) {
> +                     list_for_each_entry(excl, head, task_list)
> +                             if (excl->flags & WQ_FLAG_EXCLUSIVE) {
> +                                     head = &excl->task_list;
> +                                     break;
> +                             }

I prefer an extra pair of { } here, but the main concern would be the
cost of that iteration.

> +             }
> +             /* turn list_add() below into list_add_tail() */
> +             head = head->prev;
> +     }
> +
> +     list_add(&wait->task_list, head);
> +}

Other than that, yes something like that would do I suppose.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to