mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-06 02:50:49 +09:00
Revert "Revert "wait: Return number of exclusive waiters awaken""
This reverts commit 2b47e2bee0.
It was perserving the ABI, but that is not needed anymore at this point
in time.
Change-Id: I7efd4dd7abde9f5baa37cb3731aa40b7ff94d2bb
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
@@ -209,7 +209,7 @@ __remove_wait_queue(struct wait_queue_head *wq_head, struct wait_queue_entry *wq
|
||||
list_del(&wq_entry->entry);
|
||||
}
|
||||
|
||||
void __wake_up(struct wait_queue_head *wq_head, unsigned int mode, int nr, void *key);
|
||||
int __wake_up(struct wait_queue_head *wq_head, unsigned int mode, int nr, void *key);
|
||||
void __wake_up_locked_key(struct wait_queue_head *wq_head, unsigned int mode, void *key);
|
||||
void __wake_up_locked_key_bookmark(struct wait_queue_head *wq_head,
|
||||
unsigned int mode, void *key, wait_queue_entry_t *bookmark);
|
||||
|
||||
@@ -122,11 +122,12 @@ static int __wake_up_common(struct wait_queue_head *wq_head, unsigned int mode,
|
||||
return nr_exclusive;
|
||||
}
|
||||
|
||||
static void __wake_up_common_lock(struct wait_queue_head *wq_head, unsigned int mode,
|
||||
static int __wake_up_common_lock(struct wait_queue_head *wq_head, unsigned int mode,
|
||||
int nr_exclusive, int wake_flags, void *key)
|
||||
{
|
||||
unsigned long flags;
|
||||
wait_queue_entry_t bookmark;
|
||||
int remaining = nr_exclusive;
|
||||
|
||||
bookmark.flags = 0;
|
||||
bookmark.private = NULL;
|
||||
@@ -135,10 +136,12 @@ static void __wake_up_common_lock(struct wait_queue_head *wq_head, unsigned int
|
||||
|
||||
do {
|
||||
spin_lock_irqsave(&wq_head->lock, flags);
|
||||
nr_exclusive = __wake_up_common(wq_head, mode, nr_exclusive,
|
||||
remaining = __wake_up_common(wq_head, mode, remaining,
|
||||
wake_flags, key, &bookmark);
|
||||
spin_unlock_irqrestore(&wq_head->lock, flags);
|
||||
} while (bookmark.flags & WQ_FLAG_BOOKMARK);
|
||||
|
||||
return nr_exclusive - remaining;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -148,13 +151,14 @@ static void __wake_up_common_lock(struct wait_queue_head *wq_head, unsigned int
|
||||
* @nr_exclusive: how many wake-one or wake-many threads to wake up
|
||||
* @key: is directly passed to the wakeup function
|
||||
*
|
||||
* If this function wakes up a task, it executes a full memory barrier before
|
||||
* accessing the task state.
|
||||
* If this function wakes up a task, it executes a full memory barrier
|
||||
* before accessing the task state. Returns the number of exclusive
|
||||
* tasks that were awaken.
|
||||
*/
|
||||
void __wake_up(struct wait_queue_head *wq_head, unsigned int mode,
|
||||
int nr_exclusive, void *key)
|
||||
int __wake_up(struct wait_queue_head *wq_head, unsigned int mode,
|
||||
int nr_exclusive, void *key)
|
||||
{
|
||||
__wake_up_common_lock(wq_head, mode, nr_exclusive, 0, key);
|
||||
return __wake_up_common_lock(wq_head, mode, nr_exclusive, 0, key);
|
||||
}
|
||||
EXPORT_SYMBOL(__wake_up);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user