1 #ifndef _UAPI_LINUX_IOPRIO_H 2 #define _UAPI_LINUX_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 /* _UAPI_LINUX_IOPRIO_H */ 47