]>
Commit | Line | Data |
---|---|---|
5bead76e ZJS |
1 | /* SPDX-License-Identifier: LGPL-2.1-or-later */ |
2 | #pragma once | |
3 | ||
7258971b ZJS |
4 | #if HAVE_LINUX_IOPRIO_H |
5 | # include <linux/ioprio.h> | |
6 | #endif | |
5bead76e | 7 | |
4d6437d3 ZJS |
8 | #include "macro.h" |
9 | ||
5bead76e ZJS |
10 | /* Match values uses by the kernel internally, as no public header seems to exist. */ |
11 | ||
12 | #ifndef IOPRIO_N_CLASSES | |
13 | # define IOPRIO_N_CLASSES 8 | |
4d6437d3 ZJS |
14 | #else |
15 | assert_cc(IOPRIO_N_CLASSES == 8); | |
5bead76e ZJS |
16 | #endif |
17 | ||
18 | #ifndef IOPRIO_BE_NR | |
19 | # define IOPRIO_BE_NR 8 | |
4d6437d3 ZJS |
20 | #else |
21 | assert_cc(IOPRIO_BE_NR == 8); | |
5bead76e ZJS |
22 | #endif |
23 | ||
24 | #ifndef IOPRIO_CLASS_NONE | |
25 | # define IOPRIO_CLASS_NONE 0 | |
4d6437d3 ZJS |
26 | #else |
27 | assert_cc(IOPRIO_CLASS_NONE == 0); | |
5bead76e ZJS |
28 | #endif |
29 | #ifndef IOPRIO_CLASS_RT | |
30 | # define IOPRIO_CLASS_RT 1 | |
4d6437d3 ZJS |
31 | #else |
32 | assert_cc(IOPRIO_CLASS_RT == 1); | |
5bead76e ZJS |
33 | #endif |
34 | #ifndef IOPRIO_CLASS_BE | |
35 | # define IOPRIO_CLASS_BE 2 | |
4d6437d3 ZJS |
36 | #else |
37 | assert_cc(IOPRIO_CLASS_BE == 2); | |
5bead76e ZJS |
38 | #endif |
39 | #ifndef IOPRIO_CLASS_IDLE | |
40 | # define IOPRIO_CLASS_IDLE 3 | |
4d6437d3 ZJS |
41 | #else |
42 | assert_cc(IOPRIO_CLASS_IDLE == 3); | |
5bead76e ZJS |
43 | #endif |
44 | ||
45 | #ifndef IOPRIO_WHO_PROCESS | |
46 | # define IOPRIO_WHO_PROCESS 1 | |
4d6437d3 ZJS |
47 | #else |
48 | assert_cc(IOPRIO_WHO_PROCESS == 1); | |
5bead76e | 49 | #endif |
4d6437d3 | 50 | |
5bead76e ZJS |
51 | #ifndef IOPRIO_WHO_PGRP |
52 | # define IOPRIO_WHO_PGRP 2 | |
4d6437d3 ZJS |
53 | #else |
54 | assert_cc(IOPRIO_WHO_PGRP == 2); | |
5bead76e | 55 | #endif |
4d6437d3 | 56 | |
5bead76e ZJS |
57 | #ifndef IOPRIO_WHO_USER |
58 | # define IOPRIO_WHO_USER 3 | |
4d6437d3 ZJS |
59 | #else |
60 | assert_cc(IOPRIO_WHO_USER == 3); | |
5bead76e ZJS |
61 | #endif |
62 | ||
63 | #ifndef IOPRIO_BITS | |
64 | # define IOPRIO_BITS 16 | |
4d6437d3 ZJS |
65 | #else |
66 | assert_cc(IOPRIO_BITS == 16); | |
5bead76e | 67 | #endif |
4d6437d3 | 68 | |
5bead76e ZJS |
69 | #ifndef IOPRIO_N_CLASSES |
70 | # define IOPRIO_N_CLASSES 8 | |
4d6437d3 ZJS |
71 | #else |
72 | assert_cc(IOPRIO_N_CLASSES == 8); | |
5bead76e | 73 | #endif |
4d6437d3 | 74 | |
5bead76e ZJS |
75 | #ifndef IOPRIO_CLASS_SHIFT |
76 | # define IOPRIO_CLASS_SHIFT 13 | |
4d6437d3 ZJS |
77 | #else |
78 | assert_cc(IOPRIO_CLASS_SHIFT == 13); | |
5bead76e ZJS |
79 | #endif |
80 | ||
81 | static inline int ioprio_prio_class(int value) { | |
82 | return value >> IOPRIO_CLASS_SHIFT; | |
83 | } | |
84 | ||
85 | static inline int ioprio_prio_data(int value) { | |
86 | return value & ((1 << IOPRIO_CLASS_SHIFT) - 1); | |
87 | } | |
88 | ||
89 | static inline int ioprio_prio_value(int class, int data) { | |
90 | return (class << IOPRIO_CLASS_SHIFT) | data; | |
91 | } |