summaryrefslogtreecommitdiff
path: root/src/ipcpd/CMakeLists.txt
diff options
context:
space:
mode:
authordimitri staessens <[email protected]>2017-09-21 14:36:12 +0200
committerdimitri staessens <[email protected]>2017-09-21 14:47:29 +0200
commit2c1d03ac383c1a4380aa540a29d95c1b788d2439 (patch)
tree5465553caae2fbbc8d5878902559c89e5133dba8 /src/ipcpd/CMakeLists.txt
parent6b6f82c8a58b2edbd029909be2ba1057c00cd6ed (diff)
downloadouroboros-2c1d03ac383c1a4380aa540a29d95c1b788d2439.tar.gz
ouroboros-2c1d03ac383c1a4380aa540a29d95c1b788d2439.zip
ipcpd: Use the kernel scheduler for QoS
This revises the sdu_scheduler of the normal IPCP to create a scheduler thread per QoS cube and let the kernel scheduler schedule them based on a priority. Priorities can be set at build time in a range of 0-100, which will be mapped onto a suitable priority for the kernel scheduler. The current scheduler policy is fixed to SCHED_RR since it is the most suitable scheduler defined by POSIX.
Diffstat (limited to 'src/ipcpd/CMakeLists.txt')
-rw-r--r--src/ipcpd/CMakeLists.txt20
1 files changed, 18 insertions, 2 deletions
diff --git a/src/ipcpd/CMakeLists.txt b/src/ipcpd/CMakeLists.txt
index 6356b1ba..a71c4e98 100644
--- a/src/ipcpd/CMakeLists.txt
+++ b/src/ipcpd/CMakeLists.txt
@@ -1,12 +1,28 @@
set(IPCP_ACCEPT_TIMEOUT 100 CACHE STRING
"Timeout for accept in IPCP mainloop threads (ms)")
-set(IPCP_SCHED_THREADS 2 CACHE STRING
- "Number of scheduler threads in the normal IPCP")
+set(IPCP_QOS_CUBE_BE_PRIO 0 CACHE STRING
+ "Priority for best effort QoS cube (0-99)")
+set(IPCP_QOS_CUBE_VIDEO_PRIO 90 CACHE STRING
+ "Priority for video QoS cube (0-99)")
+set(IPCP_QOS_CUBE_VOICE_PRIO 99 CACHE STRING
+ "Priority for voice QoS cube (0-99)")
set(IPCP_MIN_THREADS 4 CACHE STRING
"Minimum number of worker threads in the IPCP")
set(IPCP_ADD_THREADS 4 CACHE STRING
"Number of extra threads to start when an IPCP faces thread starvation")
+if ((IPCP_QOS_CUBE_BE_PRIO LESS 0) OR (IPCP_QOS_CUBE_BE_PRIO GREATER 99))
+ message(FATAL_ERROR "Invalid priority for best effort QoS cube")
+endif ()
+
+if ((IPCP_QOS_CUBE_VIDEO_PRIO LESS 0) OR (IPCP_QOS_CUBE_VIDEO_PRIO GREATER 99))
+ message(FATAL_ERROR "Invalid priority for video QoS cube")
+endif ()
+
+if ((IPCP_QOS_CUBE_VOICE_PRIO LESS 0) OR (IPCP_QOS_CUBE_VOICE_PRIO GREATER 99))
+ message(FATAL_ERROR "Invalid priority for voice QoS cube")
+endif ()
+
set(IPCP_SOURCES
# Add source files here
${CMAKE_CURRENT_SOURCE_DIR}/ipcp.c