cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

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 */