Re: some questions/oddities regarding "exclusive" wait queues

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 21 Jun 2013 17:54:04 -0400, "Robert P. J. Day" said:

>  * The core wakeup function. Non-exclusive wakeups (nr_exclusive == 0) just
>  * wake everything up. If it's an exclusive wakeup (nr_exclusive == small +ve
>  * number) then we wake all the non-exclusive tasks and one exclusive task.

Right.  Clear as mud. ;)

>         list_for_each_entry_safe(curr, next, &q->task_list, task_list) {
>                 unsigned flags = curr->flags;
>
>                 if (curr->func(curr, mode, wake_flags, key) &&
>                                 (flags & WQ_FLAG_EXCLUSIVE) && !--nr_exclusive)
>                         break;
>         }

Oh, gotta love this tricky C. When do we actually hit the 'break;'? :)

>   first, the comment above that function seems wrong -- that routine
> will not simply wake "one exclusive task", it will wake "int
> nr_exclusive" exclusive tasks, will it not?

Hand-emulating with 'nr_exclusive == 3' indicates that in fact you're right.
Does anybody actually call this with a value other than 1?




Attachment: pgp7fkujCKyzl.pgp
Description: PGP signature

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@xxxxxxxxxxxxxxxxx
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux