source: rtems/cpukit/score/src/schedulerpriorityaffinitysmp.c @ 8e467384

4.115
Last change on this file since 8e467384 was 8e467384, checked in by Sebastian Huber <sebastian.huber@…>, on 06/03/14 at 08:29:30

score: Replace _Scheduler_Allocate/Free()

Replace _Scheduler_Allocate() with _Scheduler_Node_initialize(). Remove
the return status and thus the node initialization must be always
successful.

Rename _Scheduler_Free() to _Scheduler_Node_destroy().

  • Property mode set to 100644
File size: 2.1 KB
RevLine 
[56c396b]1/**
2 * @file
3 *
4 * @brief Deterministic Priority Affinity SMP Scheduler Implementation
5 *
6 * @ingroup ScoreSchedulerPriorityAffinitySMP
7 */
8
9/*
10 *  COPYRIGHT (c) 2014.
11 *  On-Line Applications Research Corporation (OAR).
12 *
13 *  The license and distribution terms for this file may be
14 *  found in the file LICENSE in this distribution or at
15 *  http://www.rtems.org/license/LICENSE.
16 */
17
18#if HAVE_CONFIG_H
19  #include "config.h"
20#endif
21
22#include <rtems/score/schedulerpriorityaffinitysmp.h>
23#include <rtems/score/schedulerpriorityimpl.h>
24#include <rtems/score/schedulersmpimpl.h>
25#include <rtems/score/wkspace.h>
26#include <rtems/score/cpusetimpl.h>
27
[beab7329]28static Scheduler_priority_affinity_SMP_Node *
29_Scheduler_priority_affinity_Node_get( Thread_Control *thread )
[56c396b]30{
[beab7329]31  return ( Scheduler_priority_affinity_SMP_Node * )
32    _Scheduler_Node_get( thread );
[56c396b]33}
34
[8e467384]35void _Scheduler_priority_affinity_SMP_Node_initialize(
[e1598a6]36  const Scheduler_Control *scheduler,
37  Thread_Control          *the_thread
[24934e36]38)
[56c396b]39{
[beab7329]40  Scheduler_priority_affinity_SMP_Node *node =
41    _Scheduler_priority_affinity_Node_get( the_thread );
[56c396b]42
[beab7329]43  _Scheduler_SMP_Node_initialize( &node->Base.Base );
44
45  node->Affinity = *_CPU_set_Default();
46  node->Affinity.set = &node->Affinity.preallocated;
[56c396b]47}
48
49bool _Scheduler_priority_affinity_SMP_Get_affinity(
[e1598a6]50  const Scheduler_Control *scheduler,
51  Thread_Control          *thread,
52  size_t                   cpusetsize,
53  cpu_set_t               *cpuset
[56c396b]54)
55{
[beab7329]56  Scheduler_priority_affinity_SMP_Node *node =
57    _Scheduler_priority_affinity_Node_get(thread);
[56c396b]58
[24934e36]59  (void) scheduler;
60
[beab7329]61  if ( node->Affinity.setsize != cpusetsize ) {
[56c396b]62    return false;
63  }
64
[beab7329]65  CPU_COPY( cpuset, node->Affinity.set );
[56c396b]66  return true;
67}
68
69bool _Scheduler_priority_affinity_SMP_Set_affinity(
[e1598a6]70  const Scheduler_Control *scheduler,
71  Thread_Control          *thread,
72  size_t                   cpusetsize,
73  cpu_set_t               *cpuset
[56c396b]74)
75{
[beab7329]76  Scheduler_priority_affinity_SMP_Node *node =
77    _Scheduler_priority_affinity_Node_get(thread);
[24934e36]78
79  (void) scheduler;
[56c396b]80 
81  if ( ! _CPU_set_Is_valid( cpuset, cpusetsize ) ) {
82    return false;
83  }
84
[beab7329]85  CPU_COPY( node->Affinity.set, cpuset );
[56c396b]86 
87  return true;
88}
Note: See TracBrowser for help on using the repository browser.