root/include/linux/task_io_accounting_ops.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. task_io_account_read
  2. task_io_get_inblock
  3. task_io_account_write
  4. task_io_get_oublock
  5. task_io_account_cancelled_write
  6. task_io_accounting_init
  7. task_blk_io_accounting_add
  8. task_io_account_read
  9. task_io_get_inblock
  10. task_io_account_write
  11. task_io_get_oublock
  12. task_io_account_cancelled_write
  13. task_io_accounting_init
  14. task_blk_io_accounting_add
  15. task_chr_io_accounting_add
  16. task_chr_io_accounting_add
  17. task_io_accounting_add

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

/* [<][>][^][v][top][bottom][index][help] */