From a7181f10a3508d369337900ecee9d851951bccb5 Mon Sep 17 00:00:00 2001 From: edwardcaoyue Date: Sun, 18 Feb 2024 15:05:04 +0800 Subject: [PATCH] add sched policy option Signed-off-by: edwardcaoyue --- services/include/qos_interface.h | 10 ++++ services/src/qos_policy.cpp | 92 ++++++++++++++++---------------- 2 files changed, 56 insertions(+), 46 deletions(-) diff --git a/services/include/qos_interface.h b/services/include/qos_interface.h index 057b769..3fcf365 100644 --- a/services/include/qos_interface.h +++ b/services/include/qos_interface.h @@ -111,6 +111,14 @@ struct QosPolicyData { int uclampMin; int uclampMax; int rtSchedPriority; + int policy; +}; + +enum SchedPolicy { + SCHED_POLICY_OTHER = 0, + SCHED_POLICY_FIFO = 1, + SCHED_POLICY_RR = 2, + SCHED_POLICY_RT_EX = 0xFF, }; enum QosPolicyType { @@ -132,6 +140,8 @@ enum QosPolicyType { QOS_FLAG_UCLAMP | \ QOS_FLAG_RT) +#define SCHED_RESET_ON_FORK 0x40000000 + struct QosPolicyDatas { int policyType; unsigned int policyFlag; diff --git a/services/src/qos_policy.cpp b/services/src/qos_policy.cpp index d5f687b..ddfba68 100644 --- a/services/src/qos_policy.cpp +++ b/services/src/qos_policy.cpp @@ -21,13 +21,13 @@ static struct QosPolicyDatas g_defaultQosPolicy = { .policyType = QOS_POLICY_DEFAULT, .policyFlag = QOS_FLAG_ALL, .policys = { - {0, 0, 0, 1024, 0}, - {0, 0, 0, 1024, 0}, - {0, 0, 0, 1024, 0}, - {0, 0, 0, 1024, 0}, - {0, 0, 0, 1024, 0}, - {0, 0, 0, 1024, 0}, - {0, 0, 0, 1024, 0}, + {0, 0, 0, 1024, 0, SCHED_POLICY_OTHER}, + {0, 0, 0, 1024, 0, SCHED_POLICY_OTHER}, + {0, 0, 0, 1024, 0, SCHED_POLICY_OTHER}, + {0, 0, 0, 1024, 0, SCHED_POLICY_OTHER}, + {0, 0, 0, 1024, 0, SCHED_POLICY_OTHER}, + {0, 0, 0, 1024, 0, SCHED_POLICY_OTHER}, + {0, 0, 0, 1024, 0, SCHED_POLICY_OTHER}, } }; @@ -35,19 +35,19 @@ static struct QosPolicyDatas g_foregroundQosPolicy = { .policyType = QOS_POLICY_FRONT, .policyFlag = QOS_FLAG_ALL, .policys = { - {10, 10, 0, 200, 0}, - {5, 5, 0, 250, 0}, - {0, 0, 0, 1024, 0}, + {10, 10, 0, 200, 0, SCHED_POLICY_OTHER}, + {5, 5, 0, 250, 0, SCHED_POLICY_OTHER}, + {0, 0, 0, 1024, 0, SCHED_POLICY_OTHER}, #ifdef QOS_EXT_ENABLE - {-10, 0, 0, 1024, 0}, - {-10, -10, 0, 1024, 0}, - {-10, -10, 0, 1024, 0}, + {-10, 0, 0, 1024, 0, SCHED_POLICY_OTHER}, + {-10, -10, 0, 1024, 0, SCHED_POLICY_OTHER}, + {-10, -10, 0, 1024, 0, SCHED_POLICY_OTHER}, #else - {0, 0, 0, 1024, 0}, - {0, 0, 0, 1024, 0}, - {0, 0, 0, 1024, 0}, + {0, 0, 0, 1024, 0, SCHED_POLICY_OTHER}, + {0, 0, 0, 1024, 0, SCHED_POLICY_OTHER}, + {0, 0, 0, 1024, 0, SCHED_POLICY_OTHER}, #endif - {0, 0, 0, 1024, 0}, + {0, 0, 0, 1024, 0, SCHED_POLICY_OTHER}, } }; @@ -55,18 +55,18 @@ static struct QosPolicyDatas g_backgroundQosPolicy = { .policyType = QOS_POLICY_BACK, .policyFlag = QOS_FLAG_ALL & ~QOS_FLAG_RT, .policys = { - {15, 15, 0, 150, 0}, - {10, 10, 0, 200, 0}, - {5, 5, 0, 250, 0}, - {0, 0, 0, 300, 0}, + {15, 15, 0, 150, 0, SCHED_POLICY_OTHER}, + {10, 10, 0, 200, 0, SCHED_POLICY_OTHER}, + {5, 5, 0, 250, 0, SCHED_POLICY_OTHER}, + {0, 0, 0, 300, 0, SCHED_POLICY_OTHER}, #ifdef QOS_EXT_ENABLE - {-5, -5, 0, 350, 0}, - {-5, -5, 0, 350, 0}, + {-5, -5, 0, 350, 0, SCHED_POLICY_OTHER}, + {-5, -5, 0, 350, 0, SCHED_POLICY_OTHER}, #else - {0, 0, 0, 1024, 0}, - {0, 0, 0, 1024, 0}, + {0, 0, 0, 1024, 0, SCHED_POLICY_OTHER}, + {0, 0, 0, 1024, 0, SCHED_POLICY_OTHER}, #endif - {0, 0, 0, 1024, 0}, + {0, 0, 0, 1024, 0, SCHED_POLICY_OTHER}, } }; @@ -74,19 +74,19 @@ static struct QosPolicyDatas g_systemServerQosPolicy = { .policyType = QOS_POLICY_SYSTEM_SERVER, .policyFlag = QOS_FLAG_ALL, .policys = { - {10, 10, 0, 200, 0}, - {5, 5, 0, 250, 0}, - {0, 0, 0, 1024, 0}, + {10, 10, 0, 200, 0, SCHED_POLICY_OTHER}, + {5, 5, 0, 250, 0, SCHED_POLICY_OTHER}, + {0, 0, 0, 1024, 0, SCHED_POLICY_OTHER}, #ifdef QOS_EXT_ENABLE - {-10, 0, 0, 1024, 0}, - {-10, -10, 0, 1024, 0}, - {-10, -10, 0, 1024, 1}, + {-10, 0, 0, 1024, 0, SCHED_POLICY_OTHER}, + {-10, -10, 0, 1024, 0, SCHED_POLICY_OTHER}, + {-10, -10, 0, 1024, 1, SCHED_POLICY_FIFO | SCHED_RESET_ON_FORK}, #else - {0, 0, 0, 1024, 0}, - {0, 0, 0, 1024, 0}, - {0, 0, 0, 1024, 0}, + {0, 0, 0, 1024, 0, SCHED_POLICY_OTHER}, + {0, 0, 0, 1024, 0, SCHED_POLICY_OTHER}, + {0, 0, 0, 1024, 0, SCHED_POLICY_OTHER}, #endif - {0, 0, 0, 1024, 0}, + {0, 0, 0, 1024, 0, SCHED_POLICY_OTHER}, } }; @@ -94,19 +94,19 @@ static struct QosPolicyDatas g_focusQosPolicy = { .policyType = QOS_POLICY_FOCUS, .policyFlag = QOS_FLAG_ALL, .policys = { - {10, 10, 0, 200, 0}, - {5, 5, 0, 250, 0}, - {0, 0, 0, 1024, 0}, + {10, 10, 0, 200, 0, SCHED_POLICY_OTHER}, + {5, 5, 0, 250, 0, SCHED_POLICY_OTHER}, + {0, 0, 0, 1024, 0, SCHED_POLICY_OTHER}, #ifdef QOS_EXT_ENABLE - {-10, 0, 0, 1024, 0}, - {-10, -10, 0, 1024, 0}, - {-10, -10, 0, 1024, 1}, + {-10, 0, 0, 1024, 0, SCHED_POLICY_OTHER}, + {-10, -10, 0, 1024, 0, SCHED_POLICY_OTHER}, + {-10, -10, 0, 1024, 1, SCHED_POLICY_RT_EX | SCHED_RESET_ON_FORK}, #else - {0, 0, 0, 1024, 0}, - {0, 0, 0, 1024, 0}, - {0, 0, 0, 1024, 0}, + {0, 0, 0, 1024, 0, SCHED_POLICY_OTHER}, + {0, 0, 0, 1024, 0, SCHED_POLICY_OTHER}, + {0, 0, 0, 1024, 0, SCHED_POLICY_OTHER}, #endif - {0, 0, 0, 1024, 0}, + {0, 0, 0, 1024, 0, SCHED_POLICY_OTHER}, } }; -- Gitee