forked from luck/tmp_suning_uos_patched
rcuwait: Let rcuwait_wake_up() return whether or not a task was awoken
Propagating the return value of wake_up_process() back to the caller can come in handy for future users, such as for statistics or accounting purposes. Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org> Signed-off-by: Davidlohr Bueso <dbueso@suse.de> Message-Id: <20200424054837.5138-3-dave@stgolabs.net> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
c9d64a1b2d
commit
9d9a6ebfea
|
@ -25,7 +25,7 @@ static inline void rcuwait_init(struct rcuwait *w)
|
||||||
w->task = NULL;
|
w->task = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
extern void rcuwait_wake_up(struct rcuwait *w);
|
extern int rcuwait_wake_up(struct rcuwait *w);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The caller is responsible for locking around rcuwait_wait_event(),
|
* The caller is responsible for locking around rcuwait_wait_event(),
|
||||||
|
|
|
@ -227,8 +227,9 @@ void release_task(struct task_struct *p)
|
||||||
goto repeat;
|
goto repeat;
|
||||||
}
|
}
|
||||||
|
|
||||||
void rcuwait_wake_up(struct rcuwait *w)
|
int rcuwait_wake_up(struct rcuwait *w)
|
||||||
{
|
{
|
||||||
|
int ret = 0;
|
||||||
struct task_struct *task;
|
struct task_struct *task;
|
||||||
|
|
||||||
rcu_read_lock();
|
rcu_read_lock();
|
||||||
|
@ -248,8 +249,10 @@ void rcuwait_wake_up(struct rcuwait *w)
|
||||||
|
|
||||||
task = rcu_dereference(w->task);
|
task = rcu_dereference(w->task);
|
||||||
if (task)
|
if (task)
|
||||||
wake_up_process(task);
|
ret = wake_up_process(task);
|
||||||
rcu_read_unlock();
|
rcu_read_unlock();
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(rcuwait_wake_up);
|
EXPORT_SYMBOL_GPL(rcuwait_wake_up);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user