diff options
Diffstat (limited to 'kernel/sched.c')
-rw-r--r-- | kernel/sched.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/kernel/sched.c b/kernel/sched.c index 09b529cf2bd8..c7d7d535288a 100644 --- a/kernel/sched.c +++ b/kernel/sched.c | |||
@@ -3923,6 +3923,18 @@ void complete_all(struct completion *x) | |||
3923 | } | 3923 | } |
3924 | EXPORT_SYMBOL(complete_all); | 3924 | EXPORT_SYMBOL(complete_all); |
3925 | 3925 | ||
3926 | void complete_n(struct completion *x, int n) | ||
3927 | { | ||
3928 | unsigned long flags; | ||
3929 | |||
3930 | spin_lock_irqsave(&x->wait.lock, flags); | ||
3931 | x->done += n; | ||
3932 | __wake_up_common(&x->wait, TASK_UNINTERRUPTIBLE | TASK_INTERRUPTIBLE, | ||
3933 | n, 0, NULL); | ||
3934 | spin_unlock_irqrestore(&x->wait.lock, flags); | ||
3935 | } | ||
3936 | EXPORT_SYMBOL(complete_n); | ||
3937 | |||
3926 | static inline long __sched | 3938 | static inline long __sched |
3927 | do_wait_for_common(struct completion *x, long timeout, int state) | 3939 | do_wait_for_common(struct completion *x, long timeout, int state) |
3928 | { | 3940 | { |