diff options
| author | Jiri Kosina <jkosina@suse.cz> | 2021-02-23 11:33:13 +0100 |
|---|---|---|
| committer | Jiri Kosina <jkosina@suse.cz> | 2021-02-23 11:33:13 +0100 |
| commit | d6310078d9f8c416e85f641a631aecf58f9c97ff (patch) | |
| tree | 58ed5d9818ada3e970d93438083731abd6293ba9 /include/linux/wait.h | |
| parent | f8dd50e097b221e35c34b844826db92158ec18c2 (diff) | |
| parent | df7b622906f24be954beca94e60c195fde65c6d5 (diff) | |
| download | lwn-d6310078d9f8c416e85f641a631aecf58f9c97ff.tar.gz lwn-d6310078d9f8c416e85f641a631aecf58f9c97ff.zip | |
Merge branch 'for-5.12/google' into for-linus
- User experience improvements for hid-google from Nicolas Boichat
Diffstat (limited to 'include/linux/wait.h')
| -rw-r--r-- | include/linux/wait.h | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/include/linux/wait.h b/include/linux/wait.h index 27fb99cfeb02..fe10e8570a52 100644 --- a/include/linux/wait.h +++ b/include/linux/wait.h @@ -22,6 +22,7 @@ int default_wake_function(struct wait_queue_entry *wq_entry, unsigned mode, int #define WQ_FLAG_BOOKMARK 0x04 #define WQ_FLAG_CUSTOM 0x08 #define WQ_FLAG_DONE 0x10 +#define WQ_FLAG_PRIORITY 0x20 /* * A single wait-queue entry structure: @@ -164,11 +165,20 @@ static inline bool wq_has_sleeper(struct wait_queue_head *wq_head) extern void add_wait_queue(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry); extern void add_wait_queue_exclusive(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry); +extern void add_wait_queue_priority(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry); extern void remove_wait_queue(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry); static inline void __add_wait_queue(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry) { - list_add(&wq_entry->entry, &wq_head->head); + struct list_head *head = &wq_head->head; + struct wait_queue_entry *wq; + + list_for_each_entry(wq, &wq_head->head, entry) { + if (!(wq->flags & WQ_FLAG_PRIORITY)) + break; + head = &wq->entry; + } + list_add(&wq_entry->entry, head); } /* |
