summaryrefslogtreecommitdiffstats
path: root/cpukit/score/src/schedulersetaffinity.c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2014-05-28 18:11:51 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2014-06-02 08:28:42 +0200
commit25f5730fe515911e42591f66294baff0369d9883 (patch)
treea6ab2d7c98499ec959d4272a2ec9bd6069589e09 /cpukit/score/src/schedulersetaffinity.c
parentscore: _Scheduler_Get_affinity() (diff)
downloadrtems-25f5730fe515911e42591f66294baff0369d9883.tar.bz2
score: _Scheduler_Set_affinity()
Do not change the scheduler with this function. Documentation. Coding style.
Diffstat (limited to 'cpukit/score/src/schedulersetaffinity.c')
-rw-r--r--cpukit/score/src/schedulersetaffinity.c52
1 files changed, 17 insertions, 35 deletions
diff --git a/cpukit/score/src/schedulersetaffinity.c b/cpukit/score/src/schedulersetaffinity.c
index a20888b617..f7c9336df1 100644
--- a/cpukit/score/src/schedulersetaffinity.c
+++ b/cpukit/score/src/schedulersetaffinity.c
@@ -26,45 +26,27 @@ bool _Scheduler_Set_affinity(
const cpu_set_t *cpuset
)
{
- bool ok;
+ const Scheduler_Control *scheduler = _Scheduler_Get( the_thread );
- if ( _CPU_set_Is_large_enough( cpusetsize ) ) {
-#if defined(RTEMS_SMP)
- uint32_t cpu_count = _SMP_Get_processor_count();
- uint32_t cpu_index;
-
- ok = false;
-
- for ( cpu_index = 0 ; cpu_index < cpu_count ; ++cpu_index ) {
- if ( CPU_ISSET_S( (int) cpu_index, cpusetsize, cpuset ) ) {
- const Scheduler_Control *scheduler_of_cpu =
- _Scheduler_Get_by_CPU_index( cpu_index );
-
- if ( scheduler_of_cpu != NULL ) {
- ok = ( *scheduler_of_cpu->Operations.set_affinity )(
- scheduler_of_cpu,
- the_thread,
- cpusetsize,
- cpuset
- );
- }
+ if ( !_CPU_set_Is_large_enough( cpusetsize ) ) {
+ return false;
+ }
- break;
- }
- }
+#if defined(RTEMS_SMP)
+ return ( *scheduler->Operations.set_affinity )(
+ scheduler,
+ the_thread,
+ cpusetsize,
+ cpuset
+ );
#else
- ok = _Scheduler_default_Set_affinity_body(
- _Scheduler_Get( the_thread ),
- the_thread,
- cpusetsize,
- cpuset
- );
+ return _Scheduler_default_Set_affinity_body(
+ scheduler,
+ the_thread,
+ cpusetsize,
+ cpuset
+ );
#endif
- } else {
- ok = false;
- }
-
- return ok;
}
#endif /* defined(__RTEMS_HAVE_SYS_CPUSET_H__) */