RTEMS: cpukit/include/rtems/posix/pthreadattrimpl.h Source File

| RTEMS 5.4-rc2

Loading...
Searching...
No Matches
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>
27#include <rtems/posix/priorityimpl.h>
28#include <rtems/posix/threadsup.h>
29
30#ifdef __cplusplus
31extern "C" {
32#endif
33
42extern 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 = (const POSIX_API_Control*) 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 */
assert.h
Information for the Assert Handler.
basedefs.h
Basic Definitions.
_POSIX_Priority_From_core
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
_POSIX_Threads_Default_attributes
const pthread_attr_t _POSIX_Threads_Default_attributes
Definition: pthreadattrdefault.c:30
_Assert
#define _Assert(_e)
Assertion similar to assert() controlled via RTEMS_DEBUG instead of NDEBUG.
Definition: assert.h:100
RTEMS_INLINE_ROUTINE
#define RTEMS_INLINE_ROUTINE
Definition: basedefs.h:66
THREAD_API_POSIX
@ THREAD_API_POSIX
Definition: thread.h:593
priorityimpl.h
POSIX Priority Support.
pthread.h
POSIX Threads Private Support.
_Scheduler_Control
Scheduler control.
Definition: scheduler.h:269
_Thread_Control
Definition: thread.h:732
_Thread_Control::API_Extensions
void * API_Extensions[THREAD_API_LAST+1]
Definition: thread.h:847
threadsup.h
POSIX Thread API Support.