X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=os%2Fos-linux.h;h=c5cd6515813146d4f63e0d17427a1b8ee2d9efe1;hb=HEAD;hp=2f9f7e796dace80b8a609942e019858c60b91782;hpb=a967e54d34afe3bb10cd521d78bcaea2dd8c7cdc;p=fio.git diff --git a/os/os-linux.h b/os/os-linux.h index 2f9f7e79..c5cd6515 100644 --- a/os/os-linux.h +++ b/os/os-linux.h @@ -125,13 +125,24 @@ enum { #define IOPRIO_BITS 16 #define IOPRIO_CLASS_SHIFT 13 +#define IOPRIO_HINT_BITS 10 +#define IOPRIO_HINT_SHIFT 3 + #define IOPRIO_MIN_PRIO 0 /* highest priority */ #define IOPRIO_MAX_PRIO 7 /* lowest priority */ #define IOPRIO_MIN_PRIO_CLASS 0 #define IOPRIO_MAX_PRIO_CLASS 3 -static inline int ioprio_value(int ioprio_class, int ioprio) +#define IOPRIO_MIN_PRIO_HINT 0 +#define IOPRIO_MAX_PRIO_HINT ((1 << IOPRIO_HINT_BITS) - 1) + +#define ioprio_class(ioprio) ((ioprio) >> IOPRIO_CLASS_SHIFT) +#define ioprio(ioprio) ((ioprio) & IOPRIO_MAX_PRIO) +#define ioprio_hint(ioprio) \ + (((ioprio) >> IOPRIO_HINT_SHIFT) & IOPRIO_MAX_PRIO_HINT) + +static inline int ioprio_value(int ioprio_class, int ioprio, int ioprio_hint) { /* * If no class is set, assume BE @@ -139,23 +150,23 @@ static inline int ioprio_value(int ioprio_class, int ioprio) if (!ioprio_class) ioprio_class = IOPRIO_CLASS_BE; - return (ioprio_class << IOPRIO_CLASS_SHIFT) | ioprio; + return (ioprio_class << IOPRIO_CLASS_SHIFT) | + (ioprio_hint << IOPRIO_HINT_SHIFT) | + ioprio; } static inline bool ioprio_value_is_class_rt(unsigned int priority) { - return (priority >> IOPRIO_CLASS_SHIFT) == IOPRIO_CLASS_RT; + return ioprio_class(priority) == IOPRIO_CLASS_RT; } -static inline int ioprio_set(int which, int who, int ioprio_class, int ioprio) +static inline int ioprio_set(int which, int who, int ioprio_class, int ioprio, + int ioprio_hint) { return syscall(__NR_ioprio_set, which, who, - ioprio_value(ioprio_class, ioprio)); + ioprio_value(ioprio_class, ioprio, ioprio_hint)); } -#define ioprio_class(ioprio) ((ioprio) >> IOPRIO_CLASS_SHIFT) -#define ioprio(ioprio) ((ioprio) & 7) - #ifndef CONFIG_HAVE_GETTID static inline int gettid(void) {