RTEMS  5.0.0
pthreadattrimpl.h
Go to the documentation of this file.
1 
10 /*
11  * COPYRIGHT (c) 1989-2011.
12  * On-Line Applications Research Corporation (OAR).
13  *
14  * The license and distribution terms for this file may be
15  * found in the file LICENSE in this distribution or at
16  * http://www.rtems.org/license/LICENSE.
17  */
18 
19 #ifndef _RTEMS_POSIX_PTHREADATTRIMPL_H
20 #define _RTEMS_POSIX_PTHREADATTRIMPL_H
21 
22 #include <errno.h>
23 #include <pthread.h>
24 
25 #include <rtems/score/basedefs.h>
26 #include <rtems/score/assert.h>
28 #include <rtems/posix/threadsup.h>
29 
30 #ifdef __cplusplus
31 extern "C" {
32 #endif
33 
42 extern const pthread_attr_t _POSIX_Threads_Default_attributes;
43 
44 RTEMS_INLINE_ROUTINE void _POSIX_Threads_Copy_attributes(
45  pthread_attr_t *dst_attr,
46  const pthread_attr_t *src_attr
47 )
48 {
49  *dst_attr = *src_attr;
50  _Assert(
51  dst_attr->affinitysetsize == sizeof(dst_attr->affinitysetpreallocated)
52  );
53  dst_attr->affinityset = &dst_attr->affinitysetpreallocated;
54 }
55 
56 RTEMS_INLINE_ROUTINE void _POSIX_Threads_Initialize_attributes(
57  pthread_attr_t *attr
58 )
59 {
60  _POSIX_Threads_Copy_attributes(
61  attr,
62  &_POSIX_Threads_Default_attributes
63  );
64 }
65 
66 RTEMS_INLINE_ROUTINE void _POSIX_Threads_Get_sched_param_sporadic(
67  const Thread_Control *the_thread,
68  const Scheduler_Control *scheduler,
69  struct sched_param *param
70 )
71 {
72 #if defined(RTEMS_POSIX_API)
73  const POSIX_API_Control *api;
74 
75  api = the_thread->API_Extensions[ THREAD_API_POSIX ];
76  param->sched_ss_low_priority = _POSIX_Priority_From_core(
77  scheduler,
78  api->Sporadic.Low_priority.priority
79  );
80  param->sched_ss_repl_period = api->Sporadic.sched_ss_repl_period;
81  param->sched_ss_init_budget = api->Sporadic.sched_ss_init_budget;
82  param->sched_ss_max_repl = api->Sporadic.sched_ss_max_repl;
83 #else
84  (void) the_thread;
85  (void) scheduler;
86  (void) param;
87 #endif
88 }
89 
92 #ifdef __cplusplus
93 }
94 #endif
95 
96 #endif
97 /* end of include file */
#define RTEMS_INLINE_ROUTINE
Definition: basedefs.h:65
POSIX Threads Private Support.
const pthread_attr_t _POSIX_Threads_Default_attributes
Definition: pthreadattrdefault.c:29
POSIX Thread API Support.
int _POSIX_Priority_From_core(const Scheduler_Control *scheduler, Priority_Control priority)
Converts the SuperCore priority to the corresponding POSIX API priority.
Definition: psxpriorityisvalid.c:42
Definition: thread.h:728
void * API_Extensions[THREAD_API_LAST+1]
Definition: thread.h:843
Definition: thread.h:589
Scheduler control.
Definition: scheduler.h:266
Basic Definitions.
POSIX Priority Support.