diff --git a/services/include/qos_interface.h b/services/include/qos_interface.h index 057b7695fc26c49cd52378399c282013dd1b1c1e..3fcf365ea4d093e39fd29b62e383c7ba25ad0ae8 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 d5f687b78d51ea67abe5a2d1473b210c3b885cc7..ddfba68a3241d2f2e0921534ecb328b64550866f 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}, } };