@@ -43,7 +43,6 @@ void set_priority(const NUClear::PriorityLevel& priority) {
4343} // namespace
4444
4545#elif defined(__linux__)
46-
4746 #include < pthread.h>
4847 #include < sched.h>
4948
@@ -91,28 +90,16 @@ void set_priority(const NUClear::PriorityLevel& priority) {
9190
9291namespace {
9392
94- // / The minimum priority level for the SCHED_RR policy
95- const int min_rr_priority = sched_get_priority_min(SCHED_RR);
96- // / The maximum priority level for the SCHED_RR policy
97- const int max_rr_priority = sched_get_priority_max(SCHED_RR);
98-
9993void set_priority (const NUClear::PriorityLevel& priority) {
100- auto sched_priority = min_rr_priority + (priority / (max_rr_priority - min_rr_priority));
101-
102- sched_param p{};
103- p.sched_priority = sched_priority;
104- pthread_setschedparam (pthread_self (), SCHED_RR, &p);
105-
106- // TODO this fails in CI maybe the system calls are too much?
107- // switch (priority) {
108- // case NUClear::PriorityLevel::IDLE: pthread_set_qos_class_self_np(QOS_CLASS_BACKGROUND, 0); break;
109- // case NUClear::PriorityLevel::LOWEST: pthread_set_qos_class_self_np(QOS_CLASS_UTILITY, 1); break;
110- // case NUClear::PriorityLevel::LOW: pthread_set_qos_class_self_np(QOS_CLASS_UTILITY, 0); break;
111- // case NUClear::PriorityLevel::NORMAL: pthread_set_qos_class_self_np(QOS_CLASS_DEFAULT, 0); break;
112- // case NUClear::PriorityLevel::HIGH: pthread_set_qos_class_self_np(QOS_CLASS_USER_INITIATED, 1); break;
113- // case NUClear::PriorityLevel::HIGHEST: pthread_set_qos_class_self_np(QOS_CLASS_USER_INITIATED, 0); break;
114- // case NUClear::PriorityLevel::REALTIME: pthread_set_qos_class_self_np(QOS_CLASS_USER_INTERACTIVE, 0); break;
115- // }
94+ switch (priority) {
95+ case NUClear::PriorityLevel::IDLE: pthread_set_qos_class_self_np (QOS_CLASS_BACKGROUND, 0 ); break ;
96+ case NUClear::PriorityLevel::LOWEST: pthread_set_qos_class_self_np (QOS_CLASS_UTILITY, 1 ); break ;
97+ case NUClear::PriorityLevel::LOW: pthread_set_qos_class_self_np (QOS_CLASS_UTILITY, 0 ); break ;
98+ case NUClear::PriorityLevel::NORMAL: pthread_set_qos_class_self_np (QOS_CLASS_DEFAULT, 0 ); break ;
99+ case NUClear::PriorityLevel::HIGH: pthread_set_qos_class_self_np (QOS_CLASS_USER_INITIATED, 1 ); break ;
100+ case NUClear::PriorityLevel::HIGHEST: pthread_set_qos_class_self_np (QOS_CLASS_USER_INITIATED, 0 ); break ;
101+ case NUClear::PriorityLevel::REALTIME: pthread_set_qos_class_self_np (QOS_CLASS_USER_INTERACTIVE, 0 ); break ;
102+ }
116103}
117104
118105} // namespace
0 commit comments