linux/include/linux/task_io_accounting_ops.h
<<
>>
Prefs
   1/*
   2 * Task I/O accounting operations
   3 */
   4#ifndef __TASK_IO_ACCOUNTING_OPS_INCLUDED
   5#define __TASK_IO_ACCOUNTING_OPS_INCLUDED
   6
   7#include <linux/sched.h>
   8
   9#ifdef CONFIG_TASK_IO_ACCOUNTING
  10static inline void task_io_account_read(size_t bytes)
  11{
  12        current->ioac.read_bytes += bytes;
  13}
  14
  15/*
  16 * We approximate number of blocks, because we account bytes only.
  17 * A 'block' is 512 bytes
  18 */
  19static inline unsigned long task_io_get_inblock(const struct task_struct *p)
  20{
  21        return p->ioac.read_bytes >> 9;
  22}
  23
  24static inline void task_io_account_write(size_t bytes)
  25{
  26        current->ioac.write_bytes += bytes;
  27}
  28
  29/*
  30 * We approximate number of blocks, because we account bytes only.
  31 * A 'block' is 512 bytes
  32 */
  33static inline unsigned long task_io_get_oublock(const struct task_struct *p)
  34{
  35        return p->ioac.write_bytes >> 9;
  36}
  37
  38static inline void task_io_account_cancelled_write(size_t bytes)
  39{
  40        current->ioac.cancelled_write_bytes += bytes;
  41}
  42
  43static inline void task_io_accounting_init(struct task_io_accounting *ioac)
  44{
  45        memset(ioac, 0, sizeof(*ioac));
  46}
  47
  48static inline void task_blk_io_accounting_add(struct task_io_accounting *dst,
  49                                                struct task_io_accounting *src)
  50{
  51        dst->read_bytes += src->read_bytes;
  52        dst->write_bytes += src->write_bytes;
  53        dst->cancelled_write_bytes += src->cancelled_write_bytes;
  54}
  55
  56#else
  57
  58static inline void task_io_account_read(size_t bytes)
  59{
  60}
  61
  62static inline unsigned long task_io_get_inblock(const struct task_struct *p)
  63{
  64        return 0;
  65}
  66
  67static inline void task_io_account_write(size_t bytes)
  68{
  69}
  70
  71static inline unsigned long task_io_get_oublock(const struct task_struct *p)
  72{
  73        return 0;
  74}
  75
  76static inline void task_io_account_cancelled_write(size_t bytes)
  77{
  78}
  79
  80static inline void task_io_accounting_init(struct task_io_accounting *ioac)
  81{
  82}
  83
  84static inline void task_blk_io_accounting_add(struct task_io_accounting *dst,
  85                                                struct task_io_accounting *src)
  86{
  87}
  88
  89#endif /* CONFIG_TASK_IO_ACCOUNTING */
  90
  91#ifdef CONFIG_TASK_XACCT
  92static inline void task_chr_io_accounting_add(struct task_io_accounting *dst,
  93                                                struct task_io_accounting *src)
  94{
  95        dst->rchar += src->rchar;
  96        dst->wchar += src->wchar;
  97        dst->syscr += src->syscr;
  98        dst->syscw += src->syscw;
  99}
 100#else
 101static inline void task_chr_io_accounting_add(struct task_io_accounting *dst,
 102                                                struct task_io_accounting *src)
 103{
 104}
 105#endif /* CONFIG_TASK_XACCT */
 106
 107static inline void task_io_accounting_add(struct task_io_accounting *dst,
 108                                                struct task_io_accounting *src)
 109{
 110        task_chr_io_accounting_add(dst, src);
 111        task_blk_io_accounting_add(dst, src);
 112}
 113#endif /* __TASK_IO_ACCOUNTING_OPS_INCLUDED */
 114