aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/linux/sys.txt28
-rw-r--r--sys/linux/sys_386.const8
-rw-r--r--sys/linux/sys_amd64.const8
-rw-r--r--sys/linux/sys_arm.const8
-rw-r--r--sys/linux/sys_arm64.const8
-rw-r--r--sys/linux/sys_mips64le.const8
-rw-r--r--sys/linux/sys_ppc64le.const8
-rw-r--r--sys/linux/sys_riscv64.const8
-rw-r--r--sys/linux/sys_s390x.const8
9 files changed, 90 insertions, 2 deletions
diff --git a/sys/linux/sys.txt b/sys/linux/sys.txt
index d9ea9c672..4f1b2d5f9 100644
--- a/sys/linux/sys.txt
+++ b/sys/linux/sys.txt
@@ -387,8 +387,32 @@ iopl(level int8)
ioperm(from intptr, num intptr, on intptr)
ioprio_get$pid(which flags[ioprio_which_pid], who pid)
ioprio_get$uid(which flags[ioprio_which_uid], who uid)
-ioprio_set$pid(which flags[ioprio_which_pid], who pid, prio intptr)
-ioprio_set$uid(which flags[ioprio_which_uid], who uid, prio intptr)
+ioprio_set$pid(which flags[ioprio_which_pid], who pid, ioprio flags[ioprio_priorities])
+ioprio_set$uid(which flags[ioprio_which_uid], who uid, ioprio flags[ioprio_priorities])
+
+# NEED: we can express the construction of integers using structs with flags
+# and bitfields, which are normally obtained using a combination of bitwise
+# operations with the help of macros. However, structs can't be directly passed
+# as a syscall argument; therefore, such constructions can't be directly passed either.
+# One example is ioprio argument for ioprio_set, where we could have expressed the
+# construction less messy. For now, some subset of valid values are enumerated as
+# in ioprio_priorities.
+
+# ioprio priority values are obtained using IOPRIO_PRIO_VALUE(class, data) macro.
+# the behaviour of the macro is mimicked below and some priority values are enumerated.
+ioprio_priorities = IOPRIO_CLASS_NONE_PRIO, IOPRIO_CLASS_IDLE_PRIO, IOPRIO_CLASS_RT_HIGH_PRIO, IOPRIO_CLASS_BE_HIGH_PRIO, IOPRIO_CLASS_RT_MID_PRIO, IOPRIO_CLASS_BE_MID_PRIO, IOPRIO_CLASS_RT_LOW_PRIO, IOPRIO_CLASS_BE_LOW_PRIO
+
+# The classes RT and BE take data values from the range [0:7]. Use a subset of the available
+# values (0, 4, 7) to ease collisions, and to avoid redundancy. The classes NONE and IDLE
+# have only one valid priority value each with data set to 0.
+define IOPRIO_CLASS_NONE_PRIO (IOPRIO_CLASS_NONE << IOPRIO_CLASS_SHIFT)
+define IOPRIO_CLASS_IDLE_PRIO (IOPRIO_CLASS_IDLE << IOPRIO_CLASS_SHIFT)
+define IOPRIO_CLASS_RT_HIGH_PRIO (IOPRIO_CLASS_RT << IOPRIO_CLASS_SHIFT)
+define IOPRIO_CLASS_BE_HIGH_PRIO (IOPRIO_CLASS_BE << IOPRIO_CLASS_SHIFT)
+define IOPRIO_CLASS_RT_MID_PRIO ((IOPRIO_CLASS_RT << IOPRIO_CLASS_SHIFT) + 4)
+define IOPRIO_CLASS_BE_MID_PRIO ((IOPRIO_CLASS_BE << IOPRIO_CLASS_SHIFT) + 4)
+define IOPRIO_CLASS_RT_LOW_PRIO ((IOPRIO_CLASS_RT << IOPRIO_CLASS_SHIFT) + 7)
+define IOPRIO_CLASS_BE_LOW_PRIO ((IOPRIO_CLASS_BE << IOPRIO_CLASS_SHIFT) + 7)
resource timerid[int32]
timer_create(id flags[clock_id], ev ptr[in, sigevent], timerid ptr[out, timerid])
diff --git a/sys/linux/sys_386.const b/sys/linux/sys_386.const
index b0c406746..d1999e9f6 100644
--- a/sys/linux/sys_386.const
+++ b/sys/linux/sys_386.const
@@ -181,6 +181,14 @@ F_UNLCK = 2
F_WRLCK = 1
GRND_NONBLOCK = 1
GRND_RANDOM = 2
+IOPRIO_CLASS_BE_HIGH_PRIO = 16384
+IOPRIO_CLASS_BE_LOW_PRIO = 16391
+IOPRIO_CLASS_BE_MID_PRIO = 16388
+IOPRIO_CLASS_IDLE_PRIO = 24576
+IOPRIO_CLASS_NONE_PRIO = 0
+IOPRIO_CLASS_RT_HIGH_PRIO = 8192
+IOPRIO_CLASS_RT_LOW_PRIO = 8199
+IOPRIO_CLASS_RT_MID_PRIO = 8196
IOPRIO_WHO_PGRP = 2
IOPRIO_WHO_PROCESS = 1
IOPRIO_WHO_USER = 3
diff --git a/sys/linux/sys_amd64.const b/sys/linux/sys_amd64.const
index f7e18e962..08eb22ff7 100644
--- a/sys/linux/sys_amd64.const
+++ b/sys/linux/sys_amd64.const
@@ -181,6 +181,14 @@ F_UNLCK = 2
F_WRLCK = 1
GRND_NONBLOCK = 1
GRND_RANDOM = 2
+IOPRIO_CLASS_BE_HIGH_PRIO = 16384
+IOPRIO_CLASS_BE_LOW_PRIO = 16391
+IOPRIO_CLASS_BE_MID_PRIO = 16388
+IOPRIO_CLASS_IDLE_PRIO = 24576
+IOPRIO_CLASS_NONE_PRIO = 0
+IOPRIO_CLASS_RT_HIGH_PRIO = 8192
+IOPRIO_CLASS_RT_LOW_PRIO = 8199
+IOPRIO_CLASS_RT_MID_PRIO = 8196
IOPRIO_WHO_PGRP = 2
IOPRIO_WHO_PROCESS = 1
IOPRIO_WHO_USER = 3
diff --git a/sys/linux/sys_arm.const b/sys/linux/sys_arm.const
index a00cff597..f84722518 100644
--- a/sys/linux/sys_arm.const
+++ b/sys/linux/sys_arm.const
@@ -181,6 +181,14 @@ F_UNLCK = 2
F_WRLCK = 1
GRND_NONBLOCK = 1
GRND_RANDOM = 2
+IOPRIO_CLASS_BE_HIGH_PRIO = 16384
+IOPRIO_CLASS_BE_LOW_PRIO = 16391
+IOPRIO_CLASS_BE_MID_PRIO = 16388
+IOPRIO_CLASS_IDLE_PRIO = 24576
+IOPRIO_CLASS_NONE_PRIO = 0
+IOPRIO_CLASS_RT_HIGH_PRIO = 8192
+IOPRIO_CLASS_RT_LOW_PRIO = 8199
+IOPRIO_CLASS_RT_MID_PRIO = 8196
IOPRIO_WHO_PGRP = 2
IOPRIO_WHO_PROCESS = 1
IOPRIO_WHO_USER = 3
diff --git a/sys/linux/sys_arm64.const b/sys/linux/sys_arm64.const
index ce695043b..6ad56e240 100644
--- a/sys/linux/sys_arm64.const
+++ b/sys/linux/sys_arm64.const
@@ -181,6 +181,14 @@ F_UNLCK = 2
F_WRLCK = 1
GRND_NONBLOCK = 1
GRND_RANDOM = 2
+IOPRIO_CLASS_BE_HIGH_PRIO = 16384
+IOPRIO_CLASS_BE_LOW_PRIO = 16391
+IOPRIO_CLASS_BE_MID_PRIO = 16388
+IOPRIO_CLASS_IDLE_PRIO = 24576
+IOPRIO_CLASS_NONE_PRIO = 0
+IOPRIO_CLASS_RT_HIGH_PRIO = 8192
+IOPRIO_CLASS_RT_LOW_PRIO = 8199
+IOPRIO_CLASS_RT_MID_PRIO = 8196
IOPRIO_WHO_PGRP = 2
IOPRIO_WHO_PROCESS = 1
IOPRIO_WHO_USER = 3
diff --git a/sys/linux/sys_mips64le.const b/sys/linux/sys_mips64le.const
index cf0471269..2d5503b38 100644
--- a/sys/linux/sys_mips64le.const
+++ b/sys/linux/sys_mips64le.const
@@ -181,6 +181,14 @@ F_UNLCK = 2
F_WRLCK = 1
GRND_NONBLOCK = 1
GRND_RANDOM = 2
+IOPRIO_CLASS_BE_HIGH_PRIO = 16384
+IOPRIO_CLASS_BE_LOW_PRIO = 16391
+IOPRIO_CLASS_BE_MID_PRIO = 16388
+IOPRIO_CLASS_IDLE_PRIO = 24576
+IOPRIO_CLASS_NONE_PRIO = 0
+IOPRIO_CLASS_RT_HIGH_PRIO = 8192
+IOPRIO_CLASS_RT_LOW_PRIO = 8199
+IOPRIO_CLASS_RT_MID_PRIO = 8196
IOPRIO_WHO_PGRP = 2
IOPRIO_WHO_PROCESS = 1
IOPRIO_WHO_USER = 3
diff --git a/sys/linux/sys_ppc64le.const b/sys/linux/sys_ppc64le.const
index 95f9b1376..3915e89e5 100644
--- a/sys/linux/sys_ppc64le.const
+++ b/sys/linux/sys_ppc64le.const
@@ -181,6 +181,14 @@ F_UNLCK = 2
F_WRLCK = 1
GRND_NONBLOCK = 1
GRND_RANDOM = 2
+IOPRIO_CLASS_BE_HIGH_PRIO = 16384
+IOPRIO_CLASS_BE_LOW_PRIO = 16391
+IOPRIO_CLASS_BE_MID_PRIO = 16388
+IOPRIO_CLASS_IDLE_PRIO = 24576
+IOPRIO_CLASS_NONE_PRIO = 0
+IOPRIO_CLASS_RT_HIGH_PRIO = 8192
+IOPRIO_CLASS_RT_LOW_PRIO = 8199
+IOPRIO_CLASS_RT_MID_PRIO = 8196
IOPRIO_WHO_PGRP = 2
IOPRIO_WHO_PROCESS = 1
IOPRIO_WHO_USER = 3
diff --git a/sys/linux/sys_riscv64.const b/sys/linux/sys_riscv64.const
index ebaf2f0a8..55b6a2abd 100644
--- a/sys/linux/sys_riscv64.const
+++ b/sys/linux/sys_riscv64.const
@@ -181,6 +181,14 @@ F_UNLCK = 2
F_WRLCK = 1
GRND_NONBLOCK = 1
GRND_RANDOM = 2
+IOPRIO_CLASS_BE_HIGH_PRIO = 16384
+IOPRIO_CLASS_BE_LOW_PRIO = 16391
+IOPRIO_CLASS_BE_MID_PRIO = 16388
+IOPRIO_CLASS_IDLE_PRIO = 24576
+IOPRIO_CLASS_NONE_PRIO = 0
+IOPRIO_CLASS_RT_HIGH_PRIO = 8192
+IOPRIO_CLASS_RT_LOW_PRIO = 8199
+IOPRIO_CLASS_RT_MID_PRIO = 8196
IOPRIO_WHO_PGRP = 2
IOPRIO_WHO_PROCESS = 1
IOPRIO_WHO_USER = 3
diff --git a/sys/linux/sys_s390x.const b/sys/linux/sys_s390x.const
index f0f759e7f..1227daba1 100644
--- a/sys/linux/sys_s390x.const
+++ b/sys/linux/sys_s390x.const
@@ -181,6 +181,14 @@ F_UNLCK = 2
F_WRLCK = 1
GRND_NONBLOCK = 1
GRND_RANDOM = 2
+IOPRIO_CLASS_BE_HIGH_PRIO = 16384
+IOPRIO_CLASS_BE_LOW_PRIO = 16391
+IOPRIO_CLASS_BE_MID_PRIO = 16388
+IOPRIO_CLASS_IDLE_PRIO = 24576
+IOPRIO_CLASS_NONE_PRIO = 0
+IOPRIO_CLASS_RT_HIGH_PRIO = 8192
+IOPRIO_CLASS_RT_LOW_PRIO = 8199
+IOPRIO_CLASS_RT_MID_PRIO = 8196
IOPRIO_WHO_PGRP = 2
IOPRIO_WHO_PROCESS = 1
IOPRIO_WHO_USER = 3