[PATCH v2 3/4] rtems: Add _Modes_Apply_timeslice_to_thread()
Sebastian Huber
sebastian.huber at embedded-brains.de
Fri Feb 19 09:40:37 UTC 2021
Update #4244.
---
cpukit/include/rtems/rtems/modesimpl.h | 21 +++++++++++++++++++++
cpukit/rtems/src/taskmode.c | 8 +-------
2 files changed, 22 insertions(+), 7 deletions(-)
diff --git a/cpukit/include/rtems/rtems/modesimpl.h b/cpukit/include/rtems/rtems/modesimpl.h
index fe7f5e5721..6f8d08bbed 100644
--- a/cpukit/include/rtems/rtems/modesimpl.h
+++ b/cpukit/include/rtems/rtems/modesimpl.h
@@ -22,6 +22,7 @@
#include <rtems/score/schedulerimpl.h>
#include <rtems/score/smpimpl.h>
#include <rtems/score/threadimpl.h>
+#include <rtems/config.h>
#ifdef __cplusplus
extern "C" {
@@ -133,6 +134,26 @@ RTEMS_INLINE_ROUTINE bool _Modes_Is_preempt_mode_implemented(
}
#endif
+/**
+ * @brief Applies the timeslice mode to the thread.
+ *
+ * @param mode_set is the most set which specifies the timeslice mode for the thread.
+ *
+ * @param[out] the_thread is the thread to apply the timeslice mode.
+ */
+RTEMS_INLINE_ROUTINE void _Modes_Apply_timeslice_to_thread(
+ rtems_mode mode_set,
+ Thread_Control *the_thread
+)
+{
+ if ( _Modes_Is_timeslice( mode_set ) ) {
+ the_thread->budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE;
+ the_thread->cpu_time_budget = rtems_configuration_get_ticks_per_timeslice();
+ } else {
+ the_thread->budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE;
+ }
+}
+
#ifdef __cplusplus
}
#endif
diff --git a/cpukit/rtems/src/taskmode.c b/cpukit/rtems/src/taskmode.c
index 1275576968..c4216874f3 100644
--- a/cpukit/rtems/src/taskmode.c
+++ b/cpukit/rtems/src/taskmode.c
@@ -27,7 +27,6 @@
#include <rtems/score/schedulerimpl.h>
#include <rtems/score/smpimpl.h>
#include <rtems/score/threadimpl.h>
-#include <rtems/config.h>
rtems_status_code rtems_task_mode(
rtems_mode mode_set,
@@ -99,12 +98,7 @@ rtems_status_code rtems_task_mode(
}
if ( mask & RTEMS_TIMESLICE_MASK ) {
- if ( _Modes_Is_timeslice(mode_set) ) {
- executing->budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE;
- executing->cpu_time_budget =
- rtems_configuration_get_ticks_per_timeslice();
- } else
- executing->budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE;
+ _Modes_Apply_timeslice_to_thread( mode_set, executing );
}
/*
--
2.26.2
More information about the devel
mailing list