|
9 | 9 | #include <asm/current.h> |
10 | 10 |
|
11 | 11 | /* |
12 | | - * BROKEN wait-queues. |
13 | | - * |
14 | | - * These "simple" wait-queues are broken garbage, and should never be |
15 | | - * used. The comments below claim that they are "similar" to regular |
16 | | - * wait-queues, but the semantics are actually completely different, and |
17 | | - * every single user we have ever had has been buggy (or pointless). |
18 | | - * |
19 | | - * A "swake_up_one()" only wakes up _one_ waiter, which is not at all what |
20 | | - * "wake_up()" does, and has led to problems. In other cases, it has |
21 | | - * been fine, because there's only ever one waiter (kvm), but in that |
22 | | - * case gthe whole "simple" wait-queue is just pointless to begin with, |
23 | | - * since there is no "queue". Use "wake_up_process()" with a direct |
24 | | - * pointer instead. |
25 | | - * |
26 | | - * While these are very similar to regular wait queues (wait.h) the most |
27 | | - * important difference is that the simple waitqueue allows for deterministic |
28 | | - * behaviour -- IOW it has strictly bounded IRQ and lock hold times. |
| 12 | + * Simple waitqueues are semantically very different to regular wait queues |
| 13 | + * (wait.h). The most important difference is that the simple waitqueue allows |
| 14 | + * for deterministic behaviour -- IOW it has strictly bounded IRQ and lock hold |
| 15 | + * times. |
29 | 16 | * |
30 | 17 | * Mainly, this is accomplished by two things. Firstly not allowing swake_up_all |
31 | 18 | * from IRQ disabled, and dropping the lock upon every wakeup, giving a higher |
|
39 | 26 | * sleeper state. |
40 | 27 | * |
41 | 28 | * - the !exclusive mode; because that leads to O(n) wakeups, everything is |
42 | | - * exclusive. |
| 29 | + * exclusive. As such swake_up_one will only ever awake _one_ waiter. |
43 | 30 | * |
44 | 31 | * - custom wake callback functions; because you cannot give any guarantees |
45 | 32 | * about random code. This also allows swait to be used in RT, such that |
|
0 commit comments