Linux Audio

Check our new training course

Loading...
v5.9
  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
 11static 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 */
 20static inline unsigned long task_io_get_inblock(const struct task_struct *p)
 21{
 22	return p->ioac.read_bytes >> 9;
 23}
 24
 25static 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 */
 34static inline unsigned long task_io_get_oublock(const struct task_struct *p)
 35{
 36	return p->ioac.write_bytes >> 9;
 37}
 38
 39static inline void task_io_account_cancelled_write(size_t bytes)
 40{
 41	current->ioac.cancelled_write_bytes += bytes;
 42}
 43
 44static inline void task_io_accounting_init(struct task_io_accounting *ioac)
 45{
 46	memset(ioac, 0, sizeof(*ioac));
 47}
 48
 49static 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
 59static inline void task_io_account_read(size_t bytes)
 60{
 61}
 62
 63static inline unsigned long task_io_get_inblock(const struct task_struct *p)
 64{
 65	return 0;
 66}
 67
 68static inline void task_io_account_write(size_t bytes)
 69{
 70}
 71
 72static inline unsigned long task_io_get_oublock(const struct task_struct *p)
 73{
 74	return 0;
 75}
 76
 77static inline void task_io_account_cancelled_write(size_t bytes)
 78{
 79}
 80
 81static inline void task_io_accounting_init(struct task_io_accounting *ioac)
 82{
 83}
 84
 85static 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
 93static 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
102static 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
108static 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 */
v6.9.4
  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
 11static 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 */
 20static inline unsigned long task_io_get_inblock(const struct task_struct *p)
 21{
 22	return p->ioac.read_bytes >> 9;
 23}
 24
 25static 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 */
 34static inline unsigned long task_io_get_oublock(const struct task_struct *p)
 35{
 36	return p->ioac.write_bytes >> 9;
 37}
 38
 39static inline void task_io_account_cancelled_write(size_t bytes)
 40{
 41	current->ioac.cancelled_write_bytes += bytes;
 42}
 43
 44static inline void task_io_accounting_init(struct task_io_accounting *ioac)
 45{
 46	memset(ioac, 0, sizeof(*ioac));
 47}
 48
 49static 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
 59static inline void task_io_account_read(size_t bytes)
 60{
 61}
 62
 63static inline unsigned long task_io_get_inblock(const struct task_struct *p)
 64{
 65	return 0;
 66}
 67
 68static inline void task_io_account_write(size_t bytes)
 69{
 70}
 71
 72static inline unsigned long task_io_get_oublock(const struct task_struct *p)
 73{
 74	return 0;
 75}
 76
 77static inline void task_io_account_cancelled_write(size_t bytes)
 78{
 79}
 80
 81static inline void task_io_accounting_init(struct task_io_accounting *ioac)
 82{
 83}
 84
 85static 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
 93static 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
102static 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
108static 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 */