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