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_struct *tsk)
  44{
  45        memset(&tsk->ioac, 0, sizeof(tsk->ioac));
  46}
  47
  48#else
  49
  50static inline void task_io_account_read(size_t bytes)
  51{
  52}
  53
  54static inline unsigned long task_io_get_inblock(const struct task_struct *p)
  55{
  56        return 0;
  57}
  58
  59static inline void task_io_account_write(size_t bytes)
  60{
  61}
  62
  63static inline unsigned long task_io_get_oublock(const struct task_struct *p)
  64{
  65        return 0;
  66}
  67
  68static inline void task_io_account_cancelled_write(size_t bytes)
  69{
  70}
  71
  72static inline void task_io_accounting_init(struct task_struct *tsk)
  73{
  74}
  75
  76#endif          /* CONFIG_TASK_IO_ACCOUNTING */
  77#endif          /* __TASK_IO_ACCOUNTING_OPS_INCLUDED */
  78