]> git.sesse.net Git - bcachefs-tools-debian/blob - c_src/include/linux/ioprio.h
rust: bump rpassword to v7.x
[bcachefs-tools-debian] / c_src / include / linux / ioprio.h
1 #ifndef IOPRIO_H
2 #define IOPRIO_H
3
4 /*
5  * Gives us 8 prio classes with 13-bits of data for each class
6  */
7 #define IOPRIO_BITS             (16)
8 #define IOPRIO_CLASS_SHIFT      (13)
9 #define IOPRIO_PRIO_MASK        ((1UL << IOPRIO_CLASS_SHIFT) - 1)
10
11 #define IOPRIO_PRIO_CLASS(mask) ((mask) >> IOPRIO_CLASS_SHIFT)
12 #define IOPRIO_PRIO_DATA(mask)  ((mask) & IOPRIO_PRIO_MASK)
13 #define IOPRIO_PRIO_VALUE(class, data)  (((class) << IOPRIO_CLASS_SHIFT) | data)
14
15 #define ioprio_valid(mask)      (IOPRIO_PRIO_CLASS((mask)) != IOPRIO_CLASS_NONE)
16
17 /*
18  * These are the io priority groups as implemented by CFQ. RT is the realtime
19  * class, it always gets premium service. BE is the best-effort scheduling
20  * class, the default for any process. IDLE is the idle scheduling class, it
21  * is only served when no one else is using the disk.
22  */
23 enum {
24         IOPRIO_CLASS_NONE,
25         IOPRIO_CLASS_RT,
26         IOPRIO_CLASS_BE,
27         IOPRIO_CLASS_IDLE,
28 };
29
30 /*
31  * 8 best effort priority levels are supported
32  */
33 #define IOPRIO_BE_NR    (8)
34
35 enum {
36         IOPRIO_WHO_PROCESS = 1,
37         IOPRIO_WHO_PGRP,
38         IOPRIO_WHO_USER,
39 };
40
41 /*
42  * Fallback BE priority
43  */
44 #define IOPRIO_NORM     (4)
45
46 #endif