summaryrefslogtreecommitdiffstats
path: root/include/linux/completion.h
diff options
context:
space:
mode:
authorVladimir Davydov <vdavydov@parallels.com>2013-02-14 18:19:58 +0400
committerJens Axboe <axboe@kernel.dk>2013-02-15 16:45:06 +0100
commit686855f5d833178e518d79e7912cdb3268a9fa69 (patch)
tree2adae2efee0d3ae072084806231a5d0fd9e2b262 /include/linux/completion.h
parent9fb0a7da0c528d9bd49b597aa63b1fe2216c7203 (diff)
downloadtalos-obmc-linux-686855f5d833178e518d79e7912cdb3268a9fa69.tar.gz
talos-obmc-linux-686855f5d833178e518d79e7912cdb3268a9fa69.zip
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.h3
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(
OpenPOWER on IntegriCloud