ioprio.h (1471B)
1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2#ifndef _UAPI_LINUX_IOPRIO_H 3#define _UAPI_LINUX_IOPRIO_H 4 5/* 6 * Gives us 8 prio classes with 13-bits of data for each class 7 */ 8#define IOPRIO_CLASS_SHIFT 13 9#define IOPRIO_CLASS_MASK 0x07 10#define IOPRIO_PRIO_MASK ((1UL << IOPRIO_CLASS_SHIFT) - 1) 11 12#define IOPRIO_PRIO_CLASS(ioprio) \ 13 (((ioprio) >> IOPRIO_CLASS_SHIFT) & IOPRIO_CLASS_MASK) 14#define IOPRIO_PRIO_DATA(ioprio) ((ioprio) & IOPRIO_PRIO_MASK) 15#define IOPRIO_PRIO_VALUE(class, data) \ 16 ((((class) & IOPRIO_CLASS_MASK) << IOPRIO_CLASS_SHIFT) | \ 17 ((data) & IOPRIO_PRIO_MASK)) 18 19/* 20 * These are the io priority groups as implemented by the BFQ and mq-deadline 21 * schedulers. RT is the realtime class, it always gets premium service. For 22 * ATA disks supporting NCQ IO priority, RT class IOs will be processed using 23 * high priority NCQ commands. BE is the best-effort scheduling class, the 24 * default for any process. IDLE is the idle scheduling class, it is only 25 * 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 * The RT and BE priority classes both support up to 8 priority levels. 36 */ 37#define IOPRIO_NR_LEVELS 8 38#define IOPRIO_BE_NR IOPRIO_NR_LEVELS 39 40enum { 41 IOPRIO_WHO_PROCESS = 1, 42 IOPRIO_WHO_PGRP, 43 IOPRIO_WHO_USER, 44}; 45 46/* 47 * Fallback BE priority level. 48 */ 49#define IOPRIO_NORM 4 50#define IOPRIO_BE_NORM IOPRIO_NORM 51 52#endif /* _UAPI_LINUX_IOPRIO_H */