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 */ 27enum { 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 39enum { 40 IOPRIO_WHO_PROCESS = 1, 41 IOPRIO_WHO_PGRP, 42 IOPRIO_WHO_USER, 43}; 44//----------------------------------------------------------------------------- 45 46#endif /* __IOPRIO_H__ */ 47