source: rtems/cpukit/include/rtems/posix/pthreadattrimpl.h @ 21275b58

5
Last change on this file since 21275b58 was 54f35888, checked in by Sebastian Huber <sebastian.huber@…>, on 10/25/18 at 08:54:12

posix: Provide threads by default

Update #2514.

  • Property mode set to 100644
File size: 2.1 KB
Line 
1/**
2 * @file
3 *
4 * @brief POSIX Threads Private Support
5 *
6 * This include file contains all the private support information for
7 * POSIX threads.
8 */
9
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
34/**
35 * @addtogroup POSIX_PTHREAD
36 */
37/**@{**/
38
39/**
40 * This variable contains the default POSIX Thread attributes.
41 */
42extern const pthread_attr_t _POSIX_Threads_Default_attributes;
43
44RTEMS_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
56RTEMS_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
66RTEMS_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
90/** @} */
91
92#ifdef __cplusplus
93}
94#endif
95
96#endif
97/*  end of include file */
Note: See TracBrowser for help on using the repository browser.