summaryrefslogtreecommitdiffstats
path: root/spec/rtems/config/if/group.yml
blob: ad13c9ac5313c8d0b42982bc3efdb82650da1157 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
brief: |
  The application configuration information group provides an API to get the
  configuration of an application.
copyrights:
- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
description: |
  RTEMS must be configured for an application.  This configuration encompasses a
  variety of information including the length of each clock tick, the maximum
  number of each information RTEMS object that can be created, the application
  initialization tasks, the task scheduling algorithm to be used, and the device
  drivers in the application.

  Although this information is contained in data structures that are used by
  RTEMS at system initialization time, the data structures themselves must not be
  generated by hand. RTEMS provides a set of macros system which provides a
  simple standard mechanism to automate the generation of these structures.

  The RTEMS header file ``<rtems/confdefs.h>`` is at the core of the automatic
  generation of system configuration. It is based on the idea of setting macros
  which define configuration parameters of interest to the application and
  defaulting or calculating all others. This variety of macros can automatically
  produce all of the configuration data required for an RTEMS application.  The
  term ``confdefs`` is shorthand for a *Configuration Defaults*.

  As a general rule, application developers only specify values for the
  configuration parameters of interest to them. They define what resources or
  features they require. In most cases, when a parameter is not specified, it
  defaults to zero (0) instances, a standards compliant value, or disabled as
  appropriate. For example, by default there will be 256 task priority levels but
  this can be lowered by the application. This number of priority levels is
  required to be compliant with the RTEID/ORKID standards upon which the Classic
  API is based. There are similar cases where the default is selected to be
  compliant with the POSIX standard.

  For each configuration parameter in the configuration tables, the macro
  corresponding to that field is discussed. The RTEMS Maintainers expect that all
  systems can be easily configured using the ``<rtems/confdefs.h>`` mechanism and
  that using this mechanism will avoid internal RTEMS configuration changes
  impacting applications.

  Some application configuration settings and other system parameters can be
  queried by the application.
enabled-by: true
identifier: RTEMSAPIConfig
index-entries:
- confdefs.h
- <rtems/confdefs.h>
interface-type: group
links:
- role: interface-placement
  uid: header
- role: interface-ingroup
  uid: /if/group
- role: placement-order
  uid: get-build-label
- role: placement-order
  uid: get-copyright-notice
- role: placement-order
  uid: get-target-hash
- role: placement-order
  uid: get-version-string
- role: placement-order
  uid: get-do-zero-of-workspace
- role: placement-order
  uid: get-idle-task-stack-size
- role: placement-order
  uid: get-idle-task
- role: placement-order
  uid: get-interrupt-stack-size
- role: placement-order
  uid: get-maximum-barriers
- role: placement-order
  uid: get-maximum-extensions
- role: placement-order
  uid: get-maximum-message-queues
- role: placement-order
  uid: get-maximum-partitions
- role: placement-order
  uid: get-maximum-periods
- role: placement-order
  uid: get-maximum-ports
- role: placement-order
  uid: get-maximum-processors
- role: placement-order
  uid: get-maximum-regions
- role: placement-order
  uid: get-maximum-semaphores
- role: placement-order
  uid: get-maximum-tasks
- role: placement-order
  uid: get-maximum-timers
- role: placement-order
  uid: get-microseconds-per-tick
- role: placement-order
  uid: get-milliseconds-per-tick
- role: placement-order
  uid: get-nanoseconds-per-tick
- role: placement-order
  uid: get-number-of-initial-extensions
- role: placement-order
  uid: get-stack-allocate-for-idle-hook
- role: placement-order
  uid: get-stack-allocate-hook
- role: placement-order
  uid: get-stack-allocate-init-hook
- role: placement-order
  uid: get-stack-allocator-avoids-work-space
- role: placement-order
  uid: get-stack-free-hook
- role: placement-order
  uid: get-stack-space-size
- role: placement-order
  uid: get-ticks-per-timeslice
- role: placement-order
  uid: get-unified-work-area
- role: placement-order
  uid: get-user-extension-table
- role: placement-order
  uid: get-user-multiprocessing-table
- role: placement-order
  uid: get-work-space-size
- role: placement-order
  uid: get-api-configuration
- role: placement-order
  uid: resource-is-unlimited
- role: placement-order
  uid: resource-maximum-per-allocation
- role: placement-order
  uid: resource-unlimited
name: Application Configuration Information
text: |
  The RTEMS API shall provide an interface to get the configuration of an
  application.
type: interface