diff options
author | Vladimir Davydov <vdavydov@parallels.com> | 2013-02-14 18:19:58 +0400 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2013-02-15 19:45:06 +0400 |
commit | 686855f5d833178e518d79e7912cdb3268a9fa69 (patch) | |
tree | 2adae2efee0d3ae072084806231a5d0fd9e2b262 /include/linux/completion.h | |
parent | 9fb0a7da0c528d9bd49b597aa63b1fe2216c7203 (diff) | |
download | linux-686855f5d833178e518d79e7912cdb3268a9fa69.tar.xz |
sched: add wait_for_completion_io[_timeout]
The only difference between wait_for_completion[_timeout]() and
wait_for_completion_io[_timeout]() is that the latter calls
io_schedule_timeout() instead of schedule_timeout() so that the caller
is accounted as waiting for IO, not just sleeping.
These functions can be used for correct iowait time accounting when the
completion struct is actually used for waiting for IO (e.g. completion
of a bio request in the block layer).
Signed-off-by: Vladimir Davydov <vdavydov@parallels.com>
Acked-by: Ingo Molnar <mingo@kernel.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'include/linux/completion.h')
-rw-r--r-- | include/linux/completion.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/include/linux/completion.h b/include/linux/completion.h index 51494e6b5548..33f0280fd533 100644 --- a/include/linux/completion.h +++ b/include/linux/completion.h @@ -77,10 +77,13 @@ static inline void init_completion(struct completion *x) } extern void wait_for_completion(struct completion *); +extern void wait_for_completion_io(struct completion *); extern int wait_for_completion_interruptible(struct completion *x); extern int wait_for_completion_killable(struct completion *x); extern unsigned long wait_for_completion_timeout(struct completion *x, unsigned long timeout); +extern unsigned long wait_for_completion_io_timeout(struct completion *x, + unsigned long timeout); extern long wait_for_completion_interruptible_timeout( struct completion *x, unsigned long timeout); extern long wait_for_completion_killable_timeout( |