diff options
Diffstat (limited to 'spec/rtems')
666 files changed, 21213 insertions, 0 deletions
diff --git a/spec/rtems/attr/if/application-task.yml b/spec/rtems/attr/if/application-task.yml new file mode 100644 index 00000000..b33293e2 --- /dev/null +++ b/spec/rtems/attr/if/application-task.yml @@ -0,0 +1,21 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This attribute constant indicates that the task was created by the + application using normal Classic API methods. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_APPLICATION_TASK +notes: null +type: interface diff --git a/spec/rtems/attr/if/attribute.yml b/spec/rtems/attr/if/attribute.yml new file mode 100644 index 00000000..18054d55 --- /dev/null +++ b/spec/rtems/attr/if/attribute.yml @@ -0,0 +1,21 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This type is used to represent Classic API attributes. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/c/if/uint32_t:/name} ${.:/name} + variants: [] +description: null +enabled-by: true +interface-type: typedef +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_attribute +notes: | + Attributes are primarily used when creating objects. +type: interface diff --git a/spec/rtems/attr/if/barrier-automatic-release.yml b/spec/rtems/attr/if/barrier-automatic-release.yml new file mode 100644 index 00000000..f60760d0 --- /dev/null +++ b/spec/rtems/attr/if/barrier-automatic-release.yml @@ -0,0 +1,21 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This attribute constant indicates that the Classic API Barrier instance + created will use an automatic release protocol. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000200' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_BARRIER_AUTOMATIC_RELEASE +notes: null +type: interface diff --git a/spec/rtems/attr/if/barrier-manual-release.yml b/spec/rtems/attr/if/barrier-manual-release.yml new file mode 100644 index 00000000..27c3d02b --- /dev/null +++ b/spec/rtems/attr/if/barrier-manual-release.yml @@ -0,0 +1,21 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This attribute constant indicates that the Classic API Barrier instance + created will use the manual release protocol. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_BARRIER_MANUAL_RELEASE +notes: null +type: interface diff --git a/spec/rtems/attr/if/binary-semaphore.yml b/spec/rtems/attr/if/binary-semaphore.yml new file mode 100644 index 00000000..f994060e --- /dev/null +++ b/spec/rtems/attr/if/binary-semaphore.yml @@ -0,0 +1,21 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This attribute constant indicates that the Classic API Semaphore instance + created will be a proper binary semaphore or mutex. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000010' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_BINARY_SEMAPHORE +notes: null +type: interface diff --git a/spec/rtems/attr/if/counting-semaphore.yml b/spec/rtems/attr/if/counting-semaphore.yml new file mode 100644 index 00000000..9d7c69ad --- /dev/null +++ b/spec/rtems/attr/if/counting-semaphore.yml @@ -0,0 +1,21 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This attribute constant indicates that the Classic API Semaphore instance + created will be a counting semaphore. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_COUNTING_SEMAPHORE +notes: null +type: interface diff --git a/spec/rtems/attr/if/default.yml b/spec/rtems/attr/if/default.yml new file mode 100644 index 00000000..1c4985fa --- /dev/null +++ b/spec/rtems/attr/if/default.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This is the default value for an attribute set. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_DEFAULT_ATTRIBUTES +notes: null +type: interface diff --git a/spec/rtems/attr/if/fifo.yml b/spec/rtems/attr/if/fifo.yml new file mode 100644 index 00000000..4df3d6e7 --- /dev/null +++ b/spec/rtems/attr/if/fifo.yml @@ -0,0 +1,21 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This is the attribute constant which reflects that blocking tasks will be + managed using FIFO discipline. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_FIFO +notes: null +type: interface diff --git a/spec/rtems/attr/if/floating-point.yml b/spec/rtems/attr/if/floating-point.yml new file mode 100644 index 00000000..40b8ea94 --- /dev/null +++ b/spec/rtems/attr/if/floating-point.yml @@ -0,0 +1,23 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This attribute constant indicates that the task will use the floating point + hardware. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000001' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_FLOATING_POINT +notes: | + On some architectures, there will be a floating point context associated with + this task. +type: interface diff --git a/spec/rtems/attr/if/global.yml b/spec/rtems/attr/if/global.yml new file mode 100644 index 00000000..a88b886c --- /dev/null +++ b/spec/rtems/attr/if/global.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This is the attribute constant to indicate global resource. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000002' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_GLOBAL +notes: null +type: interface diff --git a/spec/rtems/attr/if/group.yml b/spec/rtems/attr/if/group.yml new file mode 100644 index 00000000..d28fd5d4 --- /dev/null +++ b/spec/rtems/attr/if/group.yml @@ -0,0 +1,18 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This group contains the Classic API directive attributes. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +description: null +enabled-by: true +identifier: RTEMSAPIClassicAttr +interface-type: group +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: ../../if/group +name: Directive Attributes +text: | + The Classic API shall provide an interface to directive attributes. +type: interface diff --git a/spec/rtems/attr/if/header.yml b/spec/rtems/attr/if/header.yml new file mode 100644 index 00000000..ae4340e8 --- /dev/null +++ b/spec/rtems/attr/if/header.yml @@ -0,0 +1,12 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: This header file defines attributes provided by the API. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +interface-type: header-file +links: +- role: interface-placement + uid: /if/domain +path: rtems/rtems/attr.h +prefix: cpukit/include +type: interface diff --git a/spec/rtems/attr/if/inherit-priority.yml b/spec/rtems/attr/if/inherit-priority.yml new file mode 100644 index 00000000..161472d2 --- /dev/null +++ b/spec/rtems/attr/if/inherit-priority.yml @@ -0,0 +1,22 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This attribute constant indicates that the Classic API Semaphore instance + created will use the Priority Inheritance Protocol. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000040' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_INHERIT_PRIORITY +notes: | + The semaphore instance must be a binary semaphore. +type: interface diff --git a/spec/rtems/attr/if/local.yml b/spec/rtems/attr/if/local.yml new file mode 100644 index 00000000..9147f3cf --- /dev/null +++ b/spec/rtems/attr/if/local.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This is the attribute constant to indicate local resource. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_LOCAL +notes: null +type: interface diff --git a/spec/rtems/attr/if/multiprocessor-resource-sharing.yml b/spec/rtems/attr/if/multiprocessor-resource-sharing.yml new file mode 100644 index 00000000..3cb4c0c6 --- /dev/null +++ b/spec/rtems/attr/if/multiprocessor-resource-sharing.yml @@ -0,0 +1,21 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This attribute constant indicates that the Classic API Semaphore instance + created will use the Multiprocessor Resource Sharing Protocol. +copyrights: +- Copyright (C) 2014, 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: '0x00000100' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_MULTIPROCESSOR_RESOURCE_SHARING +notes: | + The semaphore instance must be a binary semaphore. +type: interface diff --git a/spec/rtems/attr/if/no-floating-point.yml b/spec/rtems/attr/if/no-floating-point.yml new file mode 100644 index 00000000..0d97cab4 --- /dev/null +++ b/spec/rtems/attr/if/no-floating-point.yml @@ -0,0 +1,23 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This attribute constant indicates that the task will not use the floating + point hardware. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_NO_FLOATING_POINT +notes: | + If the architecture permits it, then the FPU will be disabled when the task + is executing. +type: interface diff --git a/spec/rtems/attr/if/no-inherit-priority.yml b/spec/rtems/attr/if/no-inherit-priority.yml new file mode 100644 index 00000000..c3d8656f --- /dev/null +++ b/spec/rtems/attr/if/no-inherit-priority.yml @@ -0,0 +1,21 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This attribute constant indicates that the Classic API Semaphore instance + created will not use the Priority Inheritance Protocol. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_NO_INHERIT_PRIORITY +notes: null +type: interface diff --git a/spec/rtems/attr/if/no-multiprocessor-resource-sharing.yml b/spec/rtems/attr/if/no-multiprocessor-resource-sharing.yml new file mode 100644 index 00000000..050627d5 --- /dev/null +++ b/spec/rtems/attr/if/no-multiprocessor-resource-sharing.yml @@ -0,0 +1,21 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This attribute constant indicates that the Classic API Semaphore instance + created will not use the Multiprocessor Resource Sharing Protocol. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_NO_MULTIPROCESSOR_RESOURCE_SHARING +notes: null +type: interface diff --git a/spec/rtems/attr/if/no-priority-ceiling.yml b/spec/rtems/attr/if/no-priority-ceiling.yml new file mode 100644 index 00000000..ee71f3f3 --- /dev/null +++ b/spec/rtems/attr/if/no-priority-ceiling.yml @@ -0,0 +1,21 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This attribute constant indicates that the Classic API Semaphore instance + created will not use the Priority Ceiling Protocol. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_NO_PRIORITY_CEILING +notes: null +type: interface diff --git a/spec/rtems/attr/if/priority-ceiling.yml b/spec/rtems/attr/if/priority-ceiling.yml new file mode 100644 index 00000000..c5e8ba7b --- /dev/null +++ b/spec/rtems/attr/if/priority-ceiling.yml @@ -0,0 +1,22 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This attribute constant indicates that the Classic API Semaphore instance + created will use the Priority Ceiling Protocol. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000080' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_PRIORITY_CEILING +notes: | + The semaphore instance must be a binary semaphore. +type: interface diff --git a/spec/rtems/attr/if/priority.yml b/spec/rtems/attr/if/priority.yml new file mode 100644 index 00000000..363b548c --- /dev/null +++ b/spec/rtems/attr/if/priority.yml @@ -0,0 +1,21 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This is the attribute constant which reflects that blocking tasks will be + managed using task priority discipline. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000004' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_PRIORITY +notes: null +type: interface diff --git a/spec/rtems/attr/if/semaphore-class.yml b/spec/rtems/attr/if/semaphore-class.yml new file mode 100644 index 00000000..d719886b --- /dev/null +++ b/spec/rtems/attr/if/semaphore-class.yml @@ -0,0 +1,21 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This is the mask for the attribute bits associated with the Classic API + Semaphore Manager. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000030' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_SEMAPHORE_CLASS +notes: null +type: interface diff --git a/spec/rtems/attr/if/simple-binary-semaphore.yml b/spec/rtems/attr/if/simple-binary-semaphore.yml new file mode 100644 index 00000000..4853914e --- /dev/null +++ b/spec/rtems/attr/if/simple-binary-semaphore.yml @@ -0,0 +1,21 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This attribute constant indicates that the Classic API Semaphore instance + created will be a simple binary semaphore. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000020' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_SIMPLE_BINARY_SEMAPHORE +notes: null +type: interface diff --git a/spec/rtems/attr/if/system-task.yml b/spec/rtems/attr/if/system-task.yml new file mode 100644 index 00000000..f3e775ca --- /dev/null +++ b/spec/rtems/attr/if/system-task.yml @@ -0,0 +1,21 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This attribute constant indicates that the task was created by RTEMS as a + support task. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00008000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_SYSTEM_TASK +notes: null +type: interface diff --git a/spec/rtems/attr/req/bit-set.yml b/spec/rtems/attr/req/bit-set.yml new file mode 100644 index 00000000..fee72247 --- /dev/null +++ b/spec/rtems/attr/req/bit-set.yml @@ -0,0 +1,15 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +links: +- role: requirement-refinement + uid: ../if/group +non-functional-type: interface +rationale: null +references: [] +requirement-type: non-functional +text: | + Each non-default directive attribute constant shall be a power of two + representable as an integer of type ${../if/attribute}. +type: requirement diff --git a/spec/rtems/attr/req/default.yml b/spec/rtems/attr/req/default.yml new file mode 100644 index 00000000..f3f0e32c --- /dev/null +++ b/spec/rtems/attr/req/default.yml @@ -0,0 +1,14 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +links: +- role: requirement-refinement + uid: ../if/group +non-functional-type: interface +rationale: null +references: [] +requirement-type: non-functional +text: | + Each default directive attribute constant shall have a value of zero. +type: requirement diff --git a/spec/rtems/attr/req/semaphore-class.yml b/spec/rtems/attr/req/semaphore-class.yml new file mode 100644 index 00000000..0323dd29 --- /dev/null +++ b/spec/rtems/attr/req/semaphore-class.yml @@ -0,0 +1,16 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +links: +- role: requirement-refinement + uid: ../if/semaphore-class +non-functional-type: interface +rationale: null +references: [] +requirement-type: non-functional +text: | + The ${../if/semaphore-class:/name} constant shall be equal to the bitwise or + of ${../if/binary-semaphore:/name}, ${../if/counting-semaphore:/name}, and + ${../if/simple-binary-semaphore:/name}. +type: requirement diff --git a/spec/rtems/attr/req/unique.yml b/spec/rtems/attr/req/unique.yml new file mode 100644 index 00000000..30e73461 --- /dev/null +++ b/spec/rtems/attr/req/unique.yml @@ -0,0 +1,14 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +links: +- role: requirement-refinement + uid: ../if/group +non-functional-type: interface +rationale: null +references: [] +requirement-type: non-functional +text: | + The non-default directive attribute constants shall have unique values. +type: requirement diff --git a/spec/rtems/attr/val/attr.yml b/spec/rtems/attr/val/attr.yml new file mode 100644 index 00000000..83894365 --- /dev/null +++ b/spec/rtems/attr/val/attr.yml @@ -0,0 +1,278 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +links: [] +test-actions: +- action: | + /* No action */ + checks: + - check: | + T_step_true( ${step}, IsPowerOfTwo( RTEMS_BARRIER_MANUAL_RELEASE ) ); + description: | + Check that RTEMS_BARRIER_MANUAL_RELEASE is a power of two. + links: + - role: validation + uid: ../req/bit-set + - role: validation + uid: ../if/barrier-manual-release + - check: | + T_step_true( ${step}, IsPowerOfTwo( RTEMS_BINARY_SEMAPHORE ) ); + description: | + Check that RTEMS_BINARY_SEMAPHORE is a power of two. + links: + - role: validation + uid: ../req/bit-set + - role: validation + uid: ../if/binary-semaphore + - check: | + T_step_true( ${step}, IsPowerOfTwo( RTEMS_FLOATING_POINT ) ); + description: | + Check that RTEMS_FLOATING_POINT is a power of two. + links: + - role: validation + uid: ../req/bit-set + - role: validation + uid: ../if/floating-point + - check: | + T_step_true( ${step}, IsPowerOfTwo( RTEMS_GLOBAL ) ); + description: | + Check that RTEMS_GLOBAL is a power of two. + links: + - role: validation + uid: ../req/bit-set + - role: validation + uid: ../if/global + - check: | + T_step_true( ${step}, IsPowerOfTwo( RTEMS_INHERIT_PRIORITY ) ); + description: | + Check that RTEMS_INHERIT_PRIORITY is a power of two. + links: + - role: validation + uid: ../req/bit-set + - role: validation + uid: ../if/inherit-priority + - check: | + T_step_true( + ${step}, + IsPowerOfTwo( RTEMS_MULTIPROCESSOR_RESOURCE_SHARING ) + ); + description: | + Check that RTEMS_MULTIPROCESSOR_RESOURCE_SHARING is a power of two. + links: + - role: validation + uid: ../req/bit-set + - role: validation + uid: ../if/multiprocessor-resource-sharing + - check: | + T_step_true( ${step}, IsPowerOfTwo( RTEMS_PRIORITY ) ); + description: | + Check that RTEMS_PRIORITY is a power of two. + links: + - role: validation + uid: ../req/bit-set + - role: validation + uid: ../if/priority + - check: | + T_step_true( ${step}, IsPowerOfTwo( RTEMS_PRIORITY_CEILING ) ); + description: | + Check that RTEMS_PRIORITY_CEILING is a power of two. + links: + - role: validation + uid: ../req/bit-set + - role: validation + uid: ../if/priority-ceiling + - check: | + T_step_true( ${step}, IsPowerOfTwo( RTEMS_SIMPLE_BINARY_SEMAPHORE ) ); + description: | + Check that RTEMS_SIMPLE_BINARY_SEMAPHORE is a power of two. + links: + - role: validation + uid: ../req/bit-set + - role: validation + uid: ../if/simple-binary-semaphore + - check: | + T_step_true( ${step}, IsPowerOfTwo( RTEMS_SYSTEM_TASK ) ); + description: | + Check that RTEMS_SYSTEM_TASK is a power of two. + links: + - role: validation + uid: ../req/bit-set + - role: validation + uid: ../if/system-task + description: | + Validate the non-default attribute constants. + links: [] +- action: | + /* No action */ + checks: + - check: | + T_step_eq_u32( ${step}, RTEMS_APPLICATION_TASK, 0 ); + description: | + Check that RTEMS_APPLICATION_TASK is equal to zero. + links: + - role: validation + uid: ../req/default + - role: validation + uid: ../if/application-task + - check: | + T_step_eq_u32( ${step}, RTEMS_BARRIER_MANUAL_RELEASE, 0 ); + description: | + Check that RTEMS_BARRIER_MANUAL_RELEASE is equal to zero. + links: + - role: validation + uid: ../req/default + - role: validation + uid: ../if/barrier-manual-release + - check: | + T_step_eq_u32( ${step}, RTEMS_COUNTING_SEMAPHORE, 0 ); + description: | + Check that RTEMS_COUNTING_SEMAPHORE is equal to zero. + links: + - role: validation + uid: ../req/default + - role: validation + uid: ../if/counting-semaphore + - check: | + T_step_eq_u32( ${step}, RTEMS_DEFAULT_ATTRIBUTES, 0 ); + description: | + Check that RTEMS_DEFAULT_ATTRIBUTES is equal to zero. + links: + - role: validation + uid: ../req/default + - role: validation + uid: ../if/default + - check: | + T_step_eq_u32( ${step}, RTEMS_FIFO, 0 ); + description: | + Check that RTEMS_FIFO is equal to zero. + links: + - role: validation + uid: ../req/default + - role: validation + uid: ../if/fifo + - check: | + T_step_eq_u32( ${step}, RTEMS_LOCAL, 0 ); + description: | + Check that RTEMS_LOCAL is equal to zero. + links: + - role: validation + uid: ../req/default + - role: validation + uid: ../if/local + - check: | + T_step_eq_u32( ${step}, RTEMS_NO_FLOATING_POINT, 0 ); + description: | + Check that RTEMS_NO_FLOATING_POINT is equal to zero. + links: + - role: validation + uid: ../req/default + - role: validation + uid: ../if/no-floating-point + - check: | + T_step_eq_u32( ${step}, RTEMS_NO_INHERIT_PRIORITY, 0 ); + description: | + Check that RTEMS_NO_INHERIT_PRIORITY is equal to zero. + links: + - role: validation + uid: ../req/default + - role: validation + uid: ../if/no-inherit-priority + - check: | + T_step_eq_u32( ${step}, RTEMS_NO_MULTIPROCESSOR_RESOURCE_SHARING, 0 ); + description: | + Check that RTEMS_NO_MULTIPROCESSOR_RESOURCE_SHARING is equal to zero. + links: + - role: validation + uid: ../req/default + - role: validation + uid: ../if/no-multiprocessor-resource-sharing + - check: | + T_step_eq_u32( ${step}, RTEMS_NO_PRIORITY_CEILING, 0 ); + description: | + Check that RTEMS_NO_PRIORITY_CEILING is equal to zero. + links: + - role: validation + uid: ../req/default + - role: validation + uid: ../if/no-priority-ceiling + description: | + Validate the default attribute constants. + links: [] +- action: | + attributes = 0; + attributes |= RTEMS_BARRIER_AUTOMATIC_RELEASE; + attributes |= RTEMS_BINARY_SEMAPHORE; + attributes |= RTEMS_FLOATING_POINT; + attributes |= RTEMS_GLOBAL; + attributes |= RTEMS_INHERIT_PRIORITY; + attributes |= RTEMS_MULTIPROCESSOR_RESOURCE_SHARING; + attributes |= RTEMS_PRIORITY; + attributes |= RTEMS_PRIORITY_CEILING; + attributes |= RTEMS_SEMAPHORE_CLASS; + attributes |= RTEMS_SIMPLE_BINARY_SEMAPHORE; + attributes |= RTEMS_SYSTEM_TASK; + checks: + - check: | + T_step_eq_int( ${step}, PopCount( attributes ), 10 ); + description: | + Check that the count of set bits in the calculated value is equal to the + count of non-default attribute constants. Since each non-default + attribute constant is a power of two, this proves that each constant has + a unique value. + links: + - role: validation + uid: ../req/unique + description: | + Calculate the bitwise or of all non-default attribute constants. + links: [] +- action: | + attributes = 0; + attributes |= RTEMS_BINARY_SEMAPHORE; + attributes |= RTEMS_COUNTING_SEMAPHORE; + attributes |= RTEMS_SIMPLE_BINARY_SEMAPHORE; + checks: + - check: | + T_step_eq_u32( ${step}, RTEMS_SEMAPHORE_CLASS, attributes ); + description: | + Check that the calculated value is equal to RTEMS_SEMAPHORE_CLASS. + links: + - role: validation + uid: ../req/semaphore-class + description: | + Calculate the bitwise or of the RTEMS_BINARY_SEMAPHORE, + RTEMS_COUNTING_SEMAPHORE, and RTEMS_SIMPLE_BINARY_SEMAPHORE attribute + constants. + links: [] +test-brief: | + Tests the attribute constants of the Classic API. +test-description: null +test-epilogue: null +test-fixture: null +test-header: null +test-includes: +- rtems.h +test-local-includes: [] +test-prologue: | + rtems_attribute attributes; +test-support: | + static bool IsPowerOfTwo( rtems_attribute attribute ) + { + return attribute != 0 && ( attribute & ( attribute - 1 ) ) == 0; + } + + static int PopCount( rtems_attribute attributes ) + { + int count; + + count = 0; + + while ( attributes != 0 ) { + ++count; + attributes &= attributes - 1; + } + + return count; + } +test-target: testsuites/validation/tc-attr.c +type: test-case diff --git a/spec/rtems/barrier/if/create.yml b/spec/rtems/barrier/if/create.yml new file mode 100644 index 00000000..b0dabd18 --- /dev/null +++ b/spec/rtems/barrier/if/create.yml @@ -0,0 +1,42 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/name:/name} ${.:/params[0]/name} + - ${../../attr/if/attribute:/name} ${.:/params[1]/name} + - ${/c/if/uint32_t:/name} ${.:/params[2]/name} + - ${../../type/if/id:/name} *${.:/params[3]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_barrier_create +notes: null +params: +- description: '%' + dir: null + name: name +- description: '%' + dir: null + name: attribute_set +- description: '%' + dir: null + name: maximum_waiters +- description: '%' + dir: null + name: id +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/barrier/if/delete.yml b/spec/rtems/barrier/if/delete.yml new file mode 100644 index 00000000..50bcfd86 --- /dev/null +++ b/spec/rtems/barrier/if/delete.yml @@ -0,0 +1,30 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_barrier_delete +notes: null +params: +- description: '%' + dir: null + name: id +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/barrier/if/group.yml b/spec/rtems/barrier/if/group.yml new file mode 100644 index 00000000..b46c4745 --- /dev/null +++ b/spec/rtems/barrier/if/group.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + The Barrier Manager provides a unique synchronization capability which can be + used to have a set of tasks block and be unblocked as a set. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +description: null +enabled-by: true +identifier: RTEMSAPIClassicBarrier +interface-type: group +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: ../../if/group +name: Barrier Manager +text: | + The Classic API shall provide an interface to the Barrier Manager. +type: interface diff --git a/spec/rtems/barrier/if/header.yml b/spec/rtems/barrier/if/header.yml new file mode 100644 index 00000000..0c34ed64 --- /dev/null +++ b/spec/rtems/barrier/if/header.yml @@ -0,0 +1,12 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: This header file defines the Barrier Manager API. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +interface-type: header-file +links: +- role: interface-placement + uid: /if/domain +path: rtems/rtems/barrier.h +prefix: cpukit/include +type: interface diff --git a/spec/rtems/barrier/if/ident.yml b/spec/rtems/barrier/if/ident.yml new file mode 100644 index 00000000..5fba7108 --- /dev/null +++ b/spec/rtems/barrier/if/ident.yml @@ -0,0 +1,60 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Identifies a barrier object by the specified object name. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/name:/name} ${.:/params[0]/name} + - ${../../type/if/id:/name} *${.:/params[1]/name} + return: ${../../status/if/code:/name} + variants: [] +description: | + This directive obtains the barrier identifier associated with the barrier + name specified in ``${.:/params[0]/name}``. +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_barrier_ident +notes: | + If the barrier name is not unique, then the barrier identifier will match the + first barrier with that name in the search order. However, this barrier + identifier is not guaranteed to correspond to the desired barrier. The + barrier identifier is used with other barrier related directives to access + the barrier. + + The objects are searched from lowest to the highest index. Only the local + node is searched. +params: +- description: is the object name to look up. + dir: null + name: name +- description: | + is the pointer to an object identifier variable. The object identifier of + an object with the specified name will be stored in this variable, in case + of a successful operation. + dir: out + name: id +return: + return: null + return-values: + - description: | + The requested operation was successful. + value: ${../../status/if/successful:/name} + - description: | + The ${.:/params[1]/name} parameter was ${/c/if/null:/name}. + value: ${../../status/if/invalid-address:/name} + - description: | + The ${.:/params[0]/name} parameter was 0. + value: ${../../status/if/invalid-name:/name} + - description: | + There was no object with the specified name on the local node. + value: ${../../status/if/invalid-name:/name} +type: interface diff --git a/spec/rtems/barrier/if/release.yml b/spec/rtems/barrier/if/release.yml new file mode 100644 index 00000000..1aa1915c --- /dev/null +++ b/spec/rtems/barrier/if/release.yml @@ -0,0 +1,34 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + - ${/c/if/uint32_t:/name} *${.:/params[1]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_barrier_release +notes: null +params: +- description: '%' + dir: null + name: id +- description: '%' + dir: null + name: released +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/barrier/if/wait.yml b/spec/rtems/barrier/if/wait.yml new file mode 100644 index 00000000..acc51cb5 --- /dev/null +++ b/spec/rtems/barrier/if/wait.yml @@ -0,0 +1,34 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + - ${../../type/if/interval:/name} ${.:/params[1]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_barrier_wait +notes: null +params: +- description: '%' + dir: null + name: id +- description: '%' + dir: null + name: timeout +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/barrier/req/ident.yml b/spec/rtems/barrier/req/ident.yml new file mode 100644 index 00000000..b228179f --- /dev/null +++ b/spec/rtems/barrier/req/ident.yml @@ -0,0 +1,15 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +functional-type: function +links: +- role: interface-function + uid: ../if/ident +rationale: null +references: [] +requirement-type: functional +text: | + The ${../if/ident:/name} directive shall identify an Classic API + barrier class object by its name as specified by ${../req/ident-local}. +type: requirement diff --git a/spec/rtems/barrier/val/ident.yml b/spec/rtems/barrier/val/ident.yml new file mode 100644 index 00000000..2db5bdc8 --- /dev/null +++ b/spec/rtems/barrier/val/ident.yml @@ -0,0 +1,47 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +links: +- role: validation + uid: ../req/ident +test-actions: +- action: | + ${../../req/ident-local:/test-run}( + id_local_object, + ClassicBarrierIdentAction + ); + checks: [] + description: | + Run the generic object identification tests for Classic API partition class + objects defined by ${../../req/ident-local}. + links: [] +test-brief: Test the ${../if/ident:/name} directive. +test-description: null +test-epilogue: null +test-fixture: null +test-header: null +test-includes: [] +test-local-includes: +- tr-object-ident-local.h +test-prologue: | + rtems_status_code sc; + rtems_id id_local_object; + + sc = rtems_barrier_create( + ClassicObjectLocalIdentName, + RTEMS_DEFAULT_ATTRIBUTES, + 1, + &id_local_object + ); + T_assert_rsc_success( sc ); +test-support: | + static rtems_status_code ClassicBarrierIdentAction( + rtems_name name, + rtems_id *id + ) + { + return rtems_barrier_ident( name, id ); + } +test-target: testsuites/validation/tc-barrier-ident.c +type: test-case diff --git a/spec/rtems/basedefs/if/alias.yml b/spec/rtems/basedefs/if/alias.yml new file mode 100644 index 00000000..dcd8827c --- /dev/null +++ b/spec/rtems/basedefs/if/alias.yml @@ -0,0 +1,31 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Instructs the compiler to generate an alias to the specified target function. +copyrights: +- Copyright (C) 2016 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: '' + variants: + - definition: | + __attribute__((__alias__(#_target))) + enabled-by: + - defined(${/compiler/if/gnuc:/name}) +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_ALIAS +notes: null +params: +- description: | + is the target function name. + dir: null + name: _target +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/basedefs/if/align-down.yml b/spec/rtems/basedefs/if/align-down.yml new file mode 100644 index 00000000..a309b03f --- /dev/null +++ b/spec/rtems/basedefs/if/align-down.yml @@ -0,0 +1,35 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Returns the specified value aligned down to the specified alignment. +copyrights: +- Copyright (C) 2016 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: | + ( ( ${.:/params[0]/name} ) & ~( ( ${.:/params[1]/name} ) - 1 ) ) + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_ALIGN_DOWN +notes: null +params: +- description: | + is the value to align down. + dir: null + name: _value +- description: | + is the desired alignment in bytes. The alignment shall be a power of two, + otherwise the returned value is undefined. The alignment parameter is + evaluated twice. + dir: null + name: _alignment +return: + return: | + The specified value aligned down to the specified alignment is returned. + return-values: [] +type: interface diff --git a/spec/rtems/basedefs/if/align-up.yml b/spec/rtems/basedefs/if/align-up.yml new file mode 100644 index 00000000..cb3a46dd --- /dev/null +++ b/spec/rtems/basedefs/if/align-up.yml @@ -0,0 +1,35 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Returns the specified value aligned up to the specified alignment. +copyrights: +- Copyright (C) 2016 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: | + ( ( ( ${.:/params[0]/name} ) + ( ${.:/params[1]/name} ) - 1 ) & ~( ( ${.:/params[1]/name} ) - 1 ) ) + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_ALIGN_UP +notes: null +params: +- description: | + is the value to align up. + dir: null + name: _value +- description: | + is the desired alignment in bytes. The alignment shall be a power of two, + otherwise the returned value is undefined. The alignment parameter is + evaluated twice. + dir: null + name: _alignment +return: + return: | + The specified value aligned up to the specified alignment is returned. + return-values: [] +type: interface diff --git a/spec/rtems/basedefs/if/aligned.yml b/spec/rtems/basedefs/if/aligned.yml new file mode 100644 index 00000000..9dfc84aa --- /dev/null +++ b/spec/rtems/basedefs/if/aligned.yml @@ -0,0 +1,32 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Instructs the compiler in a declaration or definition to enforce the + specified alignment. +copyrights: +- Copyright (C) 2016 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: '' + variants: + - definition: | + __attribute__((__aligned__(_alignment))) + enabled-by: + - defined(${/compiler/if/gnuc:/name}) +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_ALIGNED +notes: null +params: +- description: | + is the desired alignment in bytes. + dir: null + name: _alignment +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/basedefs/if/alloc-align.yml b/spec/rtems/basedefs/if/alloc-align.yml new file mode 100644 index 00000000..32a39b73 --- /dev/null +++ b/spec/rtems/basedefs/if/alloc-align.yml @@ -0,0 +1,32 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Tells the compiler in a declaration that the memory allocation alignment + parameter of this function is similar to aligned_alloc(). +copyrights: +- Copyright (C) 2018 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: '' + variants: + - definition: | + __attribute__((__alloc_align__(_index))) + enabled-by: + - defined(${/compiler/if/gnuc:/name}) +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_ALLOC_ALIGN +notes: null +params: +- description: | + is the allocation alignment parameter index (starting with one). + dir: null + name: _index +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/basedefs/if/alloc-size-2.yml b/spec/rtems/basedefs/if/alloc-size-2.yml new file mode 100644 index 00000000..08791bfb --- /dev/null +++ b/spec/rtems/basedefs/if/alloc-size-2.yml @@ -0,0 +1,36 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Tells the compiler in a declaration that the memory allocation item count and + item size parameter of this function is similar to calloc(). +copyrights: +- Copyright (C) 2018 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: '' + variants: + - definition: | + __attribute__((__alloc_size__(_count_index, _size_index))) + enabled-by: + - defined(${/compiler/if/gnuc:/name}) +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_ALLOC_SIZE_2 +notes: null +params: +- description: | + is the allocation item count parameter index (starting with one). + dir: null + name: _count_index +- description: | + is the allocation item size parameter index (starting with one). + dir: null + name: _size_index +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/basedefs/if/alloc-size.yml b/spec/rtems/basedefs/if/alloc-size.yml new file mode 100644 index 00000000..76a52baa --- /dev/null +++ b/spec/rtems/basedefs/if/alloc-size.yml @@ -0,0 +1,32 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Tells the compiler in a declaration that the memory allocation size parameter + of this function is similar to malloc(). +copyrights: +- Copyright (C) 2018 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: '' + variants: + - definition: | + __attribute__((__alloc_size__(_index))) + enabled-by: + - defined(${/compiler/if/gnuc:/name}) +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_ALLOC_SIZE +notes: null +params: +- description: | + is the allocation size parameter index (starting with one). + dir: null + name: _index +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/basedefs/if/array-size.yml b/spec/rtems/basedefs/if/array-size.yml new file mode 100644 index 00000000..61131d9d --- /dev/null +++ b/spec/rtems/basedefs/if/array-size.yml @@ -0,0 +1,28 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Returns the element count of the specified array. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: | + (sizeof(_array) / sizeof((_array)[0])) + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_ARRAY_SIZE +notes: null +params: +- description: | + is the name of the array. + dir: null + name: _array +return: + return: The element count of the specified array. + return-values: [] +type: interface diff --git a/spec/rtems/basedefs/if/compiler-deprecated-attribute.yml b/spec/rtems/basedefs/if/compiler-deprecated-attribute.yml new file mode 100644 index 00000000..4530cb73 --- /dev/null +++ b/spec/rtems/basedefs/if/compiler-deprecated-attribute.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Provided for backward compatibility. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: | + ${deprecated:/name} + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_COMPILER_DEPRECATED_ATTRIBUTE +notes: null +type: interface diff --git a/spec/rtems/basedefs/if/compiler-memory-barrier.yml b/spec/rtems/basedefs/if/compiler-memory-barrier.yml new file mode 100644 index 00000000..709eb350 --- /dev/null +++ b/spec/rtems/basedefs/if/compiler-memory-barrier.yml @@ -0,0 +1,28 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This macro forbids the compiler to reorder read and write commands around it. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: | + do { } while ( 0 ) + variants: + - definition: | + ${/compiler/if/asm:/name} volatile( "" ::: "memory" ) + enabled-by: + - defined(${/compiler/if/gnuc:/name}) +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_COMPILER_MEMORY_BARRIER +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/basedefs/if/compiler-no-return-attribute.yml b/spec/rtems/basedefs/if/compiler-no-return-attribute.yml new file mode 100644 index 00000000..b47611f3 --- /dev/null +++ b/spec/rtems/basedefs/if/compiler-no-return-attribute.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Provided for backward compatibility. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: | + ${no-return:/name} + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_COMPILER_NO_RETURN_ATTRIBUTE +notes: null +type: interface diff --git a/spec/rtems/basedefs/if/compiler-packed-attribute.yml b/spec/rtems/basedefs/if/compiler-packed-attribute.yml new file mode 100644 index 00000000..75e7d956 --- /dev/null +++ b/spec/rtems/basedefs/if/compiler-packed-attribute.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Provided for backward compatibility. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: | + ${packed:/name} + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_COMPILER_PACKED_ATTRIBUTE +notes: null +type: interface diff --git a/spec/rtems/basedefs/if/compiler-pure-attribute.yml b/spec/rtems/basedefs/if/compiler-pure-attribute.yml new file mode 100644 index 00000000..5acbc6e6 --- /dev/null +++ b/spec/rtems/basedefs/if/compiler-pure-attribute.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Provided for backward compatibility. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: | + ${pure:/name} + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_COMPILER_PURE_ATTRIBUTE +notes: null +type: interface diff --git a/spec/rtems/basedefs/if/compiler-used-attribute.yml b/spec/rtems/basedefs/if/compiler-used-attribute.yml new file mode 100644 index 00000000..29f60daa --- /dev/null +++ b/spec/rtems/basedefs/if/compiler-used-attribute.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Provided for backward compatibility. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: | + ${used:/name} + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_COMPILER_USED_ATTRIBUTE +notes: null +type: interface diff --git a/spec/rtems/basedefs/if/concat.yml b/spec/rtems/basedefs/if/concat.yml new file mode 100644 index 00000000..7fb231e9 --- /dev/null +++ b/spec/rtems/basedefs/if/concat.yml @@ -0,0 +1,32 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Concatenates _x and _y without expanding. +copyrights: +- Copyright (C) 2015 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: _x##_y + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_CONCAT +notes: null +params: +- description: | + is the left hand side token of the concatenation. + dir: null + name: _x +- description: | + is the right hand side token of the concatenation. + dir: null + name: _y +return: + return: | + The concatenation of the tokens _x and _y. + return-values: [] +type: interface diff --git a/spec/rtems/basedefs/if/const.yml b/spec/rtems/basedefs/if/const.yml new file mode 100644 index 00000000..adbe611b --- /dev/null +++ b/spec/rtems/basedefs/if/const.yml @@ -0,0 +1,25 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Tells the compiler in a function declaration that this function has no effect + except the return value and that the return value depends only on the value + of parameters. +copyrights: +- Copyright (C) 2019 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: '' + variants: + - definition: | + __attribute__((__const__)) + enabled-by: + - defined(${/compiler/if/gnuc:/name}) +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_CONST +notes: null +type: interface diff --git a/spec/rtems/basedefs/if/container-of.yml b/spec/rtems/basedefs/if/container-of.yml new file mode 100644 index 00000000..4a7b7a83 --- /dev/null +++ b/spec/rtems/basedefs/if/container-of.yml @@ -0,0 +1,37 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Returns the pointer to the container of a specified member pointer. +copyrights: +- Copyright (C) 2014 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: | + ( (_type *) ( (${/c/if/uintptr_t:/name}) ( _m ) - ${/c/if/offsetof:/name}( _type, _member_name ) ) ) + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_CONTAINER_OF +notes: null +params: +- description: | + is the pointer to a member of the container. + dir: null + name: _m +- description: | + is the type of the container. + dir: null + name: _type +- description: | + is the designator name of the container member. + dir: null + name: _member_name +return: + return: | + Returns the pointer to the container of a specified member pointer. + return-values: [] +type: interface diff --git a/spec/rtems/basedefs/if/declare-global-symbol.yml b/spec/rtems/basedefs/if/declare-global-symbol.yml new file mode 100644 index 00000000..b46bc08d --- /dev/null +++ b/spec/rtems/basedefs/if/declare-global-symbol.yml @@ -0,0 +1,29 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Declares a global symbol with the specified name. +copyrights: +- Copyright (C) 2018 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: | + extern char _name[] + variants: [] +description: | + This macro must be placed at file scope. +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_DECLARE_GLOBAL_SYMBOL +notes: null +params: +- description: | + is the name of the global symbol. It shall be a valid designator. + dir: null + name: _name +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/basedefs/if/deconst.yml b/spec/rtems/basedefs/if/deconst.yml new file mode 100644 index 00000000..683ae87a --- /dev/null +++ b/spec/rtems/basedefs/if/deconst.yml @@ -0,0 +1,33 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Performs a type cast which removes const qualifiers without warnings to the + specified type for the specified pointer variable. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2014 Paval Pisa +definition: + default: ${dequalify-depthx:/name}(*, _type, _var) + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_DECONST +notes: null +params: +- description: | + is the target type of the cast. + dir: null + name: _type +- description: | + is the pointer variable. + dir: null + name: _var +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/basedefs/if/define-global-symbol.yml b/spec/rtems/basedefs/if/define-global-symbol.yml new file mode 100644 index 00000000..ae3116f6 --- /dev/null +++ b/spec/rtems/basedefs/if/define-global-symbol.yml @@ -0,0 +1,44 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Defines a global symbol with the specified name and value. +copyrights: +- Copyright (C) 2018, 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: '' + variants: + - definition: | + ${/compiler/if/asm:/name}( + "\t.globl " ${xstring:/name}( ${symbol-name:/name}( _name ) ) + "\n\t.set " ${xstring:/name}( ${symbol-name:/name}( _name ) ) + ", " ${string:/name}( _value ) "\n" + ) + enabled-by: + - defined(${/compiler/if/user-label-prefix:/name}) +description: | + This macro shall be placed at file scope. +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_DEFINE_GLOBAL_SYMBOL +notes: null +params: +- description: | + is the user defined name of the symbol. The name shall be a valid + designator. On the name a macro expansion is performed and afterwards it + is stringified. + dir: null + name: _name +- description: | + is the value of the symbol. On the value a macro expansion is performed + and afterwards it is stringified. It shall expand to an integer expression + understood by the assembler. + dir: null + name: _value +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/basedefs/if/deprecated.yml b/spec/rtems/basedefs/if/deprecated.yml new file mode 100644 index 00000000..ca7e2137 --- /dev/null +++ b/spec/rtems/basedefs/if/deprecated.yml @@ -0,0 +1,24 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Instructs the compiler in a declaration to issue a warning whenever a + variable, function, or type using this declaration will be used. +copyrights: +- Copyright (C) 2009 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: '' + variants: + - definition: | + __attribute__((__deprecated__)) + enabled-by: + - defined(${/compiler/if/gnuc:/name}) +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_DEPRECATED +notes: null +type: interface diff --git a/spec/rtems/basedefs/if/dequalify-depthx.yml b/spec/rtems/basedefs/if/dequalify-depthx.yml new file mode 100644 index 00000000..a3ad7cec --- /dev/null +++ b/spec/rtems/basedefs/if/dequalify-depthx.yml @@ -0,0 +1,50 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Performs a type cast which removes qualifiers without warnings to the + specified type for the specified variable. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2014 Paval Pisa +definition: + default: ((_type)(${/c/if/uintptr_t:/name})(const volatile void *)(_var)) + variants: + - definition: | + (const_cast<_type>(_var)) + enabled-by: + - defined(${/compiler/if/cplusplus:/name}) + - definition: | + ${/compiler/if/builtin-choose-expr:/name}(${/compiler/if/builtin-types-compatible-p:/name}( + ${typeof-refx:/name}(_ptr_level, _var), + ${typeof-refx:/name}(_ptr_level, _type) + ) || ${/compiler/if/builtin-types-compatible-p:/name}(_type, void *), + (_type)(_var), + ${/score/if/dequalify-types-not-compatible:/name}()) + enabled-by: + - defined(${/compiler/if/gnuc:/name}) +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_DEQUALIFY_DEPTHX +notes: null +params: +- description: | + is the pointer indirection level expressed in *. + dir: null + name: _ptr_level +- description: | + is the target type of the cast. + dir: null + name: _type +- description: | + is the variable. + dir: null + name: _var +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/basedefs/if/dequalify.yml b/spec/rtems/basedefs/if/dequalify.yml new file mode 100644 index 00000000..9573284b --- /dev/null +++ b/spec/rtems/basedefs/if/dequalify.yml @@ -0,0 +1,33 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Performs a type cast which removes all qualifiers without warnings to the + specified type for the specified pointer variable. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2014 Paval Pisa +definition: + default: ${dequalify-depthx:/name}(*, _type, _var) + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_DEQUALIFY +notes: null +params: +- description: | + is the target type of the cast. + dir: null + name: _type +- description: | + is the pointer variable. + dir: null + name: _var +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/basedefs/if/devolatile.yml b/spec/rtems/basedefs/if/devolatile.yml new file mode 100644 index 00000000..5fcab59c --- /dev/null +++ b/spec/rtems/basedefs/if/devolatile.yml @@ -0,0 +1,33 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Performs a type cast which removes volatile qualifiers without warnings to + the specified type for the specified pointer variable. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2014 Paval Pisa +definition: + default: ${dequalify-depthx:/name}(*, _type, _var) + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_DEVOLATILE +notes: null +params: +- description: | + is the target type of the cast. + dir: null + name: _type +- description: | + is the pointer variable. + dir: null + name: _var +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/basedefs/if/expand.yml b/spec/rtems/basedefs/if/expand.yml new file mode 100644 index 00000000..f1a198fd --- /dev/null +++ b/spec/rtems/basedefs/if/expand.yml @@ -0,0 +1,27 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Helper macro to perform a macro expansion on the specified token. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: _token + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_EXPAND +notes: null +params: +- description: | + is the token to expand. + dir: null + name: _token +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/basedefs/if/false.yml b/spec/rtems/basedefs/if/false.yml new file mode 100644 index 00000000..e566e0bd --- /dev/null +++ b/spec/rtems/basedefs/if/false.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: If FALSE is undefined, then FALSE is defined to 0. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: '0' + variants: [] +description: null +enabled-by: +- not: 'FALSE' +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: 'FALSE' +notes: null +type: interface diff --git a/spec/rtems/basedefs/if/group.yml b/spec/rtems/basedefs/if/group.yml new file mode 100644 index 00000000..87218ed8 --- /dev/null +++ b/spec/rtems/basedefs/if/group.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This group contains basic macros and defines to give access to + compiler-specific features. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +description: null +enabled-by: true +identifier: RTEMSAPIBaseDefs +interface-type: group +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: /if/api +name: Base Definitions +text: | + The API shall provide an interface to compiler-specific features. +type: interface diff --git a/spec/rtems/basedefs/if/have-member-same-type.yml b/spec/rtems/basedefs/if/have-member-same-type.yml new file mode 100644 index 00000000..ba099a24 --- /dev/null +++ b/spec/rtems/basedefs/if/have-member-same-type.yml @@ -0,0 +1,48 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Evaluates to true if the specified members of two types have compatible + types, otherwise to false. +copyrights: +- Copyright (C) 2017 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: | + ${/c/if/true:/name} + variants: + - definition: | + ${/compiler/if/builtin-types-compatible-p:/name}( + ${/compiler/if/typeof:/name}( ( (_t_lhs *) 0 )->_m_lhs ), + ${/compiler/if/typeof:/name}( ( (_t_rhs *) 0 )->_m_rhs ) + ) + enabled-by: + - defined(${/compiler/if/gnuc:/name}) +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_HAVE_MEMBER_SAME_TYPE +notes: null +params: +- description: | + is the left hand side type. + dir: null + name: _t_lhs +- description: | + is the left hand side member. + dir: null + name: _m_lhs +- description: | + is the right hand side type. + dir: null + name: _t_rhs +- description: | + is the right hand side member. + dir: null + name: _m_rhs +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/basedefs/if/header.yml b/spec/rtems/basedefs/if/header.yml new file mode 100644 index 00000000..2fc39dcd --- /dev/null +++ b/spec/rtems/basedefs/if/header.yml @@ -0,0 +1,29 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This header file provides basic definitions used by the API and + the implementation. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +interface-type: header-file +links: +- enabled-by: true + role: interface-include + uid: /build-options/if/cpuopts +- enabled-by: + not: ASM + role: interface-include + uid: /c/if/stddef +- enabled-by: + not: ASM + role: interface-include + uid: /c/if/stdbool +- enabled-by: + not: ASM + role: interface-include + uid: /c/if/stdint +- role: interface-placement + uid: /if/domain +path: rtems/score/basedefs.h +prefix: cpukit/include +type: interface diff --git a/spec/rtems/basedefs/if/inline-routine.yml b/spec/rtems/basedefs/if/inline-routine.yml new file mode 100644 index 00000000..d06c1bf0 --- /dev/null +++ b/spec/rtems/basedefs/if/inline-routine.yml @@ -0,0 +1,23 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Gives a hint to the compiler in a function declaration to inline this + function. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: static inline + variants: + - definition: static __inline__ + enabled-by: + - defined(${/compiler/if/gnuc:/name}) +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_INLINE_ROUTINE +notes: null +type: interface diff --git a/spec/rtems/basedefs/if/malloclike.yml b/spec/rtems/basedefs/if/malloclike.yml new file mode 100644 index 00000000..01d60260 --- /dev/null +++ b/spec/rtems/basedefs/if/malloclike.yml @@ -0,0 +1,24 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Tells the compiler in a declaration that this function is a memory allocation + function similar to malloc(). +copyrights: +- Copyright (C) 2018 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: '' + variants: + - definition: | + __attribute__((__malloc__)) + enabled-by: + - defined(${/compiler/if/gnuc:/name}) +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_MALLOCLIKE +notes: null +type: interface diff --git a/spec/rtems/basedefs/if/no-inline.yml b/spec/rtems/basedefs/if/no-inline.yml new file mode 100644 index 00000000..85c0ac08 --- /dev/null +++ b/spec/rtems/basedefs/if/no-inline.yml @@ -0,0 +1,23 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Instructs the compiler in a function declaration to not inline this function. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: '' + variants: + - definition: | + __attribute__((__noinline__)) + enabled-by: + - defined(${/compiler/if/gnuc:/name}) +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_NO_INLINE +notes: null +type: interface diff --git a/spec/rtems/basedefs/if/no-return.yml b/spec/rtems/basedefs/if/no-return.yml new file mode 100644 index 00000000..614ad159 --- /dev/null +++ b/spec/rtems/basedefs/if/no-return.yml @@ -0,0 +1,24 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Tells the compiler in a function declaration that this function does not + return. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: '' + variants: + - definition: | + __attribute__((__noreturn__)) + enabled-by: + - defined(${/compiler/if/gnuc:/name}) +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_NO_RETURN +notes: null +type: interface diff --git a/spec/rtems/basedefs/if/obfuscate-variable.yml b/spec/rtems/basedefs/if/obfuscate-variable.yml new file mode 100644 index 00000000..7ad18bef --- /dev/null +++ b/spec/rtems/basedefs/if/obfuscate-variable.yml @@ -0,0 +1,34 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Obfuscates the variable so that the compiler cannot perform optimizations + based on the variable value. +copyrights: +- Copyright (C) 2016, 2018 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: | + (void) (_var) + variants: + - definition: | + ${/compiler/if/asm:/name}( "" : "+r" ( _var ) ) + enabled-by: + - defined(${/compiler/if/gnuc:/name}) +description: | + The variable must be simple enough to fit into a register. +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_OBFUSCATE_VARIABLE +notes: null +params: +- description: | + is the variable to obfuscate. + dir: null + name: _var +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/basedefs/if/packed.yml b/spec/rtems/basedefs/if/packed.yml new file mode 100644 index 00000000..a575a77f --- /dev/null +++ b/spec/rtems/basedefs/if/packed.yml @@ -0,0 +1,24 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Instructs the compiler in a type definition to place members of a structure + or union so that the memory required is minimized. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: '' + variants: + - definition: | + __attribute__((__packed__)) + enabled-by: + - defined(${/compiler/if/gnuc:/name}) +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_PACKED +notes: null +type: interface diff --git a/spec/rtems/basedefs/if/predict-false.yml b/spec/rtems/basedefs/if/predict-false.yml new file mode 100644 index 00000000..5bf13563 --- /dev/null +++ b/spec/rtems/basedefs/if/predict-false.yml @@ -0,0 +1,33 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Returns the value of the specified integral expression and tells the compiler + that the predicted value is false (1). +copyrights: +- Copyright (C) 2018 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: | + ( _exp ) + variants: + - definition: | + ${/compiler/if/builtin-expect:/name}( ( _exp ), 0 ) + enabled-by: + - defined(${/compiler/if/gnuc:/name}) +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_PREDICT_FALSE +notes: null +params: +- description: | + is the expression. + dir: null + name: _exp +return: + return: The value of the expression. + return-values: [] +type: interface diff --git a/spec/rtems/basedefs/if/predict-true.yml b/spec/rtems/basedefs/if/predict-true.yml new file mode 100644 index 00000000..47bea311 --- /dev/null +++ b/spec/rtems/basedefs/if/predict-true.yml @@ -0,0 +1,33 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Returns the value of the specified integral expression and tells the compiler + that the predicted value is true (1). +copyrights: +- Copyright (C) 2018 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: | + ( _exp ) + variants: + - definition: | + ${/compiler/if/builtin-expect:/name}( ( _exp ), 1 ) + enabled-by: + - defined(${/compiler/if/gnuc:/name}) +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_PREDICT_TRUE +notes: null +params: +- description: | + is the expression. + dir: null + name: _exp +return: + return: The value of the expression. + return-values: [] +type: interface diff --git a/spec/rtems/basedefs/if/printflike.yml b/spec/rtems/basedefs/if/printflike.yml new file mode 100644 index 00000000..07ba944a --- /dev/null +++ b/spec/rtems/basedefs/if/printflike.yml @@ -0,0 +1,37 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Tells the compiler in a declaration that this function expects printf()-like + arguments. +copyrights: +- Copyright (C) 2016 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: '' + variants: + - definition: | + __attribute__((__format__(__printf__, _format_pos, _ap_pos))) + enabled-by: + - defined(${/compiler/if/gnuc:/name}) +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_PRINTFLIKE +notes: null +params: +- description: | + is the position of the format parameter index (starting with one). + dir: null + name: _format_pos +- description: | + is the position of the argument pointer parameter index (starting with + one). + dir: null + name: _ap_pos +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/basedefs/if/pure.yml b/spec/rtems/basedefs/if/pure.yml new file mode 100644 index 00000000..f5c946a4 --- /dev/null +++ b/spec/rtems/basedefs/if/pure.yml @@ -0,0 +1,25 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Tells the compiler in a function declaration that this function has no effect + except the return value and that the return value depends only on the value + of parameters and/or global variables. +copyrights: +- Copyright (C) 2011 On-Line Applications Research Corporation (OAR) +definition: + default: '' + variants: + - definition: | + __attribute__((__pure__)) + enabled-by: + - defined(${/compiler/if/gnuc:/name}) +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_PURE +notes: null +type: interface diff --git a/spec/rtems/basedefs/if/return-address.yml b/spec/rtems/basedefs/if/return-address.yml new file mode 100644 index 00000000..6ce94694 --- /dev/null +++ b/spec/rtems/basedefs/if/return-address.yml @@ -0,0 +1,27 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Returns the return address of the current function. +copyrights: +- Copyright (C) 2019 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: ${/c/if/null:/name} + variants: + - definition: | + ${/compiler/if/builtin-return-address:/name}(0) + enabled-by: + - defined(${/compiler/if/gnuc:/name}) +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_RETURN_ADDRESS +notes: null +params: [] +return: + return: The return address of the current function. + return-values: [] +type: interface diff --git a/spec/rtems/basedefs/if/section.yml b/spec/rtems/basedefs/if/section.yml new file mode 100644 index 00000000..12a6c200 --- /dev/null +++ b/spec/rtems/basedefs/if/section.yml @@ -0,0 +1,32 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Instructs the compiler to place a specific variable or function in the + specified section. +copyrights: +- Copyright (C) 2015 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: '' + variants: + - definition: | + __attribute__((__section__(_section))) + enabled-by: + - defined(${/compiler/if/gnuc:/name}) +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_SECTION +notes: null +params: +- description: | + is the section name as a string. + dir: null + name: _section +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/basedefs/if/static-assert.yml b/spec/rtems/basedefs/if/static-assert.yml new file mode 100644 index 00000000..fd95fc0a --- /dev/null +++ b/spec/rtems/basedefs/if/static-assert.yml @@ -0,0 +1,41 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Asserts at compile time that the specified condition is satisfied. +copyrights: +- Copyright (C) 2011, 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: | + struct rtems_static_assert_ ## _msg + { int rtems_static_assert_ ## _msg : (_cond) ? 1 : -1; } + variants: + - definition: | + static_assert(_cond, # _msg) + enabled-by: + - ${/compiler/if/cplusplus:/name} >= 201103L + - definition: | + _Static_assert(_cond, # _msg) + enabled-by: + - ${/compiler/if/stdc-version:/name} >= 201112L +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_STATIC_ASSERT +notes: null +params: +- description: | + is the condition this static assertion shall satisfy. + dir: null + name: _cond +- description: | + is the error message in case the static assertion fails. + dir: null + name: _msg +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/basedefs/if/string.yml b/spec/rtems/basedefs/if/string.yml new file mode 100644 index 00000000..2c15de47 --- /dev/null +++ b/spec/rtems/basedefs/if/string.yml @@ -0,0 +1,28 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Stringifies _x without expanding. +copyrights: +- Copyright (C) 2015 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: '#_x' + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_STRING +notes: null +params: +- description: | + is the token to stringify. + dir: null + name: _x +return: + return: | + The stringification of the token _x. + return-values: [] +type: interface diff --git a/spec/rtems/basedefs/if/symbol-name.yml b/spec/rtems/basedefs/if/symbol-name.yml new file mode 100644 index 00000000..f06ed9d8 --- /dev/null +++ b/spec/rtems/basedefs/if/symbol-name.yml @@ -0,0 +1,33 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Constructs a symbol name. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: | + ${expand:/name}(_name) + variants: + - definition: | + ${xconcat:/name}(${/compiler/if/user-label-prefix:/name}, _name) + enabled-by: + - defined(${/compiler/if/user-label-prefix:/name}) +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_SYMBOL_NAME +notes: null +params: +- description: | + is the user defined name of the symbol. The name shall be a valid + designator. On the name a macro expansion is performed. + dir: null + name: _name +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/basedefs/if/true.yml b/spec/rtems/basedefs/if/true.yml new file mode 100644 index 00000000..a63fdda6 --- /dev/null +++ b/spec/rtems/basedefs/if/true.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: If TRUE is undefined, then TRUE is defined to 1. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: '1' + variants: [] +description: null +enabled-by: +- not: 'TRUE' +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: 'TRUE' +notes: null +type: interface diff --git a/spec/rtems/basedefs/if/typeof-refx.yml b/spec/rtems/basedefs/if/typeof-refx.yml new file mode 100644 index 00000000..7532ffef --- /dev/null +++ b/spec/rtems/basedefs/if/typeof-refx.yml @@ -0,0 +1,37 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Returns the type of a pointer reference of the specified level to the specified type. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2014 Paval Pisa +definition: + default: '' + variants: + - definition: | + ${/compiler/if/typeof:/name}(_level(union { int z; ${/compiler/if/typeof:/name}(_target) x; }){0}.x) + enabled-by: + - defined(${/compiler/if/gnuc:/name}) +description: | + The reference type idea is based on libHX by Jan Engelhardt. +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_TYPEOF_REFX +notes: null +params: +- description: | + is the pointer indirection level expressed in *. + dir: null + name: _level +- description: | + is the reference target type. + dir: null + name: _target +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/basedefs/if/unreachable.yml b/spec/rtems/basedefs/if/unreachable.yml new file mode 100644 index 00000000..3a86be75 --- /dev/null +++ b/spec/rtems/basedefs/if/unreachable.yml @@ -0,0 +1,29 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Tells the compiler that this program point is unreachable. +copyrights: +- Copyright (C) 2016 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: | + ${/score/if/assert-unreachable:/name}() + variants: + - definition: | + do { + ${/compiler/if/builtin-unreachable:/name}(); + ${/score/if/assert-unreachable:/name}(); + } while ( 0 ) + enabled-by: + - defined(${/compiler/if/gnuc:/name}) +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +name: RTEMS_UNREACHABLE +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/basedefs/if/unused.yml b/spec/rtems/basedefs/if/unused.yml new file mode 100644 index 00000000..44ffe02d --- /dev/null +++ b/spec/rtems/basedefs/if/unused.yml @@ -0,0 +1,24 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Tells the compiler that a specific variable or function is deliberately + unused. +copyrights: +- Copyright (C) 2013 On-Line Applications Research Corporation (OAR) +definition: + default: '' + variants: + - definition: | + __attribute__((__unused__)) + enabled-by: + - defined(${/compiler/if/gnuc:/name}) +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_UNUSED +notes: null +type: interface diff --git a/spec/rtems/basedefs/if/used.yml b/spec/rtems/basedefs/if/used.yml new file mode 100644 index 00000000..ea8a4c38 --- /dev/null +++ b/spec/rtems/basedefs/if/used.yml @@ -0,0 +1,23 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Tells the compiler that a specific variable or function is used. +copyrights: +- Copyright (C) 2009 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: '' + variants: + - definition: | + __attribute__((__used__)) + enabled-by: + - defined(${/compiler/if/gnuc:/name}) +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_USED +notes: null +type: interface diff --git a/spec/rtems/basedefs/if/warn-unused-result.yml b/spec/rtems/basedefs/if/warn-unused-result.yml new file mode 100644 index 00000000..df17643d --- /dev/null +++ b/spec/rtems/basedefs/if/warn-unused-result.yml @@ -0,0 +1,24 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Tells the compiler in a declaration that the result of this function should + be used. +copyrights: +- Copyright (C) 2018 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: '' + variants: + - definition: | + __attribute__((__warn_unused_result__)) + enabled-by: + - defined(${/compiler/if/gnuc:/name}) +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_WARN_UNUSED_RESULT +notes: null +type: interface diff --git a/spec/rtems/basedefs/if/weak-alias.yml b/spec/rtems/basedefs/if/weak-alias.yml new file mode 100644 index 00000000..b23dec89 --- /dev/null +++ b/spec/rtems/basedefs/if/weak-alias.yml @@ -0,0 +1,32 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Instructs the compiler to generate a weak alias to the specified target + function. +copyrights: +- Copyright (C) 2017 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: '' + variants: + - definition: | + __attribute__((__weak__, __alias__(#_target))) + enabled-by: + - defined(${/compiler/if/gnuc:/name}) +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_WEAK_ALIAS +notes: null +params: +- description: | + is the target function name. + dir: null + name: _target +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/basedefs/if/weak.yml b/spec/rtems/basedefs/if/weak.yml new file mode 100644 index 00000000..ebd60fb5 --- /dev/null +++ b/spec/rtems/basedefs/if/weak.yml @@ -0,0 +1,26 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Tells the compiler in a function definition that this function should be + weak. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: '' + variants: + - definition: | + __attribute__((__weak__)) + enabled-by: + - defined(${/compiler/if/gnuc:/name}) +description: | + Use this attribute for function definitions. Do not use it for function + declarations. +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_WEAK +notes: null +type: interface diff --git a/spec/rtems/basedefs/if/xconcat.yml b/spec/rtems/basedefs/if/xconcat.yml new file mode 100644 index 00000000..b2280356 --- /dev/null +++ b/spec/rtems/basedefs/if/xconcat.yml @@ -0,0 +1,34 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Concatenates expansion of _x and expansion of _y. +copyrights: +- Copyright (C) 2015 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: ${concat:/name}( _x, _y ) + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_XCONCAT +notes: null +params: +- description: | + is expanded first and then used as the left hand side token of the + concatenation. + dir: null + name: _x +- description: | + is expanded first and then used as the right hand side token of the + concatenation. + dir: null + name: _y +return: + return: | + The concatenation of the expansions of tokens _x and _y. + return-values: [] +type: interface diff --git a/spec/rtems/basedefs/if/xstring.yml b/spec/rtems/basedefs/if/xstring.yml new file mode 100644 index 00000000..ba73f8ec --- /dev/null +++ b/spec/rtems/basedefs/if/xstring.yml @@ -0,0 +1,28 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Stringifies the expansion of _x. +copyrights: +- Copyright (C) 2015 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: ${string:/name}( _x ) + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_XSTRING +notes: null +params: +- description: | + is the token expand and stringify. + dir: null + name: _x +return: + return: | + The stringification of the expansion of token _x. + return-values: [] +type: interface diff --git a/spec/rtems/basedefs/if/zero-length-array.yml b/spec/rtems/basedefs/if/zero-length-array.yml new file mode 100644 index 00000000..e69a17ab --- /dev/null +++ b/spec/rtems/basedefs/if/zero-length-array.yml @@ -0,0 +1,25 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This is a constant to declare zero-length arrays. +copyrights: +- Copyright (C) 2014 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: '0' + variants: + - definition: null + enabled-by: + - ${/compiler/if/stdc-version:/name} >= 199409L +description: | + Zero-length arrays are valid in C99 as flexible array members. C++11 does + not allow flexible array members. Use the GNU extension which is also + supported by other compilers. +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_ZERO_LENGTH_ARRAY +notes: null +type: interface diff --git a/spec/rtems/cache/if/aligned-malloc.yml b/spec/rtems/cache/if/aligned-malloc.yml new file mode 100644 index 00000000..f7443a34 --- /dev/null +++ b/spec/rtems/cache/if/aligned-malloc.yml @@ -0,0 +1,30 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${/c/if/size_t:/name} ${.:/params[0]/name} + return: void * + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_cache_aligned_malloc +notes: null +params: +- description: '%' + dir: null + name: nbytes +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/cache/if/coherent-add-area.yml b/spec/rtems/cache/if/coherent-add-area.yml new file mode 100644 index 00000000..677902d6 --- /dev/null +++ b/spec/rtems/cache/if/coherent-add-area.yml @@ -0,0 +1,34 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - void *${.:/params[0]/name} + - ${/c/if/uintptr_t:/name} ${.:/params[1]/name} + return: void + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_cache_coherent_add_area +notes: null +params: +- description: '%' + dir: null + name: area_begin +- description: '%' + dir: null + name: area_size +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/cache/if/coherent-allocate.yml b/spec/rtems/cache/if/coherent-allocate.yml new file mode 100644 index 00000000..23fc4a00 --- /dev/null +++ b/spec/rtems/cache/if/coherent-allocate.yml @@ -0,0 +1,38 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${/c/if/size_t:/name} ${.:/params[0]/name} + - ${/c/if/uintptr_t:/name} ${.:/params[1]/name} + - ${/c/if/uintptr_t:/name} ${.:/params[2]/name} + return: void * + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_cache_coherent_allocate +notes: null +params: +- description: '%' + dir: null + name: size +- description: '%' + dir: null + name: alignment +- description: '%' + dir: null + name: boundary +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/cache/if/coherent-free.yml b/spec/rtems/cache/if/coherent-free.yml new file mode 100644 index 00000000..c8700d2f --- /dev/null +++ b/spec/rtems/cache/if/coherent-free.yml @@ -0,0 +1,30 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - void *${.:/params[0]/name} + return: void + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_cache_coherent_free +notes: null +params: +- description: '%' + dir: null + name: ptr +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/cache/if/disable-data.yml b/spec/rtems/cache/if/disable-data.yml new file mode 100644 index 00000000..98b444d6 --- /dev/null +++ b/spec/rtems/cache/if/disable-data.yml @@ -0,0 +1,26 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: [] + return: void + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_cache_disable_data +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/cache/if/disable-instruction.yml b/spec/rtems/cache/if/disable-instruction.yml new file mode 100644 index 00000000..b001ea0c --- /dev/null +++ b/spec/rtems/cache/if/disable-instruction.yml @@ -0,0 +1,26 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: [] + return: void + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_cache_disable_instruction +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/cache/if/enable-data.yml b/spec/rtems/cache/if/enable-data.yml new file mode 100644 index 00000000..c02d18aa --- /dev/null +++ b/spec/rtems/cache/if/enable-data.yml @@ -0,0 +1,26 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: [] + return: void + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_cache_enable_data +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/cache/if/enable-instruction.yml b/spec/rtems/cache/if/enable-instruction.yml new file mode 100644 index 00000000..e0fc587d --- /dev/null +++ b/spec/rtems/cache/if/enable-instruction.yml @@ -0,0 +1,26 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: [] + return: void + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_cache_enable_instruction +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/cache/if/flush-entire-data.yml b/spec/rtems/cache/if/flush-entire-data.yml new file mode 100644 index 00000000..df98352e --- /dev/null +++ b/spec/rtems/cache/if/flush-entire-data.yml @@ -0,0 +1,26 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: [] + return: void + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_cache_flush_entire_data +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/cache/if/flush-multiple-data-lines.yml b/spec/rtems/cache/if/flush-multiple-data-lines.yml new file mode 100644 index 00000000..4d56208d --- /dev/null +++ b/spec/rtems/cache/if/flush-multiple-data-lines.yml @@ -0,0 +1,34 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - const void *${.:/params[0]/name} + - ${/c/if/size_t:/name} ${.:/params[1]/name} + return: void + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_cache_flush_multiple_data_lines +notes: null +params: +- description: '%' + dir: null + name: addr +- description: '%' + dir: null + name: size +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/cache/if/freeze-data.yml b/spec/rtems/cache/if/freeze-data.yml new file mode 100644 index 00000000..a4873f69 --- /dev/null +++ b/spec/rtems/cache/if/freeze-data.yml @@ -0,0 +1,26 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: [] + return: void + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_cache_freeze_data +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/cache/if/freeze-instruction.yml b/spec/rtems/cache/if/freeze-instruction.yml new file mode 100644 index 00000000..6dc34d84 --- /dev/null +++ b/spec/rtems/cache/if/freeze-instruction.yml @@ -0,0 +1,26 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: [] + return: void + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_cache_freeze_instruction +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/cache/if/get-data-line-size.yml b/spec/rtems/cache/if/get-data-line-size.yml new file mode 100644 index 00000000..bfd469ac --- /dev/null +++ b/spec/rtems/cache/if/get-data-line-size.yml @@ -0,0 +1,26 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: [] + return: ${/c/if/size_t:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_cache_get_data_line_size +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/cache/if/get-data-size.yml b/spec/rtems/cache/if/get-data-size.yml new file mode 100644 index 00000000..aed91812 --- /dev/null +++ b/spec/rtems/cache/if/get-data-size.yml @@ -0,0 +1,30 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${/c/if/uint32_t:/name} ${.:/params[0]/name} + return: ${/c/if/size_t:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_cache_get_data_cache_size +notes: null +params: +- description: '%' + dir: null + name: level +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/cache/if/get-instruction-line-size.yml b/spec/rtems/cache/if/get-instruction-line-size.yml new file mode 100644 index 00000000..1cf80bdb --- /dev/null +++ b/spec/rtems/cache/if/get-instruction-line-size.yml @@ -0,0 +1,26 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: [] + return: ${/c/if/size_t:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_cache_get_instruction_line_size +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/cache/if/get-instruction-size.yml b/spec/rtems/cache/if/get-instruction-size.yml new file mode 100644 index 00000000..eb23ed27 --- /dev/null +++ b/spec/rtems/cache/if/get-instruction-size.yml @@ -0,0 +1,30 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${/c/if/uint32_t:/name} ${.:/params[0]/name} + return: ${/c/if/size_t:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_cache_get_instruction_cache_size +notes: null +params: +- description: '%' + dir: null + name: level +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/cache/if/get-maximal-line-size.yml b/spec/rtems/cache/if/get-maximal-line-size.yml new file mode 100644 index 00000000..4d3957a7 --- /dev/null +++ b/spec/rtems/cache/if/get-maximal-line-size.yml @@ -0,0 +1,26 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: [] + return: ${/c/if/size_t:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_cache_get_maximal_line_size +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/cache/if/group.yml b/spec/rtems/cache/if/group.yml new file mode 100644 index 00000000..d3da44ca --- /dev/null +++ b/spec/rtems/cache/if/group.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + The Cache Manager provides functions to perform maintenance operations for + data and instruction caches. +copyrights: +- Copyright (C) 2014, 2020 embedded brains GmbH (http://www.embedded-brains.de) +description: null +enabled-by: true +identifier: RTEMSAPIClassicCache +interface-type: group +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: ../../if/group +name: Cache Manager +text: | + The Classic API shall provide an interface to the Cache Manager. +type: interface diff --git a/spec/rtems/cache/if/header.yml b/spec/rtems/cache/if/header.yml new file mode 100644 index 00000000..1833d836 --- /dev/null +++ b/spec/rtems/cache/if/header.yml @@ -0,0 +1,12 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: This header file defines the Cache Manager API. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +interface-type: header-file +links: +- role: interface-placement + uid: /if/domain +path: rtems/rtems/cache.h +prefix: cpukit/include +type: interface diff --git a/spec/rtems/cache/if/instruction-sync-after-code-change.yml b/spec/rtems/cache/if/instruction-sync-after-code-change.yml new file mode 100644 index 00000000..82cd0867 --- /dev/null +++ b/spec/rtems/cache/if/instruction-sync-after-code-change.yml @@ -0,0 +1,34 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - const void *${.:/params[0]/name} + - ${/c/if/size_t:/name} ${.:/params[1]/name} + return: void + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_cache_instruction_sync_after_code_change +notes: null +params: +- description: '%' + dir: null + name: code_addr +- description: '%' + dir: null + name: n_bytes +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/cache/if/invalidate-entire-data.yml b/spec/rtems/cache/if/invalidate-entire-data.yml new file mode 100644 index 00000000..bc6a4ebb --- /dev/null +++ b/spec/rtems/cache/if/invalidate-entire-data.yml @@ -0,0 +1,26 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: [] + return: void + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_cache_invalidate_entire_data +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/cache/if/invalidate-entire-instruction.yml b/spec/rtems/cache/if/invalidate-entire-instruction.yml new file mode 100644 index 00000000..8839ce78 --- /dev/null +++ b/spec/rtems/cache/if/invalidate-entire-instruction.yml @@ -0,0 +1,26 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: [] + return: void + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_cache_invalidate_entire_instruction +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/cache/if/invalidate-multiple-data-lines.yml b/spec/rtems/cache/if/invalidate-multiple-data-lines.yml new file mode 100644 index 00000000..11759802 --- /dev/null +++ b/spec/rtems/cache/if/invalidate-multiple-data-lines.yml @@ -0,0 +1,34 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - const void *${.:/params[0]/name} + - ${/c/if/size_t:/name} ${.:/params[1]/name} + return: void + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_cache_invalidate_multiple_data_lines +notes: null +params: +- description: '%' + dir: null + name: addr +- description: '%' + dir: null + name: size +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/cache/if/invalidate-multiple-instruction-lines.yml b/spec/rtems/cache/if/invalidate-multiple-instruction-lines.yml new file mode 100644 index 00000000..5231e768 --- /dev/null +++ b/spec/rtems/cache/if/invalidate-multiple-instruction-lines.yml @@ -0,0 +1,34 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - const void *${.:/params[0]/name} + - ${/c/if/size_t:/name} ${.:/params[1]/name} + return: void + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_cache_invalidate_multiple_instruction_lines +notes: null +params: +- description: '%' + dir: null + name: addr +- description: '%' + dir: null + name: size +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/cache/if/unfreeze-data.yml b/spec/rtems/cache/if/unfreeze-data.yml new file mode 100644 index 00000000..55282477 --- /dev/null +++ b/spec/rtems/cache/if/unfreeze-data.yml @@ -0,0 +1,26 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: [] + return: void + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_cache_unfreeze_data +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/cache/if/unfreeze-instruction.yml b/spec/rtems/cache/if/unfreeze-instruction.yml new file mode 100644 index 00000000..46b4a792 --- /dev/null +++ b/spec/rtems/cache/if/unfreeze-instruction.yml @@ -0,0 +1,26 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: [] + return: void + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_cache_unfreeze_instruction +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/clock/if/get-seconds-since-epoch.yml b/spec/rtems/clock/if/get-seconds-since-epoch.yml new file mode 100644 index 00000000..239b3d58 --- /dev/null +++ b/spec/rtems/clock/if/get-seconds-since-epoch.yml @@ -0,0 +1,30 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/interval:/name} *${.:/params[0]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_clock_get_seconds_since_epoch +notes: null +params: +- description: '%' + dir: null + name: the_interval +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/clock/if/get-ticks-per-second.yml b/spec/rtems/clock/if/get-ticks-per-second.yml new file mode 100644 index 00000000..d0f534ad --- /dev/null +++ b/spec/rtems/clock/if/get-ticks-per-second.yml @@ -0,0 +1,23 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/watchdog/if/ticks-per-second:/name} + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_clock_get_ticks_per_second +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/clock/if/get-ticks-since-boot.yml b/spec/rtems/clock/if/get-ticks-since-boot.yml new file mode 100644 index 00000000..f60b7d58 --- /dev/null +++ b/spec/rtems/clock/if/get-ticks-since-boot.yml @@ -0,0 +1,23 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/watchdog/if/ticks-since-boot:/name} + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_clock_get_ticks_since_boot +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/clock/if/get-tod-timeval.yml b/spec/rtems/clock/if/get-tod-timeval.yml new file mode 100644 index 00000000..303ff03d --- /dev/null +++ b/spec/rtems/clock/if/get-tod-timeval.yml @@ -0,0 +1,30 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${/c/if/timeval:/name} *${.:/params[0]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_clock_get_tod_timeval +notes: null +params: +- description: '%' + dir: null + name: time +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/clock/if/get-tod.yml b/spec/rtems/clock/if/get-tod.yml new file mode 100644 index 00000000..703f2b79 --- /dev/null +++ b/spec/rtems/clock/if/get-tod.yml @@ -0,0 +1,30 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/time-of-day:/name} *${.:/params[0]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_clock_get_tod +notes: null +params: +- description: '%' + dir: null + name: time_buffer +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/clock/if/get-uptime-nanoseconds.yml b/spec/rtems/clock/if/get-uptime-nanoseconds.yml new file mode 100644 index 00000000..bf1134e7 --- /dev/null +++ b/spec/rtems/clock/if/get-uptime-nanoseconds.yml @@ -0,0 +1,26 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: [] + return: ${/c/if/uint64_t:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_clock_get_uptime_nanoseconds +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/clock/if/get-uptime-seconds.yml b/spec/rtems/clock/if/get-uptime-seconds.yml new file mode 100644 index 00000000..5a9729ea --- /dev/null +++ b/spec/rtems/clock/if/get-uptime-seconds.yml @@ -0,0 +1,26 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: [] + return: ${/c/if/time_t:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_clock_get_uptime_seconds +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/clock/if/get-uptime-timeval.yml b/spec/rtems/clock/if/get-uptime-timeval.yml new file mode 100644 index 00000000..c936d71d --- /dev/null +++ b/spec/rtems/clock/if/get-uptime-timeval.yml @@ -0,0 +1,30 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${/c/if/timeval:/name} *${.:/params[0]/name} + return: void + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_clock_get_uptime_timeval +notes: null +params: +- description: '%' + dir: null + name: uptime +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/clock/if/get-uptime.yml b/spec/rtems/clock/if/get-uptime.yml new file mode 100644 index 00000000..2fc66f0f --- /dev/null +++ b/spec/rtems/clock/if/get-uptime.yml @@ -0,0 +1,30 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${/c/if/timespec:/name} *${.:/params[0]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_clock_get_uptime +notes: null +params: +- description: '%' + dir: null + name: uptime +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/clock/if/group.yml b/spec/rtems/clock/if/group.yml new file mode 100644 index 00000000..a772d89f --- /dev/null +++ b/spec/rtems/clock/if/group.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + The Clock Manager provides support for time of day and other time related + capabilities. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +description: null +enabled-by: true +identifier: RTEMSAPIClassicClock +interface-type: group +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: ../../if/group +name: Clock Manager +text: | + The Classic API shall provide an interface to the Clock Manager. +type: interface diff --git a/spec/rtems/clock/if/header.yml b/spec/rtems/clock/if/header.yml new file mode 100644 index 00000000..19c8414e --- /dev/null +++ b/spec/rtems/clock/if/header.yml @@ -0,0 +1,12 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: This header file defines the Clock Manager API. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +interface-type: header-file +links: +- role: interface-placement + uid: /if/domain +path: rtems/rtems/clock.h +prefix: cpukit/include +type: interface diff --git a/spec/rtems/clock/if/set.yml b/spec/rtems/clock/if/set.yml new file mode 100644 index 00000000..91f8c87f --- /dev/null +++ b/spec/rtems/clock/if/set.yml @@ -0,0 +1,30 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - const ${../../type/if/time-of-day:/name} *${.:/params[0]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_clock_set +notes: null +params: +- description: '%' + dir: null + name: time_buffer +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/clock/if/tick-before.yml b/spec/rtems/clock/if/tick-before.yml new file mode 100644 index 00000000..2c31eca9 --- /dev/null +++ b/spec/rtems/clock/if/tick-before.yml @@ -0,0 +1,40 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Returns true if the current ticks counter value indicates a time before the + time specified by the tick value and false otherwise. +copyrights: +- Copyright (C) 2014, 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: + body: | + return (${/c/if/int32_t:/name}) ( ${.:/params[0]/name} - ${/score/watchdog/if/ticks-since-boot:/name} ) > 0; + params: + - ${../../type/if/interval:/name} ${.:/params[0]/name} + return: ${/c/if/bool:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_clock_tick_before +notes: | + This directive can be used to write busy loops with a timeout. +params: +- description: is the tick value. + dir: null + name: tick +return: + return: null + return-values: + - description: | + The current ticks counter value indicates a time before the time + specified by the tick value. + value: 'true' + - description: | + Otherwise. + value: 'false' +type: interface diff --git a/spec/rtems/clock/if/tick-later-usec.yml b/spec/rtems/clock/if/tick-later-usec.yml new file mode 100644 index 00000000..ef3f33c8 --- /dev/null +++ b/spec/rtems/clock/if/tick-later-usec.yml @@ -0,0 +1,41 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Returns the ticks counter value at least delta microseconds in the future. +copyrights: +- Copyright (C) 2014, 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: + body: | + ${../../type/if/interval:/name} us_per_tick; + + us_per_tick = ${../../config/if/get-microseconds-per-tick:/name}(); + + /* + * Add one additional tick, since we do not know the time to the clock + * next tick. + */ + return ${/score/watchdog/if/ticks-since-boot:/name} + 1 + + ( ${.:/params[0]/name} + us_per_tick - 1 ) / us_per_tick; + params: + - ${../../type/if/interval:/name} ${.:/params[0]/name} + return: ${../../type/if/interval:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_clock_tick_later_usec +notes: null +params: +- description: is the delta value in microseconds. + dir: null + name: delta_in_usec +return: + return: | + The tick counter value delta ticks in the future is returned. + return-values: [] +type: interface diff --git a/spec/rtems/clock/if/tick-later.yml b/spec/rtems/clock/if/tick-later.yml new file mode 100644 index 00000000..9ce69c7f --- /dev/null +++ b/spec/rtems/clock/if/tick-later.yml @@ -0,0 +1,32 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Returns the ticks counter value delta ticks in the future. +copyrights: +- Copyright (C) 2014, 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: + body: | + return ${/score/watchdog/if/ticks-since-boot:/name} + ${.:/params[0]/name}; + params: + - ${../../type/if/interval:/name} ${.:/params[0]/name} + return: ${../../type/if/interval:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_clock_tick_later +notes: null +params: +- description: is the ticks delta value. + dir: null + name: delta +return: + return: | + The tick counter value delta ticks in the future is returned. + return-values: [] +type: interface diff --git a/spec/rtems/clock/if/tick.yml b/spec/rtems/clock/if/tick.yml new file mode 100644 index 00000000..5216a67a --- /dev/null +++ b/spec/rtems/clock/if/tick.yml @@ -0,0 +1,26 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: [] + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_clock_tick +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/config/if/api-table.yml b/spec/rtems/config/if/api-table.yml new file mode 100644 index 00000000..ff00330a --- /dev/null +++ b/spec/rtems/config/if/api-table.yml @@ -0,0 +1,128 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This structure contains a summary of the Classic API configuration. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1989, 2008 On-Line Applications Research Corporation (OAR) +definition: +- default: + brief: | + This field contains the maximum number of Classic API Tasks which are + configured for this application. + definition: ${/c/if/uint32_t:/name} ${.:name} + description: null + kind: member + name: maximum_tasks + variants: [] +- default: + brief: | + This field indicates if Classic API Notepads are enabled or disabled for + this application. + definition: ${/c/if/bool:/name} ${.:name} + description: null + kind: member + name: notepads_enabled + variants: [] +- default: + brief: | + This field contains the maximum number of Classic API Timers which are + configured for this application. + definition: ${/c/if/uint32_t:/name} ${.:name} + description: null + kind: member + name: maximum_timers + variants: [] +- default: + brief: | + This field contains the maximum number of Classic API Semaphores which + are configured for this application. + definition: ${/c/if/uint32_t:/name} ${.:name} + description: null + kind: member + name: maximum_semaphores + variants: [] +- default: + brief: | + This field contains the maximum number of Classic API Message Queues + which are configured for this application. + definition: ${/c/if/uint32_t:/name} ${.:name} + description: null + kind: member + name: maximum_message_queues + variants: [] +- default: + brief: | + This field contains the maximum number of Classic API Partitions which + are configured for this application. + definition: ${/c/if/uint32_t:/name} ${.:name} + description: null + kind: member + name: maximum_partitions + variants: [] +- default: + brief: | + This field contains the maximum number of Classic API Regions which are + configured for this application. + definition: ${/c/if/uint32_t:/name} ${.:name} + description: null + kind: member + name: maximum_regions + variants: [] +- default: + brief: | + This field contains the maximum number of Classic API Dual Ported Memory + Areas which are configured for this application. + definition: ${/c/if/uint32_t:/name} ${.:name} + description: null + kind: member + name: maximum_ports + variants: [] +- default: + brief: | + This field contains the maximum number of Classic API Rate Monotonic + Periods which are configured for this application. + definition: ${/c/if/uint32_t:/name} ${.:name} + description: null + kind: member + name: maximum_periods + variants: [] +- default: + brief: | + This field contains the maximum number of Classic API Barriers which are + configured for this application. + definition: ${/c/if/uint32_t:/name} ${.:name} + description: null + kind: member + name: maximum_barriers + variants: [] +- default: + brief: | + This field contains the number of Classic API Initialization + Tasks which are configured for this application. + definition: ${/c/if/uint32_t:/name} ${.:name} + description: null + kind: member + name: number_of_initialization_tasks + variants: [] +- default: + brief: | + This field contains the pointer to Classic API Initialization Tasks Table + of this application. + definition: const ${../../task/if/initialization-table:/name} *${.:name} + description: null + kind: member + name: User_initialization_tasks_table + variants: [] +definition-kind: typedef-only +description: | + Use ${get-api-configuration:/name} to get the configuration table. +enabled-by: true +interface-type: struct +links: +- role: interface-placement + uid: header-2 +- role: interface-ingroup + uid: group +name: rtems_api_configuration_table +notes: null +type: interface diff --git a/spec/rtems/config/if/get-api-configuration.yml b/spec/rtems/config/if/get-api-configuration.yml new file mode 100644 index 00000000..c2fbc28a --- /dev/null +++ b/spec/rtems/config/if/get-api-configuration.yml @@ -0,0 +1,26 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Returns the pointer to the Classic API Configuration Table of this application. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: + body: null + params: [] + return: const ${api-table:/name} * + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header-2 +- role: interface-ingroup + uid: group +name: rtems_configuration_get_rtems_api_configuration +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/config/if/get-copyright-notice.yml b/spec/rtems/config/if/get-copyright-notice.yml new file mode 100644 index 00000000..debeaa70 --- /dev/null +++ b/spec/rtems/config/if/get-copyright-notice.yml @@ -0,0 +1,26 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: [] + return: const char * + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_get_copyright_notice +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/config/if/get-do-zero-of-workspace.yml b/spec/rtems/config/if/get-do-zero-of-workspace.yml new file mode 100644 index 00000000..de1dd018 --- /dev/null +++ b/spec/rtems/config/if/get-do-zero-of-workspace.yml @@ -0,0 +1,24 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Returns true, if the workspace is zeroed during system initialization, + otherwise returns false. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: ${/score/memory/if/zero-before-use:/name} + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_configuration_get_do_zero_of_workspace +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/config/if/get-idle-task-stack-size.yml b/spec/rtems/config/if/get-idle-task-stack-size.yml new file mode 100644 index 00000000..7920a34d --- /dev/null +++ b/spec/rtems/config/if/get-idle-task-stack-size.yml @@ -0,0 +1,23 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Returns the configured IDLE task stack size in bytes of this application. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: ${/score/thread/if/idle-stack-size:/name} + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_configuration_get_idle_task_stack_size +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/config/if/get-idle-task.yml b/spec/rtems/config/if/get-idle-task.yml new file mode 100644 index 00000000..7b14684d --- /dev/null +++ b/spec/rtems/config/if/get-idle-task.yml @@ -0,0 +1,23 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Returns the configured IDLE task entry of this application. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: ${/score/thread/if/idle-body:/name} + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_configuration_get_idle_task +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/config/if/get-interrupt-stack-size.yml b/spec/rtems/config/if/get-interrupt-stack-size.yml new file mode 100644 index 00000000..78a94c02 --- /dev/null +++ b/spec/rtems/config/if/get-interrupt-stack-size.yml @@ -0,0 +1,23 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Returns the configured interrupt stack size in bytes of this application. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: ((${/c/if/size_t:/name}) ${/score/isr/if/stack-size:/name}) + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_configuration_get_interrupt_stack_size +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/config/if/get-maximum-barriers.yml b/spec/rtems/config/if/get-maximum-barriers.yml new file mode 100644 index 00000000..3536322f --- /dev/null +++ b/spec/rtems/config/if/get-maximum-barriers.yml @@ -0,0 +1,27 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Returns the maximum number of Classic API Barriers which are configured for + this application. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: + body: null + params: [] + return: ${/c/if/uint32_t:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header-2 +- role: interface-ingroup + uid: group +name: rtems_configuration_get_maximum_barriers +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/config/if/get-maximum-extensions.yml b/spec/rtems/config/if/get-maximum-extensions.yml new file mode 100644 index 00000000..0460126b --- /dev/null +++ b/spec/rtems/config/if/get-maximum-extensions.yml @@ -0,0 +1,27 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Returns the maximum number of Classic API User Extensions which are + configured for this application. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: + body: null + params: [] + return: ${/c/if/uint32_t:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_configuration_get_maximum_extensions +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/config/if/get-maximum-message-queues.yml b/spec/rtems/config/if/get-maximum-message-queues.yml new file mode 100644 index 00000000..2d8f3b3b --- /dev/null +++ b/spec/rtems/config/if/get-maximum-message-queues.yml @@ -0,0 +1,27 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Returns the maximum number of Classic API Message Queues which are configured + for this application. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: + body: null + params: [] + return: ${/c/if/uint32_t:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header-2 +- role: interface-ingroup + uid: group +name: rtems_configuration_get_maximum_message_queues +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/config/if/get-maximum-partitions.yml b/spec/rtems/config/if/get-maximum-partitions.yml new file mode 100644 index 00000000..dba034eb --- /dev/null +++ b/spec/rtems/config/if/get-maximum-partitions.yml @@ -0,0 +1,27 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Returns the maximum number of Classic API Partitions which are configured for + this application. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: + body: null + params: [] + return: ${/c/if/uint32_t:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header-2 +- role: interface-ingroup + uid: group +name: rtems_configuration_get_maximum_partitions +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/config/if/get-maximum-periods.yml b/spec/rtems/config/if/get-maximum-periods.yml new file mode 100644 index 00000000..418ec2cc --- /dev/null +++ b/spec/rtems/config/if/get-maximum-periods.yml @@ -0,0 +1,27 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Returns the maximum number of Classic API Rate Monotonic Periods which are + configured for this application. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: + body: null + params: [] + return: ${/c/if/uint32_t:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header-2 +- role: interface-ingroup + uid: group +name: rtems_configuration_get_maximum_periods +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/config/if/get-maximum-ports.yml b/spec/rtems/config/if/get-maximum-ports.yml new file mode 100644 index 00000000..c8dff653 --- /dev/null +++ b/spec/rtems/config/if/get-maximum-ports.yml @@ -0,0 +1,27 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Returns the maximum number of Classic API Dual Ported Memory Areas which are + configured for this application. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: + body: null + params: [] + return: ${/c/if/uint32_t:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header-2 +- role: interface-ingroup + uid: group +name: rtems_configuration_get_maximum_ports +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/config/if/get-maximum-processors.yml b/spec/rtems/config/if/get-maximum-processors.yml new file mode 100644 index 00000000..6fb3bfe0 --- /dev/null +++ b/spec/rtems/config/if/get-maximum-processors.yml @@ -0,0 +1,29 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Returns the maximum number of processors which are configured for this + application. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: ${/score/smp/if/processor-configured-maximum:/name} + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_configuration_get_maximum_processors +notes: | + The actual number of processors available for the application will be less + than or equal to the configured maximum number of processors. + + On uniprocessor configurations this macro is a compile time constant which + evaluates to one. +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/config/if/get-maximum-regions.yml b/spec/rtems/config/if/get-maximum-regions.yml new file mode 100644 index 00000000..0334c6f9 --- /dev/null +++ b/spec/rtems/config/if/get-maximum-regions.yml @@ -0,0 +1,27 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Returns the maximum number of Classic API Regions which are configured for + this application. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: + body: null + params: [] + return: ${/c/if/uint32_t:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header-2 +- role: interface-ingroup + uid: group +name: rtems_configuration_get_maximum_regions +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/config/if/get-maximum-semaphores.yml b/spec/rtems/config/if/get-maximum-semaphores.yml new file mode 100644 index 00000000..88abdb0e --- /dev/null +++ b/spec/rtems/config/if/get-maximum-semaphores.yml @@ -0,0 +1,27 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Returns the maximum number of Classic API Semaphores which are configured for + this application. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: + body: null + params: [] + return: ${/c/if/uint32_t:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header-2 +- role: interface-ingroup + uid: group +name: rtems_configuration_get_maximum_semaphores +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/config/if/get-maximum-tasks.yml b/spec/rtems/config/if/get-maximum-tasks.yml new file mode 100644 index 00000000..ad62a40a --- /dev/null +++ b/spec/rtems/config/if/get-maximum-tasks.yml @@ -0,0 +1,27 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Returns the maximum number of Classic API Tasks which are configured for this + application. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: + body: null + params: [] + return: ${/c/if/uint32_t:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header-2 +- role: interface-ingroup + uid: group +name: rtems_configuration_get_maximum_tasks +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/config/if/get-maximum-timers.yml b/spec/rtems/config/if/get-maximum-timers.yml new file mode 100644 index 00000000..a65cbeba --- /dev/null +++ b/spec/rtems/config/if/get-maximum-timers.yml @@ -0,0 +1,27 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Returns the maximum number of Classic API Timers which are configured for + this application. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: + body: null + params: [] + return: ${/c/if/uint32_t:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header-2 +- role: interface-ingroup + uid: group +name: rtems_configuration_get_maximum_timers +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/config/if/get-microseconds-per-tick.yml b/spec/rtems/config/if/get-microseconds-per-tick.yml new file mode 100644 index 00000000..7c4d8765 --- /dev/null +++ b/spec/rtems/config/if/get-microseconds-per-tick.yml @@ -0,0 +1,23 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Returns the number of microseconds per tick configured for this application. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: ${/score/watchdog/if/microseconds-per-tick:/name} + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_configuration_get_microseconds_per_tick +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/config/if/get-milliseconds-per-tick.yml b/spec/rtems/config/if/get-milliseconds-per-tick.yml new file mode 100644 index 00000000..a0c4e42a --- /dev/null +++ b/spec/rtems/config/if/get-milliseconds-per-tick.yml @@ -0,0 +1,23 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Returns the number of milliseconds per tick configured for this application. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: (${/score/watchdog/if/microseconds-per-tick:/name} / 1000) + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_configuration_get_milliseconds_per_tick +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/config/if/get-nanoseconds-per-tick.yml b/spec/rtems/config/if/get-nanoseconds-per-tick.yml new file mode 100644 index 00000000..2cd6d4b5 --- /dev/null +++ b/spec/rtems/config/if/get-nanoseconds-per-tick.yml @@ -0,0 +1,23 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Returns the number of microseconds per tick configured for this application. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: ${/score/watchdog/if/nanoseconds-per-tick:/name} + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_configuration_get_nanoseconds_per_tick +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/config/if/get-number-of-initial-extensions.yml b/spec/rtems/config/if/get-number-of-initial-extensions.yml new file mode 100644 index 00000000..bee483bd --- /dev/null +++ b/spec/rtems/config/if/get-number-of-initial-extensions.yml @@ -0,0 +1,23 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Returns the number of initial extensions configured for this application. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: ((${/c/if/uint32_t:/name}) ${/score/userext/if/initial-count:/name}) + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_configuration_get_number_of_initial_extensions +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/config/if/get-stack-allocate-hook.yml b/spec/rtems/config/if/get-stack-allocate-hook.yml new file mode 100644 index 00000000..4e02dcf9 --- /dev/null +++ b/spec/rtems/config/if/get-stack-allocate-hook.yml @@ -0,0 +1,23 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Returns the thread stack allocator allocate hook. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: ${/score/stack/if/allocator-allocate:/name} + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_configuration_get_stack_allocate_hook +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/config/if/get-stack-allocate-init-hook.yml b/spec/rtems/config/if/get-stack-allocate-init-hook.yml new file mode 100644 index 00000000..dcdc6b8f --- /dev/null +++ b/spec/rtems/config/if/get-stack-allocate-init-hook.yml @@ -0,0 +1,23 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Returns the thread stack allocator initialization hook. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: ${/score/stack/if/allocator-initialize:/name} + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_configuration_get_stack_allocate_init_hook +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/config/if/get-stack-allocator-avoids-work-space.yml b/spec/rtems/config/if/get-stack-allocator-avoids-work-space.yml new file mode 100644 index 00000000..106cca32 --- /dev/null +++ b/spec/rtems/config/if/get-stack-allocator-avoids-work-space.yml @@ -0,0 +1,24 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Returns true, if the thread stack allocator avoids the workspace, otherwise + returns false. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: ${/score/stack/if/allocator-avoids-workspace:/name} + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_configuration_get_stack_allocator_avoids_work_space +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/config/if/get-stack-free-hook.yml b/spec/rtems/config/if/get-stack-free-hook.yml new file mode 100644 index 00000000..57edf34b --- /dev/null +++ b/spec/rtems/config/if/get-stack-free-hook.yml @@ -0,0 +1,23 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Returns the thread stack allocator free hook. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: ${/score/stack/if/allocator-free:/name} + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_configuration_get_stack_free_hook +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/config/if/get-stack-space-size.yml b/spec/rtems/config/if/get-stack-space-size.yml new file mode 100644 index 00000000..8f8e6ebd --- /dev/null +++ b/spec/rtems/config/if/get-stack-space-size.yml @@ -0,0 +1,27 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Returns the thread stack space size in bytes of configured for this + application. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: + body: null + params: [] + return: ${/c/if/uintptr_t:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_configuration_get_stack_space_size +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/config/if/get-ticks-per-timeslice.yml b/spec/rtems/config/if/get-ticks-per-timeslice.yml new file mode 100644 index 00000000..8011de74 --- /dev/null +++ b/spec/rtems/config/if/get-ticks-per-timeslice.yml @@ -0,0 +1,23 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Returns the ticks per timeslice configured for this application. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: ${/score/watchdog/if/ticks-per-timeslice:/name} + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_configuration_get_ticks_per_timeslice +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/config/if/get-unified-work-area.yml b/spec/rtems/config/if/get-unified-work-area.yml new file mode 100644 index 00000000..ced59175 --- /dev/null +++ b/spec/rtems/config/if/get-unified-work-area.yml @@ -0,0 +1,24 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Returns true, if the RTEMS Workspace and C Program Heap are unified, + otherwise returns false. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: ${/score/wkspace/if/is-unified:/name} + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_configuration_get_unified_work_area +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/config/if/get-user-extension-table.yml b/spec/rtems/config/if/get-user-extension-table.yml new file mode 100644 index 00000000..a6c3dd09 --- /dev/null +++ b/spec/rtems/config/if/get-user-extension-table.yml @@ -0,0 +1,24 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Returns the pointer to the initial extensions table configured for this + application. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: ${/score/userext/if/initial-extensions:/name} + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_configuration_get_user_extension_table +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/config/if/get-user-multiprocessing-table.yml b/spec/rtems/config/if/get-user-multiprocessing-table.yml new file mode 100644 index 00000000..41ed5f9f --- /dev/null +++ b/spec/rtems/config/if/get-user-multiprocessing-table.yml @@ -0,0 +1,26 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Returns the pointer to the MPCI configuration table configured for this + application. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: ${/c/if/null:/name} + variants: + - definition: ( &${/score/mpci/if/configuration:/name} ) + enabled-by: defined(${/build-options/if/multiprocessing:/name}) +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_configuration_get_user_multiprocessing_table +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/config/if/get-version-string.yml b/spec/rtems/config/if/get-version-string.yml new file mode 100644 index 00000000..2cca0f6a --- /dev/null +++ b/spec/rtems/config/if/get-version-string.yml @@ -0,0 +1,26 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: [] + return: const char * + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_get_version_string +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/config/if/get-work-space-size.yml b/spec/rtems/config/if/get-work-space-size.yml new file mode 100644 index 00000000..535bd5fa --- /dev/null +++ b/spec/rtems/config/if/get-work-space-size.yml @@ -0,0 +1,26 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Returns the RTEMS Workspace size in bytes configured for this application. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: | + (${/score/wkspace/if/size:/name} + + (${get-stack-allocator-avoids-work-space:/name}() ? + 0 : ${get-stack-space-size:/name}())) + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_configuration_get_work_space_size +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/config/if/group.yml b/spec/rtems/config/if/group.yml new file mode 100644 index 00000000..21c46cd8 --- /dev/null +++ b/spec/rtems/config/if/group.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This group contains defines and macros to create an application configuration + as well as functions to get values of the application configuration. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +description: null +enabled-by: true +identifier: RTEMSAPIConfig +interface-type: group +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: /if/api +name: Application Configuration +text: | + The API shall provide an interface to the application configuration. +type: interface diff --git a/spec/rtems/config/if/has-hardware-fp.yml b/spec/rtems/config/if/has-hardware-fp.yml new file mode 100644 index 00000000..b22d880c --- /dev/null +++ b/spec/rtems/config/if/has-hardware-fp.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/cpu/if/hardware-fp:/name} + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_HAS_HARDWARE_FP +notes: null +type: interface diff --git a/spec/rtems/config/if/header-2.yml b/spec/rtems/config/if/header-2.yml new file mode 100644 index 00000000..1c735809 --- /dev/null +++ b/spec/rtems/config/if/header-2.yml @@ -0,0 +1,14 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This header file defines parts of the application configuration information + API. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +interface-type: header-file +links: +- role: interface-placement + uid: /if/domain +path: rtems/rtems/config.h +prefix: cpukit/include +type: interface diff --git a/spec/rtems/config/if/header.yml b/spec/rtems/config/if/header.yml new file mode 100644 index 00000000..5ccaeaa3 --- /dev/null +++ b/spec/rtems/config/if/header.yml @@ -0,0 +1,23 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This header file defines parts of the application configuration information + API. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +interface-type: header-file +links: +- enabled-by: RTEMS_MULTIPROCESSING + role: interface-include + uid: /score/mpci/if/header +- enabled-by: RTEMS_MULTIPROCESSING + role: interface-include + uid: ../../type/if/header +- enabled-by: true + role: interface-include + uid: header-2 +- role: interface-placement + uid: /if/domain +path: rtems/config.h +prefix: cpukit/include +type: interface diff --git a/spec/rtems/config/if/resource-is-unlimited.yml b/spec/rtems/config/if/resource-is-unlimited.yml new file mode 100644 index 00000000..29c5448e --- /dev/null +++ b/spec/rtems/config/if/resource-is-unlimited.yml @@ -0,0 +1,26 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Returns true, if the resource is unlimited, otherwise returns false. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: ${/score/object/if/is-unlimited:/name}(${.:/params[0]/name}) + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_resource_is_unlimited +notes: null +params: +- description: is the resource number. + dir: null + name: _resource +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/config/if/resource-maximum-per-allocation.yml b/spec/rtems/config/if/resource-maximum-per-allocation.yml new file mode 100644 index 00000000..4fbbd13f --- /dev/null +++ b/spec/rtems/config/if/resource-maximum-per-allocation.yml @@ -0,0 +1,26 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Returns the resource maximum number per allocation. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: ${/score/object/if/maximum-per-allocation:/name}(${.:/params[0]/name}) + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_resource_maximum_per_allocation +notes: null +params: +- description: is the resource number. + dir: null + name: _resource +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/config/if/resource-unlimited.yml b/spec/rtems/config/if/resource-unlimited.yml new file mode 100644 index 00000000..56661ec9 --- /dev/null +++ b/spec/rtems/config/if/resource-unlimited.yml @@ -0,0 +1,26 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Returns the specified resource number configured for unlimited resources. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: ((${.:/params[0]/name}) | ${unlimited-objects:/name}) + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_resource_unlimited +notes: null +params: +- description: is the resource number. + dir: null + name: _resource +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/config/if/stack-allocate-hook.yml b/spec/rtems/config/if/stack-allocate-hook.yml new file mode 100644 index 00000000..697d7c2c --- /dev/null +++ b/spec/rtems/config/if/stack-allocate-hook.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + The thread stack allocator allocate handler. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: ${/score/stack/if/allocator-allocate-type:/name} ${.:/name} + variants: [] +description: null +enabled-by: true +interface-type: typedef +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_stack_allocate_hook +notes: null +type: interface diff --git a/spec/rtems/config/if/stack-allocate-init-hook.yml b/spec/rtems/config/if/stack-allocate-init-hook.yml new file mode 100644 index 00000000..15664afb --- /dev/null +++ b/spec/rtems/config/if/stack-allocate-init-hook.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + The thread stack allocator initialization handler. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: ${/score/stack/if/allocator-initialize-type:/name} ${.:/name} + variants: [] +description: null +enabled-by: true +interface-type: typedef +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_stack_allocate_init_hook +notes: null +type: interface diff --git a/spec/rtems/config/if/stack-free-hook.yml b/spec/rtems/config/if/stack-free-hook.yml new file mode 100644 index 00000000..2156b9f4 --- /dev/null +++ b/spec/rtems/config/if/stack-free-hook.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + The thread stack allocator free handler. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: ${/score/stack/if/allocator-free-type:/name} ${.:/name} + variants: [] +description: null +enabled-by: true +interface-type: typedef +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_stack_free_hook +notes: null +type: interface diff --git a/spec/rtems/config/if/unlimited-objects.yml b/spec/rtems/config/if/unlimited-objects.yml new file mode 100644 index 00000000..c7b697b5 --- /dev/null +++ b/spec/rtems/config/if/unlimited-objects.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This flag is used in resource numbers to indicate an unlimited resource. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: ${/score/object/if/unlimited-objects:/name} + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_UNLIMITED_OBJECTS +notes: null +type: interface diff --git a/spec/rtems/dpmem/if/create.yml b/spec/rtems/dpmem/if/create.yml new file mode 100644 index 00000000..4aafe886 --- /dev/null +++ b/spec/rtems/dpmem/if/create.yml @@ -0,0 +1,46 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/name:/name} ${.:/params[0]/name} + - void *${.:/params[1]/name} + - void *${.:/params[2]/name} + - ${/c/if/uint32_t:/name} ${.:/params[3]/name} + - ${../../type/if/id:/name} *${.:/params[4]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_port_create +notes: null +params: +- description: '%' + dir: null + name: name +- description: '%' + dir: null + name: internal_start +- description: '%' + dir: null + name: external_start +- description: '%' + dir: null + name: length +- description: '%' + dir: null + name: id +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/dpmem/if/delete.yml b/spec/rtems/dpmem/if/delete.yml new file mode 100644 index 00000000..7489f810 --- /dev/null +++ b/spec/rtems/dpmem/if/delete.yml @@ -0,0 +1,30 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_port_delete +notes: null +params: +- description: '%' + dir: null + name: id +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/dpmem/if/external-to-internal.yml b/spec/rtems/dpmem/if/external-to-internal.yml new file mode 100644 index 00000000..02bb92f3 --- /dev/null +++ b/spec/rtems/dpmem/if/external-to-internal.yml @@ -0,0 +1,38 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + - void *${.:/params[1]/name} + - void **${.:/params[2]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_port_external_to_internal +notes: null +params: +- description: '%' + dir: null + name: id +- description: '%' + dir: null + name: external +- description: '%' + dir: null + name: internal +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/dpmem/if/group.yml b/spec/rtems/dpmem/if/group.yml new file mode 100644 index 00000000..daa2c4e4 --- /dev/null +++ b/spec/rtems/dpmem/if/group.yml @@ -0,0 +1,21 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + The Dual-Ported Memory Manager provides a mechanism for converting addresses + between internal and external representations for multiple dual-ported memory + areas (DPMA). +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +description: null +enabled-by: true +identifier: RTEMSAPIClassicDPMem +interface-type: group +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: ../../if/group +name: Dual-Ported Memory Manager +text: | + The Classic API shall provide an interface to the Dual-Ported Memory Manager. +type: interface diff --git a/spec/rtems/dpmem/if/header.yml b/spec/rtems/dpmem/if/header.yml new file mode 100644 index 00000000..ba65718b --- /dev/null +++ b/spec/rtems/dpmem/if/header.yml @@ -0,0 +1,12 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: This header file defines the Dual-Ported Memory Manager API. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +interface-type: header-file +links: +- role: interface-placement + uid: /if/domain +path: rtems/rtems/dpmem.h +prefix: cpukit/include +type: interface diff --git a/spec/rtems/dpmem/if/ident.yml b/spec/rtems/dpmem/if/ident.yml new file mode 100644 index 00000000..d013aa0a --- /dev/null +++ b/spec/rtems/dpmem/if/ident.yml @@ -0,0 +1,59 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Identifies a port object by the specified object name. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/name:/name} ${.:/params[0]/name} + - ${../../type/if/id:/name} *${.:/params[1]/name} + return: ${../../status/if/code:/name} + variants: [] +description: | + This directive obtains the port identifier associated with the port name + specified in ``${.:/params[0]/name}``. +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_port_ident +notes: | + If the port name is not unique, then the port identifier will match the first + port with that name in the search order. However, this port identifier is + not guaranteed to correspond to the desired port. The port identifier is + used with other dual-ported memory related directives to access the port. + + The objects are searched from lowest to the highest index. Only the local + node is searched. +params: +- description: is the object name to look up. + dir: null + name: name +- description: | + is the pointer to an object identifier variable. The object identifier of + an object with the specified name will be stored in this variable, in case + of a successful operation. + dir: out + name: id +return: + return: null + return-values: + - description: | + The requested operation was successful. + value: ${../../status/if/successful:/name} + - description: | + The ${.:/params[1]/name} parameter was ${/c/if/null:/name}. + value: ${../../status/if/invalid-address:/name} + - description: | + The ${.:/params[0]/name} parameter was 0. + value: ${../../status/if/invalid-name:/name} + - description: | + There was no object with the specified name on the local node. + value: ${../../status/if/invalid-name:/name} +type: interface diff --git a/spec/rtems/dpmem/if/internal-to-external.yml b/spec/rtems/dpmem/if/internal-to-external.yml new file mode 100644 index 00000000..39f8e97c --- /dev/null +++ b/spec/rtems/dpmem/if/internal-to-external.yml @@ -0,0 +1,38 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + - void *${.:/params[1]/name} + - void **${.:/params[2]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_port_internal_to_external +notes: null +params: +- description: '%' + dir: null + name: id +- description: '%' + dir: null + name: internal +- description: '%' + dir: null + name: external +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/event/if/all-events.yml b/spec/rtems/event/if/all-events.yml new file mode 100644 index 00000000..792dbebe --- /dev/null +++ b/spec/rtems/event/if/all-events.yml @@ -0,0 +1,22 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant contains all events in an event set. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0xffffffff' + variants: [] +description: | + The value of this constant is identical to ${event-0:/name} | ... | + ${event-31:/name}. +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_ALL_EVENTS +notes: null +type: interface diff --git a/spec/rtems/event/if/event-0.yml b/spec/rtems/event/if/event-0.yml new file mode 100644 index 00000000..976e5d9b --- /dev/null +++ b/spec/rtems/event/if/event-0.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the event set associated with event 0. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000001' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_EVENT_0 +notes: null +type: interface diff --git a/spec/rtems/event/if/event-1.yml b/spec/rtems/event/if/event-1.yml new file mode 100644 index 00000000..cf2a5760 --- /dev/null +++ b/spec/rtems/event/if/event-1.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the event set associated with event 1. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000002' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_EVENT_1 +notes: null +type: interface diff --git a/spec/rtems/event/if/event-10.yml b/spec/rtems/event/if/event-10.yml new file mode 100644 index 00000000..f35de1f0 --- /dev/null +++ b/spec/rtems/event/if/event-10.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the event set associated with event 10. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000400' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_EVENT_10 +notes: null +type: interface diff --git a/spec/rtems/event/if/event-11.yml b/spec/rtems/event/if/event-11.yml new file mode 100644 index 00000000..ee7d3c82 --- /dev/null +++ b/spec/rtems/event/if/event-11.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the event set associated with event 11. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000800' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_EVENT_11 +notes: null +type: interface diff --git a/spec/rtems/event/if/event-12.yml b/spec/rtems/event/if/event-12.yml new file mode 100644 index 00000000..0b4fc7cf --- /dev/null +++ b/spec/rtems/event/if/event-12.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the event set associated with event 12. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00001000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_EVENT_12 +notes: null +type: interface diff --git a/spec/rtems/event/if/event-13.yml b/spec/rtems/event/if/event-13.yml new file mode 100644 index 00000000..f4ff6634 --- /dev/null +++ b/spec/rtems/event/if/event-13.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the event set associated with event 13. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00002000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_EVENT_13 +notes: null +type: interface diff --git a/spec/rtems/event/if/event-14.yml b/spec/rtems/event/if/event-14.yml new file mode 100644 index 00000000..fad4334d --- /dev/null +++ b/spec/rtems/event/if/event-14.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the event set associated with event 14. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00004000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_EVENT_14 +notes: null +type: interface diff --git a/spec/rtems/event/if/event-15.yml b/spec/rtems/event/if/event-15.yml new file mode 100644 index 00000000..5176416c --- /dev/null +++ b/spec/rtems/event/if/event-15.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the event set associated with event 15. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00008000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_EVENT_15 +notes: null +type: interface diff --git a/spec/rtems/event/if/event-16.yml b/spec/rtems/event/if/event-16.yml new file mode 100644 index 00000000..4f44a2ac --- /dev/null +++ b/spec/rtems/event/if/event-16.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the event set associated with event 16. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00010000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_EVENT_16 +notes: null +type: interface diff --git a/spec/rtems/event/if/event-17.yml b/spec/rtems/event/if/event-17.yml new file mode 100644 index 00000000..24f153e9 --- /dev/null +++ b/spec/rtems/event/if/event-17.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the event set associated with event 17. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00020000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_EVENT_17 +notes: null +type: interface diff --git a/spec/rtems/event/if/event-18.yml b/spec/rtems/event/if/event-18.yml new file mode 100644 index 00000000..dca01762 --- /dev/null +++ b/spec/rtems/event/if/event-18.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the event set associated with event 18. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00040000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_EVENT_18 +notes: null +type: interface diff --git a/spec/rtems/event/if/event-19.yml b/spec/rtems/event/if/event-19.yml new file mode 100644 index 00000000..58f8be6f --- /dev/null +++ b/spec/rtems/event/if/event-19.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the event set associated with event 19. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00080000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_EVENT_19 +notes: null +type: interface diff --git a/spec/rtems/event/if/event-2.yml b/spec/rtems/event/if/event-2.yml new file mode 100644 index 00000000..d9614ea6 --- /dev/null +++ b/spec/rtems/event/if/event-2.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the event set associated with event 2. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000004' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_EVENT_2 +notes: null +type: interface diff --git a/spec/rtems/event/if/event-20.yml b/spec/rtems/event/if/event-20.yml new file mode 100644 index 00000000..5e6d0428 --- /dev/null +++ b/spec/rtems/event/if/event-20.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the event set associated with event 20. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00100000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_EVENT_20 +notes: null +type: interface diff --git a/spec/rtems/event/if/event-21.yml b/spec/rtems/event/if/event-21.yml new file mode 100644 index 00000000..a43624da --- /dev/null +++ b/spec/rtems/event/if/event-21.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the event set associated with event 21. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00200000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_EVENT_21 +notes: null +type: interface diff --git a/spec/rtems/event/if/event-22.yml b/spec/rtems/event/if/event-22.yml new file mode 100644 index 00000000..2e6fc3ef --- /dev/null +++ b/spec/rtems/event/if/event-22.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the event set associated with event 22. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00400000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_EVENT_22 +notes: null +type: interface diff --git a/spec/rtems/event/if/event-23.yml b/spec/rtems/event/if/event-23.yml new file mode 100644 index 00000000..a4e27650 --- /dev/null +++ b/spec/rtems/event/if/event-23.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the event set associated with event 23. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00800000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_EVENT_23 +notes: null +type: interface diff --git a/spec/rtems/event/if/event-24.yml b/spec/rtems/event/if/event-24.yml new file mode 100644 index 00000000..ec870df8 --- /dev/null +++ b/spec/rtems/event/if/event-24.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the event set associated with event 24. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x01000000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_EVENT_24 +notes: null +type: interface diff --git a/spec/rtems/event/if/event-25.yml b/spec/rtems/event/if/event-25.yml new file mode 100644 index 00000000..ff245093 --- /dev/null +++ b/spec/rtems/event/if/event-25.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the event set associated with event 25. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x02000000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_EVENT_25 +notes: null +type: interface diff --git a/spec/rtems/event/if/event-26.yml b/spec/rtems/event/if/event-26.yml new file mode 100644 index 00000000..ec8f6287 --- /dev/null +++ b/spec/rtems/event/if/event-26.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the event set associated with event 26. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x04000000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_EVENT_26 +notes: null +type: interface diff --git a/spec/rtems/event/if/event-27.yml b/spec/rtems/event/if/event-27.yml new file mode 100644 index 00000000..2bdfaf8a --- /dev/null +++ b/spec/rtems/event/if/event-27.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the event set associated with event 27. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x08000000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_EVENT_27 +notes: null +type: interface diff --git a/spec/rtems/event/if/event-28.yml b/spec/rtems/event/if/event-28.yml new file mode 100644 index 00000000..30086e05 --- /dev/null +++ b/spec/rtems/event/if/event-28.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the event set associated with event 28. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x10000000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_EVENT_28 +notes: null +type: interface diff --git a/spec/rtems/event/if/event-29.yml b/spec/rtems/event/if/event-29.yml new file mode 100644 index 00000000..25fbabb6 --- /dev/null +++ b/spec/rtems/event/if/event-29.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the event set associated with event 29. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x20000000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_EVENT_29 +notes: null +type: interface diff --git a/spec/rtems/event/if/event-3.yml b/spec/rtems/event/if/event-3.yml new file mode 100644 index 00000000..6f02ab05 --- /dev/null +++ b/spec/rtems/event/if/event-3.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the event set associated with event 3. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000008' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_EVENT_3 +notes: null +type: interface diff --git a/spec/rtems/event/if/event-30.yml b/spec/rtems/event/if/event-30.yml new file mode 100644 index 00000000..cb99e510 --- /dev/null +++ b/spec/rtems/event/if/event-30.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the event set associated with event 30. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x40000000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_EVENT_30 +notes: null +type: interface diff --git a/spec/rtems/event/if/event-31.yml b/spec/rtems/event/if/event-31.yml new file mode 100644 index 00000000..ff909283 --- /dev/null +++ b/spec/rtems/event/if/event-31.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the event set associated with event 31. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x80000000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_EVENT_31 +notes: null +type: interface diff --git a/spec/rtems/event/if/event-4.yml b/spec/rtems/event/if/event-4.yml new file mode 100644 index 00000000..d2384a10 --- /dev/null +++ b/spec/rtems/event/if/event-4.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the event set associated with event 4. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000010' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_EVENT_4 +notes: null +type: interface diff --git a/spec/rtems/event/if/event-5.yml b/spec/rtems/event/if/event-5.yml new file mode 100644 index 00000000..db3bbc30 --- /dev/null +++ b/spec/rtems/event/if/event-5.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the event set associated with event 5. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000020' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_EVENT_5 +notes: null +type: interface diff --git a/spec/rtems/event/if/event-6.yml b/spec/rtems/event/if/event-6.yml new file mode 100644 index 00000000..0383167d --- /dev/null +++ b/spec/rtems/event/if/event-6.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the event set associated with event 6. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000040' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_EVENT_6 +notes: null +type: interface diff --git a/spec/rtems/event/if/event-7.yml b/spec/rtems/event/if/event-7.yml new file mode 100644 index 00000000..56d1e2b2 --- /dev/null +++ b/spec/rtems/event/if/event-7.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the event set associated with event 7. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000080' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_EVENT_7 +notes: null +type: interface diff --git a/spec/rtems/event/if/event-8.yml b/spec/rtems/event/if/event-8.yml new file mode 100644 index 00000000..0d2f2274 --- /dev/null +++ b/spec/rtems/event/if/event-8.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the event set associated with event 8. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000100' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_EVENT_8 +notes: null +type: interface diff --git a/spec/rtems/event/if/event-9.yml b/spec/rtems/event/if/event-9.yml new file mode 100644 index 00000000..94112830 --- /dev/null +++ b/spec/rtems/event/if/event-9.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the event set associated with event 9. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000200' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_EVENT_9 +notes: null +type: interface diff --git a/spec/rtems/event/if/group.yml b/spec/rtems/event/if/group.yml new file mode 100644 index 00000000..1c2fd904 --- /dev/null +++ b/spec/rtems/event/if/group.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + The Event Manager provides a high performance method of inter-task + communication and synchronization. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +description: null +enabled-by: true +identifier: RTEMSAPIClassicEvent +interface-type: group +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: ../../if/group +name: Event Manager +text: | + The Classic API shall provide an interface to the Event Manager. +type: interface diff --git a/spec/rtems/event/if/header.yml b/spec/rtems/event/if/header.yml new file mode 100644 index 00000000..44867cf7 --- /dev/null +++ b/spec/rtems/event/if/header.yml @@ -0,0 +1,12 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: This header file defines the Event Manager API. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +interface-type: header-file +links: +- role: interface-placement + uid: /if/domain +path: rtems/rtems/event.h +prefix: cpukit/include +type: interface diff --git a/spec/rtems/event/if/pending-events.yml b/spec/rtems/event/if/pending-events.yml new file mode 100644 index 00000000..50a7c724 --- /dev/null +++ b/spec/rtems/event/if/pending-events.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant used to get the set of pending events in ${receive:/name}. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_PENDING_EVENTS +notes: null +type: interface diff --git a/spec/rtems/event/if/receive.yml b/spec/rtems/event/if/receive.yml new file mode 100644 index 00000000..acd252ba --- /dev/null +++ b/spec/rtems/event/if/receive.yml @@ -0,0 +1,122 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Receives or gets an event set. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${set:/name} ${.:/params[0]/name} + - ${../../option/if/option:/name} ${.:/params[1]/name} + - ${../../type/if/interval:/name} ${.:/params[2]/name} + - ${set:/name} *${.:/params[3]/name} + return: ${../../status/if/code:/name} + variants: [] +description: | + This directive can be used to + + * get the pending events of the calling task, or + + * receive events. + + To *get the pending events* use the constant ${pending-events:/name} for the + ``${.:/params[0]/name}`` parameter. The pending events are returned to the + calling task but the event set of the task is left unaltered. The + ``${.:/params[1]/name}`` and ``${.:params[2]/name}`` parameters are ignored + in this case. The directive returns immediately and does not block. + + To *receive events* you have to define an input event condition and some + options. The option set specified in ``${.:/params[1]/name}`` defines + + * if the task will wait or poll for the events, and + + * if the task wants to receive all or any of the input events. + + The option set is built through a *bitwise or* of the option constants + described below. + + The task can *wait* or *poll* for the events. + + * Waiting for events is the default and can be emphasized through the use of + the ${../../option/if/wait:/name} option. The ``${.:/params[2]/name}`` + parameter defines how long the task is willing to wait. Use + ${../../type/if/no-timeout:/name} to wait potentially forever, otherwise set a + timeout interval in clock ticks. + + * Not waiting for events (polling) is selected by the + ${../../option/if/no-wait:/name} option. If this option is defined, then the + ``${.:/params[2]/name}`` parameter is ignored. + + The task can receive *all* or *any* of the input events specified in + ``${.:/params[0]/name}``. + + * Receiving all input events is the default and can be emphasized through the use + of the ${../../option/if/event-all:/name} option. + + * Receiving any of the input events is selected by the + ${../../option/if/event-any:/name} option. + + To receive all events use the constant ${all-events:/name} for the + ``${.:/params[0]/name}`` parameter. This constant is identical to + ${event-0:/name} | ... | ${event-31:/name} and should not be confused with + the option ${../../option/if/event-all:/name}. +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_event_receive +notes: | + This directive shall be called by a task. Calling this directive from + interrupt context is undefined behaviour. + + This directive only affects the events specified in ``${.:/params[0]/name}``. + Any pending events that do not correspond to any of the events specified in + ``${.:/params[0]/name}`` will be left pending. + + A task can *receive all of the pending events* by calling the directive with + a value of ${all-events:/name} for the ``${.:/params[0]/name}`` parameter and + ${../../option/if/no-wait:/name} | ${../../option/if/event-any:/name} for the + ``${.:/params[1]/name}`` parameter. The pending events are returned to the + calling task and the event set of the task is cleared. If no events are + pending then the ${../../status/if/unsatisfied:/name} status code will be returned. +params: +- description: | + is the event set of interest. Use ${pending-events:/name} to get the + pending events. + dir: null + name: event_in +- description: is the option set. + dir: null + name: option_set +- description: | + is the timeout in clock ticks if the ${../../option/if/wait:/name} option was + set. Use ${../../type/if/no-timeout:/name} to wait potentially forever. + dir: null + name: ticks +- description: | + is the pointer to an event set. The received or pending events are stored + in the referenced event set if the operation was successful. + dir: null + name: event_out +return: + return: null + return-values: + - description: | + The requested operation was successful. + value: ${../../status/if/successful:/name} + - description: | + The ``${.:/params[3]/name}`` parameter was ${/c/if/null:/name}. + value: ${../../status/if/invalid-address:/name} + - description: | + The events of interest were not immediately available. + value: ${../../status/if/unsatisfied:/name} + - description: | + The events of interest were not available within the specified timeout + interval. + value: ${../../status/if/timeout:/name} +type: interface diff --git a/spec/rtems/event/if/send.yml b/spec/rtems/event/if/send.yml new file mode 100644 index 00000000..240c30be --- /dev/null +++ b/spec/rtems/event/if/send.yml @@ -0,0 +1,74 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Sends an event set to a task. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + - ${set:/name} ${.:/params[1]/name} + return: ${../../status/if/code:/name} + variants: [] +description: | + This directive sends an event set, ``${.:/params[1]/name}``, to the task + specified by ``${.:/params[0]/name}``. Based upon the state of the target + task, one of the following situations applies: + + * The target task is blocked waiting for events, then + + * if the waiting task's input event condition is satisfied, then the task + is made ready for execution, or + + * otherwise, the event set is posted but left pending and the task remains + blocked. + + * The target task is not waiting for events, then the event set is posted and + left pending. +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_event_send +notes: | + Events can be sent by tasks or an ${/glossary/isr:/term}. + + Specifying ${../../task/if/self-define:/name} for ``${.:/params[0]/name}`` results + in the event set being sent to the calling task. + + The event set to send shall be built by a *bitwise or* of the desired events. + The set of valid events is ${event-0:/name} through ${event-31:/name}. If an + event is not explicitly specified in the set, then it is not present. + + Identical events sent to a task are not queued. In other words, the second, + and subsequent, posting of an event to a task before it can perform an + ${receive:/name} has no effect. + + The calling task will be preempted if it has preemption enabled and a higher + priority task is unblocked as the result of this directive. + + Sending an event set to a global task which does not reside on the local node + will generate a request telling the remote node to send the event set to the + appropriate task. +params: +- description: is the identifier of the target task to receive the event set. + dir: null + name: id +- description: is the event set to send. + dir: null + name: event_in +return: + return: null + return-values: + - description: | + The requested operation was successful. + value: ${../../status/if/successful:/name} + - description: | + There was no task with the specified identifier. + value: ${../../status/if/invalid-id:/name} +type: interface diff --git a/spec/rtems/event/if/set.yml b/spec/rtems/event/if/set.yml new file mode 100644 index 00000000..cbcff37d --- /dev/null +++ b/spec/rtems/event/if/set.yml @@ -0,0 +1,21 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This integer type can hold an event set of up to 32 events represented as a + bit field. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/c/if/uint32_t:/name} ${.:/name} + variants: [] +description: null +enabled-by: true +interface-type: typedef +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_event_set +notes: null +type: interface diff --git a/spec/rtems/event/if/system-network-close.yml b/spec/rtems/event/if/system-network-close.yml new file mode 100644 index 00000000..db5149de --- /dev/null +++ b/spec/rtems/event/if/system-network-close.yml @@ -0,0 +1,18 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This is a reserved system event for a network socket close. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${event-26:/name} + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +name: RTEMS_EVENT_SYSTEM_NETWORK_CLOSE +notes: null +type: interface diff --git a/spec/rtems/event/if/system-network-sbwait.yml b/spec/rtems/event/if/system-network-sbwait.yml new file mode 100644 index 00000000..d1fe0b83 --- /dev/null +++ b/spec/rtems/event/if/system-network-sbwait.yml @@ -0,0 +1,18 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This is a reserved system event for a network socket buffer wait usage. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${event-24:/name} + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +name: RTEMS_EVENT_SYSTEM_NETWORK_SBWAIT +notes: null +type: interface diff --git a/spec/rtems/event/if/system-network-sosleep.yml b/spec/rtems/event/if/system-network-sosleep.yml new file mode 100644 index 00000000..483afb96 --- /dev/null +++ b/spec/rtems/event/if/system-network-sosleep.yml @@ -0,0 +1,18 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This is a reserved system event for a network socket sleep usage. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${event-25:/name} + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +name: RTEMS_EVENT_SYSTEM_NETWORK_SOSLEEP +notes: null +type: interface diff --git a/spec/rtems/event/if/system-receive.yml b/spec/rtems/event/if/system-receive.yml new file mode 100644 index 00000000..1cecddc4 --- /dev/null +++ b/spec/rtems/event/if/system-receive.yml @@ -0,0 +1,49 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Receives or gets a system event set. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${set:/name} ${.:/params[0]/name} + - ${../../option/if/option:/name} ${.:/params[1]/name} + - ${../../type/if/interval:/name} ${.:/params[2]/name} + - ${set:/name} *${.:/params[3]/name} + return: ${../../status/if/code:/name} + variants: [] +description: | + This directive performs the same actions as the ${receive:/name} directive + except that it operates with a different set of events for each task. +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +name: rtems_event_system_receive +notes: null +params: +- description: | + is the event set of interest. Use ${pending-events:/name} to get the + pending events. + dir: null + name: event_in +- description: is the option set. + dir: null + name: option_set +- description: | + is the timeout in clock ticks if the ${../../option/if/wait:/name} option was + set. Use ${../../type/if/no-timeout:/name} to wait potentially forever. + dir: null + name: ticks +- description: | + is the pointer to an event set. The received or pending events are stored + in the referenced event set if the operation was successful. + dir: null + name: event_out +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/event/if/system-send.yml b/spec/rtems/event/if/system-send.yml new file mode 100644 index 00000000..75c7fb53 --- /dev/null +++ b/spec/rtems/event/if/system-send.yml @@ -0,0 +1,33 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Sends a system event set to a task. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + - ${set:/name} ${.:/params[1]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +name: rtems_event_system_send +notes: null +params: +- description: is the identifier of the target task to receive the event set. + dir: null + name: id +- description: is the event set to send. + dir: null + name: event_in +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/event/if/system-server-resume.yml b/spec/rtems/event/if/system-server-resume.yml new file mode 100644 index 00000000..83217d87 --- /dev/null +++ b/spec/rtems/event/if/system-server-resume.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This is a reserved system event to resume a server thread, for example the + timer or interrupt server. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${event-29:/name} + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +name: RTEMS_EVENT_SYSTEM_SERVER_RESUME +notes: null +type: interface diff --git a/spec/rtems/event/if/system-server.yml b/spec/rtems/event/if/system-server.yml new file mode 100644 index 00000000..e628d449 --- /dev/null +++ b/spec/rtems/event/if/system-server.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This is a reserved system event for server thread usage, for example the + timer or interrupt server. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${event-30:/name} + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +name: RTEMS_EVENT_SYSTEM_SERVER +notes: null +type: interface diff --git a/spec/rtems/event/if/system-transient.yml b/spec/rtems/event/if/system-transient.yml new file mode 100644 index 00000000..a1b4b9e2 --- /dev/null +++ b/spec/rtems/event/if/system-transient.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This is a reserved system event for transient usage. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${event-31:/name} + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_EVENT_SYSTEM_TRANSIENT +notes: null +type: interface diff --git a/spec/rtems/event/if/transient-clear.yml b/spec/rtems/event/if/transient-clear.yml new file mode 100644 index 00000000..de9bf474 --- /dev/null +++ b/spec/rtems/event/if/transient-clear.yml @@ -0,0 +1,32 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Clears the transient event. +copyrights: +- Copyright (C) 2014, 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: + body: | + ${set:/name} event_out; + + (void) ${system-receive:/name}( + ${system-transient:/name}, + ${../../option/if/event-all:/name} | ${../../option/if/no-wait:/name}, + 0, + &event_out + ); + params: [] + return: void + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +name: rtems_event_transient_clear +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/event/if/transient-receive.yml b/spec/rtems/event/if/transient-receive.yml new file mode 100644 index 00000000..1c592d05 --- /dev/null +++ b/spec/rtems/event/if/transient-receive.yml @@ -0,0 +1,40 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Receives the transient event. +copyrights: +- Copyright (C) 2014, 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: + body: | + ${set:/name} event_out; + + return ${system-receive:/name}( + ${system-transient:/name}, + ${../../option/if/event-all:/name} | ${.:/params[0]/name}, + ${.:/params[1]/name}, + &event_out + ); + params: + - ${../../option/if/option:/name} ${.:/params[0]/name} + - ${../../type/if/interval:/name} ${.:/params[1]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +name: rtems_event_transient_receive +notes: null +params: +- description: is the option set. + dir: null + name: option_set +- description: is the optional timeout in clock ticks. + dir: null + name: ticks +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/event/if/transient-send.yml b/spec/rtems/event/if/transient-send.yml new file mode 100644 index 00000000..1bfb6198 --- /dev/null +++ b/spec/rtems/event/if/transient-send.yml @@ -0,0 +1,29 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Sends the transient event to the specified task. +copyrights: +- Copyright (C) 2014, 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: + body: | + return ${system-send:/name}( ${.:/params[0]/name}, ${system-transient:/name} ); + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +name: rtems_event_transient_send +notes: null +params: +- description: is the identifier of the task to receive the transient event. + dir: null + name: id +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/event/req/event-constant.yml b/spec/rtems/event/req/event-constant.yml new file mode 100644 index 00000000..d1e0b84e --- /dev/null +++ b/spec/rtems/event/req/event-constant.yml @@ -0,0 +1,391 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +links: [] +test-actions: +- action: | + /* No action */ + checks: + - check: | + T_step_eq_u32( ${step}, event, ( (rtems_event_set) 1 ) << number ); + description: | + Check that the event constant is equal to the event number bit in the + event set. + links: [] + - check: | + T_step_eq_u32( ${step}, event & RTEMS_PENDING_EVENTS, 0 ); + description: | + Check that the event number bit of the event constant is not set in + RTEMS_PENDING_EVENTS. + links: [] + description: | + Validate the event constant. + links: [] +- action: | + out = RTEMS_ALL_EVENTS; + sc = rtems_event_receive( + RTEMS_PENDING_EVENTS, + RTEMS_DEFAULT_OPTIONS, + 0, + &out + ); + checks: + - check: | + T_step_rsc_success( ${step}, sc ); + description: | + Check that the directive call was successful. + links: [] + - check: | + T_step_eq_u32( ${step}, out, 0 ); + description: | + Check that there were no pending events. + links: [] + description: | + Get all pending events of the Classic event set of the executing task. + links: [] +- action: | + out = RTEMS_ALL_EVENTS; + sc = rtems_event_system_receive( + RTEMS_PENDING_EVENTS, + RTEMS_DEFAULT_OPTIONS, + 0, + &out + ); + checks: + - check: | + T_step_rsc_success( ${step}, sc ); + description: | + Check that the directive call was successful. + links: [] + - check: | + T_step_eq_u32( ${step}, out, 0 ); + description: | + Check that there were no pending events. + links: [] + description: | + Get all pending events of the system event set of the executing task. + links: [] +- action: | + out = RTEMS_ALL_EVENTS; + sc = rtems_event_receive( + RTEMS_ALL_EVENTS, + RTEMS_NO_WAIT | RTEMS_EVENT_ANY, + 0, + &out + ); + checks: + - check: | + T_step_rsc( ${step}, sc, RTEMS_UNSATISFIED ); + description: | + Check that the directive call was unsatisfied. + links: [] + - check: | + T_step_eq_u32( ${step}, out, 0 ); + description: | + Check that there were no events received. + links: [] + description: | + Receive all pending events of the Classic event set of the executing task. + links: [] +- action: | + out = RTEMS_ALL_EVENTS; + sc = rtems_event_system_receive( + RTEMS_ALL_EVENTS, + RTEMS_NO_WAIT | RTEMS_EVENT_ANY, + 0, + &out + ); + checks: + - check: | + T_step_rsc( ${step}, sc, RTEMS_UNSATISFIED ); + description: | + Check that the directive call was unsatisfied. + links: [] + - check: | + T_step_eq_u32( ${step}, out, 0 ); + description: | + Check that there were no events received. + links: [] + description: | + Receive all pending events of the system event set of the executing task. + links: [] +- action: | + sc = rtems_event_send( RTEMS_SELF, event ); + checks: + - check: | + T_step_rsc_success( ${step}, sc ); + description: | + Check that the directive call was successful. + links: [] + description: | + Send the event to the Classic event set of the executing task. + links: [] +- action: | + out = RTEMS_ALL_EVENTS; + sc = rtems_event_receive( + RTEMS_PENDING_EVENTS, + RTEMS_DEFAULT_OPTIONS, + 0, + &out + ); + checks: + - check: | + T_step_rsc_success( ${step}, sc ); + description: | + Check that the directive call was successful. + links: [] + - check: | + T_step_eq_u32( ${step}, out, event ); + description: | + Check that the pending event is equal to the event sent by a previous + action. + links: [] + description: | + Get all pending events of the Classic event set of the executing task. + links: [] +- action: | + out = RTEMS_ALL_EVENTS; + sc = rtems_event_system_receive( + RTEMS_PENDING_EVENTS, + RTEMS_DEFAULT_OPTIONS, + 0, + &out + ); + checks: + - check: | + T_step_rsc_success( ${step}, sc ); + description: | + Check that the directive call was successful. + links: [] + - check: | + T_step_eq_u32( ${step}, out, 0 ); + description: | + Check that there were no pending events. + links: [] + description: | + Get all pending events of the system event set of the executing task. + links: [] +- action: | + out = 0; + sc = rtems_event_receive( + RTEMS_ALL_EVENTS, + RTEMS_NO_WAIT | RTEMS_EVENT_ANY, + 0, + &out + ); + checks: + - check: | + T_step_rsc_success( ${step}, sc ); + description: | + Check that the directive call was successful. + links: [] + - check: | + T_step_eq_u32( ${step}, out, event ); + description: | + Check that the received event is equal to the event sent by a previous + action. + links: [] + description: | + Receive any event of the Classic event set of the executing task. + links: [] +- action: | + out = RTEMS_ALL_EVENTS; + sc = rtems_event_system_receive( + RTEMS_ALL_EVENTS, + RTEMS_NO_WAIT | RTEMS_EVENT_ANY, + 0, + &out + ); + checks: + - check: | + T_step_rsc( ${step}, sc, RTEMS_UNSATISFIED ); + description: | + Check that the directive call was unsatisfied. + links: [] + - check: | + T_step_eq_u32( ${step}, out, 0 ); + description: | + Check that the no events were received. + links: [] + description: | + Receive any event of the system event set of the executing task. + links: [] +- action: | + sc = rtems_event_system_send( RTEMS_SELF, event ); + checks: + - check: | + T_step_rsc_success( ${step}, sc ); + description: | + Check that the directive call was successful. + links: [] + description: | + Send the event to the Classic event set of the executing task. + links: [] +- action: | + out = RTEMS_ALL_EVENTS; + sc = rtems_event_receive( + RTEMS_PENDING_EVENTS, + RTEMS_DEFAULT_OPTIONS, + 0, + &out + ); + checks: + - check: | + T_step_rsc_success( ${step}, sc ); + description: | + Check that the directive call was successful. + links: [] + - check: | + T_step_eq_u32( ${step}, out, 0 ); + description: | + Check that there were no pending events. + links: [] + description: | + Get all pending events of the Classic event set of the executing task. + links: [] +- action: | + out = RTEMS_ALL_EVENTS; + sc = rtems_event_system_receive( + RTEMS_PENDING_EVENTS, + RTEMS_DEFAULT_OPTIONS, + 0, + &out + ); + checks: + - check: | + T_step_rsc_success( ${step}, sc ); + description: | + Check that the directive call was successful. + links: [] + - check: | + T_step_eq_u32( ${step}, out, event ); + description: | + Check that the pending event is equal to the event sent by a previous + action. + links: [] + description: | + Get all pending events of the system event set of the executing task. + links: [] +- action: | + out = RTEMS_ALL_EVENTS; + sc = rtems_event_receive( + RTEMS_ALL_EVENTS, + RTEMS_NO_WAIT | RTEMS_EVENT_ANY, + 0, + &out + ); + checks: + - check: | + T_step_rsc( ${step}, sc, RTEMS_UNSATISFIED ); + description: | + Check that the directive call was unsatisfied. + links: [] + - check: | + T_step_eq_u32( ${step}, out, 0 ); + description: | + Check that the no events were received. + links: [] + description: | + Receive any event of the Classic event set of the executing task. + links: [] +- action: | + out = 0; + sc = rtems_event_system_receive( + RTEMS_ALL_EVENTS, + RTEMS_NO_WAIT | RTEMS_EVENT_ANY, + 0, + &out + ); + checks: + - check: | + T_step_rsc_success( ${step}, sc ); + description: | + Check that the directive call was successful. + links: [] + - check: | + T_step_eq_u32( ${step}, out, event ); + description: | + Check that the received event is equal to the event sent by a previous + action. + links: [] + description: | + Receive any event of the system event set of the executing task. + links: [] +- action: | + out = RTEMS_ALL_EVENTS; + sc = rtems_event_receive( + RTEMS_PENDING_EVENTS, + RTEMS_DEFAULT_OPTIONS, + 0, + &out + ); + checks: + - check: | + T_step_rsc_success( ${step}, sc ); + description: | + Check that the directive call was successful. + links: [] + - check: | + T_step_eq_u32( ${step}, out, 0 ); + description: | + Check that there were no pending events. + links: [] + description: | + Get all pending events of the Classic event set of the executing task. + links: [] +- action: | + out = RTEMS_ALL_EVENTS; + sc = rtems_event_system_receive( + RTEMS_PENDING_EVENTS, + RTEMS_DEFAULT_OPTIONS, + 0, + &out + ); + checks: + - check: | + T_step_rsc_success( ${step}, sc ); + description: | + Check that the directive call was successful. + links: [] + - check: | + T_step_eq_u32( ${step}, out, 0 ); + description: | + Check that there were no pending events. + links: [] + description: | + Get all pending events of the system event set of the executing task. + links: [] +test-brief: | + Tests an event constant and number of the Event Manager using the Classic and + system event sets of the executing task. +test-description: null +test-epilogue: null +test-fixture: null +test-header: + code: null + includes: + - rtems.h + local-includes: [] + run-params: + - description: | + is the event constant. + dir: null + name: event + specifier: rtems_event_set ${.:name} + - description: | + is the event number. + dir: null + name: number + specifier: int ${.:name} + target: testsuites/validation/tr-event-constant.h +test-includes: +- rtems.h +test-local-includes: +- tr-event-constant.h +test-prologue: | + rtems_status_code sc; + rtems_event_set out; +test-support: null +test-target: testsuites/validation/tr-event-constant.c +type: test-case diff --git a/spec/rtems/event/req/events.yml b/spec/rtems/event/req/events.yml new file mode 100644 index 00000000..ede39e36 --- /dev/null +++ b/spec/rtems/event/req/events.yml @@ -0,0 +1,96 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +links: [] +test-actions: +- action: | + for ( i = 0; i < 32; ++i ) { + ${event-constant:/test-run}( events[ i ], i ); + T_step( (unsigned int) i ); /* ${steps/32} */ + } + checks: [] + description: | + Run the event constant and number test for all 32 event constants. + links: [] +- action: | + all = 0; + + for ( i = 0; i < 32; ++i ) { + all |= events[ i ]; + } + checks: + - check: | + T_step_eq_u32( ${step}, all, RTEMS_ALL_EVENTS ); + description: | + Check that the value is equal to RTEMS_ALL_EVENTS. + links: [] + description: | + Calculate the value of a bitwise or of all 32 event constants. + links: [] +- action: | + /* No action */ + checks: + - check: | + T_step_eq_u32( ${step}, RTEMS_EVENT_ALL, 0 ); + description: | + Check that RTEMS_EVENT_ALL is equal to zero. + links: [] + - check: | + T_step_ne_u32( ${step}, RTEMS_EVENT_ANY, 0 ); + T_step_eq_u32( ${step}, RTEMS_EVENT_ANY & ( RTEMS_EVENT_ANY - 1), 0 ); + description: | + Check that RTEMS_EVENT_ANY is a power of two. + links: [] + description: | + Validate the Event Manager directive options. + links: [] +test-brief: Tests the Event Manager API. +test-description: null +test-epilogue: null +test-fixture: null +test-header: null +test-includes: +- rtems.h +test-local-includes: +- tr-event-constant.h +test-prologue: | + rtems_event_set all; + int i; +test-support: | + static const rtems_event_set events[] = { + RTEMS_EVENT_0, + RTEMS_EVENT_1, + RTEMS_EVENT_2, + RTEMS_EVENT_3, + RTEMS_EVENT_4, + RTEMS_EVENT_5, + RTEMS_EVENT_6, + RTEMS_EVENT_7, + RTEMS_EVENT_8, + RTEMS_EVENT_9, + RTEMS_EVENT_10, + RTEMS_EVENT_11, + RTEMS_EVENT_12, + RTEMS_EVENT_13, + RTEMS_EVENT_14, + RTEMS_EVENT_15, + RTEMS_EVENT_16, + RTEMS_EVENT_17, + RTEMS_EVENT_18, + RTEMS_EVENT_19, + RTEMS_EVENT_20, + RTEMS_EVENT_21, + RTEMS_EVENT_22, + RTEMS_EVENT_23, + RTEMS_EVENT_24, + RTEMS_EVENT_25, + RTEMS_EVENT_26, + RTEMS_EVENT_27, + RTEMS_EVENT_28, + RTEMS_EVENT_29, + RTEMS_EVENT_30, + RTEMS_EVENT_31, + }; +test-target: testsuites/validation/tc-events.c +type: test-case diff --git a/spec/rtems/event/req/receive.yml b/spec/rtems/event/req/receive.yml new file mode 100644 index 00000000..b2bdab64 --- /dev/null +++ b/spec/rtems/event/req/receive.yml @@ -0,0 +1,15 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +functional-type: function +links: +- role: interface-function + uid: ../if/receive +rationale: null +references: [] +requirement-type: functional +text: | + The ${../if/receive:/name} directive shall receive events from the + application event set of a task as specified by ${send-receive}. +type: requirement diff --git a/spec/rtems/event/req/send-receive.yml b/spec/rtems/event/req/send-receive.yml new file mode 100644 index 00000000..5723e57e --- /dev/null +++ b/spec/rtems/event/req/send-receive.yml @@ -0,0 +1,1001 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +functional-type: action +links: [] +post-conditions: +- name: SendStatus + states: + - name: Ok + test-code: | + T_rsc_success( ctx->send_status ); + text: | + The send event status shall be RTEMS_SUCCESSFUL. + - name: InvId + test-code: | + T_rsc( ctx->send_status, RTEMS_INVALID_ID ); + text: | + The send event status shall be RTEMS_INVALID_ID. + test-epilogue: null + test-prologue: null +- name: ReceiveStatus + states: + - name: None + test-code: | + T_eq_int( ctx->receive_condition_state, RECEIVE_COND_UNKNOWN ); + T_eq_u32( GetPendingEvents( ctx ), 0 ); + text: | + There shall be no pending events. + - name: Pending + test-code: | + T_eq_int( ctx->receive_condition_state, RECEIVE_COND_UNKNOWN ); + T_eq_u32( GetPendingEvents( ctx ), ctx->events_to_send ); + text: | + All events sent shall be pending. + - name: Timeout + test-code: | + T_rsc( ctx->receive_status, RTEMS_TIMEOUT ); + T_eq_int( ctx->receive_condition_state, RECEIVE_COND_UNKNOWN ); + T_eq_u32( GetPendingEvents( ctx ), ctx->events_to_send ); + text: | + The receive event status shall be RTEMS_TIMEOUT. All events sent after + the timeout shall be pending. + - name: Satisfied + test-code: | + T_rsc( ctx->receive_status, RTEMS_SUCCESSFUL ); + + if ( ctx->receive_type != RECEIVE_NORMAL ) { + T_eq_int( ctx->receive_condition_state, RECEIVE_COND_SATSIFIED ); + } + + T_eq_u32( ctx->received_events, ctx->events_to_send & INPUT_EVENTS ); + T_eq_u32( GetPendingEvents( ctx ), ctx->events_to_send & ~INPUT_EVENTS ); + text: | + The receive event status shall be RTEMS_SUCCESSFUL. The received events + shall be equal to the input events sent. The pending events shall be + equal to the events sent which are not included in the input events. + - name: Unsatisfied + test-code: | + T_rsc( ctx->receive_status, RTEMS_UNSATISFIED ); + T_eq_int( ctx->receive_condition_state, RECEIVE_COND_UNKNOWN ); + T_eq_u32( GetPendingEvents( ctx ), ctx->events_to_send ); + text: | + The receive event status shall be RTEMS_UNSATISFIED. All sent events + shall be pending. + - name: Blocked + test-code: | + T_eq_int( ctx->receive_condition_state, RECEIVE_COND_UNSATISFIED ); + T_eq_u32( ctx->unsatisfied_pending, ctx->events_to_send ); + text: | + The receiver task shall remain blocked waiting for events after the + directive call. All sent events shall be pending. + test-epilogue: null + test-prologue: null +- name: SenderPreemption + states: + - name: 'No' + test-code: | + /* + * There may be a thread switch to the runner thread if the sender thread + * was on another scheduler instance. + */ + + T_le_sz( log->recorded, 1 ); + + for ( i = 0; i < log->recorded; ++i ) { + T_ne_u32( log->events[ i ].executing, ctx->worker_id ); + T_eq_u32( log->events[ i ].heir, ctx->runner_id ); + } + text: | + There shall be no sender preemption. + - name: 'Yes' + test-code: | + T_eq_sz( log->recorded, 2 ); + T_eq_u32( log->events[ 0 ].heir, ctx->runner_id ); + T_eq_u32( log->events[ 1 ].heir, ctx->worker_id ); + text: | + There shall be a sender preemption. + test-epilogue: null + test-prologue: | + T_thread_switch_log *log; + size_t i; + + log = &ctx->thread_switch_log.log; +pre-conditions: +- name: Id + states: + - name: InvId + test-code: | + ctx->receiver_id = 0xffffffff; + ctx->sender_type = SENDER_SELF; + text: | + The id parameter of the send directive shall be an invalid task object + identifier. + - name: Task + test-code: | + ctx->receiver_id = ctx->runner_id; + text: | + The id parameter of the send directive shall be a valid task object + identifier. + test-epilogue: null + test-prologue: null +- name: Send + states: + - name: Zero + test-code: | + ctx->events_to_send = 0; + text: | + The event set sent shall be the empty. + - name: Unrelated + test-code: | + ctx->events_to_send = RTEMS_EVENT_7; + text: | + The event set sent shall be unrelated to the event receive condition. + - name: Any + test-code: | + ctx->events_to_send = RTEMS_EVENT_5; + text: | + The event set sent shall be contain at least one but not all events of + the event receive condition. + - name: All + test-code: | + ctx->events_to_send = RTEMS_EVENT_5 | RTEMS_EVENT_23; + text: | + The event set sent shall be contain all events of the event receive condition. + - name: MixedAny + test-code: | + ctx->events_to_send = RTEMS_EVENT_5 | RTEMS_EVENT_7; + text: | + The event set sent shall be contain at least one but not all events of + the event receive condition and at least one unrelated event. + - name: MixedAll + test-code: | + ctx->events_to_send = RTEMS_EVENT_5 | RTEMS_EVENT_7 | RTEMS_EVENT_23; + text: | + The event set sent shall be contain all events of the event receive + condition and at least one unrelated event. + test-epilogue: null + test-prologue: null +- name: ReceiverState + states: + - name: NotWaiting + test-code: | + ctx->sender_type = SENDER_SELF; + ctx->receive_type = RECEIVE_SKIP; + text: | + The receiver task shall not be waiting for events. + - name: Poll + test-code: | + ctx->sender_type = SENDER_SELF; + ctx->receive_type = RECEIVE_NORMAL; + ctx->receive_option_set |= RTEMS_NO_WAIT; + text: | + The receiver task shall poll for events. + - name: Timeout + test-code: | + ctx->sender_type = SENDER_SELF_2; + ctx->receive_type = RECEIVE_NORMAL; + ctx->receive_timeout = 1; + text: | + The receiver task shall have waited for events with a timeout which + occurred. + - name: Lower + test-code: | + ctx->sender_type = SENDER_WORKER; + ctx->sender_prio = PRIO_HIGH; + ctx->receive_type = RECEIVE_NORMAL; + text: | + The receiver task shall be blocked waiting for events and the receiver + task shall have a lower priority than the sender task. + - name: Equal + test-code: | + ctx->sender_type = SENDER_WORKER; + ctx->sender_prio = PRIO_NORMAL; + ctx->receive_type = RECEIVE_NORMAL; + text: | + The receiver task shall be blocked waiting for events and the receiver + task shall have a priority equal to the sender task. + - name: Higher + test-code: | + ctx->sender_type = SENDER_WORKER; + ctx->sender_prio = PRIO_LOW; + ctx->receive_type = RECEIVE_NORMAL; + text: | + The receiver task shall be blocked waiting for events and the receiver + task shall have a higher priority than the sender task. + - name: Other + test-code: | + ctx->sender_type = SENDER_WORKER; + ctx->sender_prio = PRIO_OTHER; + ctx->receive_type = RECEIVE_NORMAL; + text: | + The receiver task shall be blocked waiting for events and the receiver + task shall be on another scheduler instance than the sender task. + - name: Intend + test-code: | + ctx->sender_type = SENDER_INTERRUPT; + ctx->receive_type = RECEIVE_INTERRUPT; + text: | + The receiver task shall intend to block for waiting for events. + test-epilogue: null + test-prologue: null +- name: Satisfy + states: + - name: All + test-code: | + ctx->receive_option_set |= RTEMS_EVENT_ALL; + text: | + The receiver task shall be interested in all input events. + - name: Any + test-code: | + ctx->receive_option_set |= RTEMS_EVENT_ANY; + text: | + The receiver task shall be interested in any input event. + test-epilogue: null + test-prologue: null +rationale: null +references: [] +requirement-type: functional +skip-reasons: + NoOtherScheduler: | + In non-SMP configurations, there exists exactly one scheduler instance. +test-action: | + if ( ctx->sender_type == SENDER_SELF ) { + SendAction( ctx ); + } else if ( ctx->sender_type == SENDER_WORKER ) { + Wakeup( ctx->worker_wakeup ); + } + + if ( ctx->receive_type == RECEIVE_NORMAL ) { + ctx->receive_status = ( *ctx->receive )( + INPUT_EVENTS, + ctx->receive_option_set, + ctx->receive_timeout, + &ctx->received_events + ); + } else if ( ctx->receive_type == RECEIVE_INTERRUPT ) { + T_interrupt_test_state state; + + state = T_interrupt_test( &InterruptConfig, ctx ); + T_eq_int( state, T_INTERRUPT_TEST_DONE ); + } + + if ( ctx->sender_type == SENDER_SELF_2 ) { + SendAction( ctx ); + } else if ( ctx->sender_type == SENDER_WORKER ) { + rtems_status_code sc; + rtems_task_priority prio; + + Wait( ctx->runner_wakeup ); + + prio = 0; + sc = rtems_task_set_priority( ctx->worker_id, PRIO_LOW, &prio ); + T_rsc_success( sc ); + T_eq_u32( prio, PRIO_HIGH ); + } +test-brief: null +test-cleanup: | + rtems_status_code sc; + rtems_event_set events; + + events = 0; + sc = ( *ctx->receive )( + RTEMS_ALL_EVENTS, + RTEMS_NO_WAIT | RTEMS_EVENT_ANY, + 0, + &events + ); + if ( sc == RTEMS_SUCCESSFUL ) { + T_quiet_ne_u32( events, 0 ); + } else { + T_quiet_rsc( sc, RTEMS_UNSATISFIED ); + T_quiet_eq_u32( events, 0 ); + } +test-context: +- brief: | + This member defines the sender type to perform the event send action. + description: null + member: SenderTypes sender_type +- brief: | + This member defines the sender task priority. + description: null + member: Priorities sender_prio +- brief: | + This member defines the receiver ID used for the event send action. + description: null + member: rtems_id receiver_id +- brief: | + This member defines the events to send for the event send action. + description: null + member: rtems_event_set events_to_send +- brief: | + This member contains the status of the event send action. + description: null + member: rtems_status_code send_status +- brief: | + This member contains the scheduler ID of the runner task. + description: null + member: ReceiveTypes receive_type +- brief: | + This member defines the option set used for the event receive action. + description: null + member: rtems_option receive_option_set +- brief: | + This member defines the timeout used for the event receive action. + description: null + member: rtems_interval receive_timeout +- brief: | + This member contains the events received by the event receive action. + description: null + member: rtems_event_set received_events +- brief: | + This member contains the status of the event receive action. + description: null + member: rtems_status_code receive_status +- brief: | + This member contains the event conditon state of the receiver task after + the event send action. + description: null + member: ReceiveConditionStates receive_condition_state +- brief: | + This member contains the pending events after an event send action which + did not satsify the event condition of the receiver. + description: null + member: rtems_event_set unsatisfied_pending +- brief: | + This member contains the TCB of the runner task. + description: null + member: Thread_Control *runner_thread +- brief: | + This member contains the ID of the runner task. + description: null + member: rtems_id runner_id +- brief: | + This member contains the task ID of the worker task. + description: null + member: rtems_id worker_id +- brief: | + This member contains the ID of the semaphore used to wake up the worker + task. + description: null + member: rtems_id worker_wakeup +- brief: | + This member contains the ID of the semaphore used to wake up the runner + task. + description: null + member: rtems_id runner_wakeup +- brief: | + This member contains the scheduler ID of scheduler used by the runner task. + description: null + member: rtems_id runner_sched +- brief: | + This member contains the scheduler ID of another scheduler which is not + used by the runner task. + description: null + member: rtems_id other_sched +- brief: | + This member contains the thread switch log. + description: null + member: T_thread_switch_log_4 thread_switch_log +test-context-support: | + typedef enum { + PRIO_HIGH = 1, + PRIO_NORMAL, + PRIO_LOW, + PRIO_OTHER + } Priorities; + + typedef enum { + SENDER_NONE, + SENDER_SELF, + SENDER_SELF_2, + SENDER_WORKER, + SENDER_INTERRUPT + } SenderTypes; + + typedef enum { + RECEIVE_SKIP, + RECEIVE_NORMAL, + RECEIVE_INTERRUPT + } ReceiveTypes; + + typedef enum { + RECEIVE_COND_UNKNOWN, + RECEIVE_COND_SATSIFIED, + RECEIVE_COND_UNSATISFIED + } ReceiveConditionStates; +test-description: null +test-header: + code: null + includes: + - rtems.h + - rtems/score/thread.h + local-includes: [] + run-params: + - description: | + is the event send handler. + dir: null + name: send + specifier: rtems_status_code ( *${.:name} )( rtems_id, rtems_event_set ) + - description: | + is the event receive handler. + dir: null + name: receive + specifier: | + rtems_status_code ( *${.:name} )( rtems_event_set, rtems_option, rtems_interval, rtems_event_set * ) + - description: | + is the get pending events handler. + dir: null + name: get_pending_events + specifier: rtems_event_set ( *${.:name} )( Thread_Control * ) + - description: | + is the thread wait class. + dir: null + name: wait_class + specifier: unsigned int ${.:name} + - description: | + is the thread waiting for event state. + dir: null + name: waiting_for_event + specifier: int ${.:name} + target: testsuites/validation/tr-event-send-receive.h +test-includes: +- rtems/score/threadimpl.h +test-local-includes: +- tr-event-send-receive.h +test-prepare: | + ctx->events_to_send = 0; + ctx->send_status = RTEMS_INCORRECT_STATE; + ctx->received_events = 0xffffffff; + ctx->receive_option_set = 0; + ctx->receive_timeout = RTEMS_NO_TIMEOUT; + ctx->sender_type = SENDER_NONE; + ctx->sender_prio = PRIO_NORMAL; + ctx->receive_type = RECEIVE_SKIP; + ctx->receive_condition_state = RECEIVE_COND_UNKNOWN; + ctx->unsatisfied_pending = 0xffffffff; + memset( &ctx->thread_switch_log, 0, sizeof( ctx->thread_switch_log ) ); + T_eq_u32( GetPendingEvents( ctx ), 0 ); + _Thread_Wait_flags_set( ctx->runner_thread, THREAD_WAIT_FLAGS_INITIAL ); +test-setup: + brief: null + code: | + static char task_storage[ RTEMS_MINIMUM_STACK_SIZE ]; + static const rtems_task_config task_config = { + .name = rtems_build_name( 'W', 'O', 'R', 'K' ), + .initial_priority = PRIO_LOW, + .storage_area = task_storage, + .storage_size = sizeof( task_storage ), + .initial_modes = RTEMS_DEFAULT_MODES, + .attributes = RTEMS_DEFAULT_ATTRIBUTES + }; + + rtems_status_code sc; + rtems_task_priority prio; + + memset( ctx, 0, sizeof( *ctx ) ); + ctx->runner_thread = _Thread_Get_executing(); + ctx->runner_id = ctx->runner_thread->Object.id; + ctx->worker_wakeup = CreateWakeupSema(); + ctx->runner_wakeup = CreateWakeupSema(); + + sc = rtems_task_get_scheduler( RTEMS_SELF, &ctx->runner_sched ); + T_rsc_success( sc ); + + #if defined(RTEMS_SMP) + sc = rtems_scheduler_ident_by_processor( 1, &ctx->other_sched ); + T_rsc_success( sc ); + T_ne_u32( ctx->runner_sched, ctx->other_sched ); + #endif + + prio = 0; + sc = rtems_task_set_priority( RTEMS_SELF, PRIO_NORMAL, &prio ); + T_rsc_success( sc ); + T_eq_u32( prio, PRIO_HIGH ); + + sc = rtems_task_build( &task_config, &ctx->worker_id ); + T_assert_rsc_success( sc ); + + sc = rtems_task_start( ctx->worker_id, Worker, (rtems_task_argument) ctx ); + T_assert_rsc_success( sc ); + description: null +test-stop: null +test-support: | + #define INPUT_EVENTS ( RTEMS_EVENT_5 | RTEMS_EVENT_23 ) + + typedef ReqRtemsEventSendReceive_Context Context; + + static rtems_id CreateWakeupSema( void ) + { + rtems_status_code sc; + rtems_id id; + + sc = rtems_semaphore_create( + rtems_build_name( 'W', 'K', 'U', 'P' ), + 0, + RTEMS_SIMPLE_BINARY_SEMAPHORE, + 0, + &id + ); + T_assert_rsc_success( sc ); + + return id; + } + + static void DeleteWakeupSema( rtems_id id ) + { + if ( id != 0 ) { + rtems_status_code sc; + + sc = rtems_semaphore_delete( id ); + T_rsc_success( sc ); + } + } + + static void Wait( rtems_id id ) + { + rtems_status_code sc; + + sc = rtems_semaphore_obtain( id, RTEMS_WAIT, RTEMS_NO_TIMEOUT ); + T_quiet_rsc_success( sc ); + } + + static void Wakeup( rtems_id id ) + { + rtems_status_code sc; + + sc = rtems_semaphore_release( id ); + T_quiet_rsc_success( sc ); + } + + static bool BlockedForEvent( Context *ctx, Thread_Wait_flags flags ) + { + return flags == ( ctx->wait_class | THREAD_WAIT_STATE_BLOCKED ); + } + + static bool IntendsToBlockForEvent( Context *ctx, Thread_Wait_flags flags ) + { + return flags == ( ctx->wait_class | THREAD_WAIT_STATE_INTEND_TO_BLOCK ); + } + + static bool EventReadyAgain( Context *ctx, Thread_Wait_flags flags ) + { + return flags == ( ctx->wait_class | THREAD_WAIT_STATE_READY_AGAIN ); + } + + static bool IsSatisfiedFlags( Context *ctx ) + { + return EventReadyAgain( + ctx, + _Thread_Wait_flags_get( ctx->runner_thread ) + ); + } + + static bool IsSatisfiedState( Context *ctx ) + { + return ctx->runner_thread->current_state != ctx->waiting_for_event; + } + + static void SendAction( Context *ctx ) + { + T_thread_switch_log *log; + + log = T_thread_switch_record_4( &ctx->thread_switch_log ); + T_quiet_null( log ); + ctx->send_status = ( *ctx->send )( ctx->receiver_id, ctx->events_to_send ); + log = T_thread_switch_record( NULL ); + T_quiet_eq_ptr( log, &ctx->thread_switch_log.log ); + } + + static void Send( + Context *ctx, + bool ( *is_satsified )( Context * ) + ) + { + SendAction( ctx ); + + if ( ( *is_satsified )( ctx ) ) { + ctx->receive_condition_state = RECEIVE_COND_SATSIFIED; + } else { + rtems_status_code sc; + rtems_event_set pending; + rtems_event_set missing; + + ctx->receive_condition_state = RECEIVE_COND_UNSATISFIED; + pending = ( *ctx->get_pending_events )( ctx->runner_thread ); + ctx->unsatisfied_pending = pending; + + missing = INPUT_EVENTS & ~ctx->events_to_send; + T_ne_u32( missing, 0 ); + sc = ( *ctx->send )( ctx->runner_id, missing ); + T_rsc_success( sc ); + + pending = ( *ctx->get_pending_events )( ctx->runner_thread ); + T_eq_u32( pending, ctx->events_to_send & ~INPUT_EVENTS ); + } + } + + static void Worker( rtems_task_argument arg ) + { + Context *ctx; + + ctx = (Context *) arg; + + while ( true ) { + rtems_status_code sc; + rtems_task_priority prio; + + Wait( ctx->worker_wakeup ); + + switch ( ctx->sender_prio ) { + case PRIO_NORMAL: + case PRIO_HIGH: + prio = 0; + sc = rtems_task_set_priority( RTEMS_SELF, ctx->sender_prio, &prio ); + T_rsc_success( sc ); + T_eq_u32( prio, PRIO_LOW ); + break; + case PRIO_OTHER: + sc = rtems_task_set_scheduler( + RTEMS_SELF, + ctx->other_sched, + PRIO_LOW + ); + T_rsc_success( sc ); + break; + case PRIO_LOW: + break; + } + + Send( ctx, IsSatisfiedState ); + + sc = rtems_task_set_scheduler( + RTEMS_SELF, + ctx->runner_sched, + PRIO_HIGH + ); + T_rsc_success( sc ); + + Wakeup( ctx->runner_wakeup ); + } + } + + static rtems_event_set GetPendingEvents( Context *ctx ) + { + rtems_event_set pending; + rtems_status_code sc; + + sc = ( *ctx->receive )( + RTEMS_PENDING_EVENTS, + RTEMS_DEFAULT_OPTIONS, + 0, + &pending + ); + T_quiet_rsc_success( sc ); + + return pending; + } + + static void ReqRtemsEventSendReceive_Cleanup( Context *ctx ); + + static void InterruptPrepare( void *arg ) + { + ReqRtemsEventSendReceive_Cleanup( arg ); + } + + static void InterruptAction( void *arg ) + { + Context *ctx; + + ctx = arg; + ctx->receive_status = ( *ctx->receive )( + INPUT_EVENTS, + ctx->receive_option_set, + ctx->receive_timeout, + &ctx->received_events + ); + T_quiet_rsc_success( ctx->receive_status ); + } + + static void InterruptContinue( Context *ctx ) + { + rtems_status_code sc; + + sc = ( *ctx->send )( ctx->receiver_id, INPUT_EVENTS ); + T_quiet_rsc_success( sc ); + } + + static T_interrupt_test_state Interrupt( void *arg ) + { + Context *ctx; + Thread_Wait_flags flags; + T_interrupt_test_state next_state; + T_interrupt_test_state previous_state; + + ctx = arg; + flags = _Thread_Wait_flags_get( ctx->runner_thread ); + + if ( IntendsToBlockForEvent( ctx, flags ) ) { + next_state = T_INTERRUPT_TEST_DONE; + } else if ( BlockedForEvent( ctx, flags ) ) { + next_state = T_INTERRUPT_TEST_LATE; + } else { + next_state = T_INTERRUPT_TEST_EARLY; + } + + previous_state = T_interrupt_test_change_state( + T_INTERRUPT_TEST_ACTION, + next_state + ); + + if ( previous_state == T_INTERRUPT_TEST_ACTION ) { + if ( next_state == T_INTERRUPT_TEST_DONE ) { + Send( ctx, IsSatisfiedFlags ); + } else { + InterruptContinue( ctx ); + } + } + + return next_state; + } + + static const T_interrupt_test_config InterruptConfig = { + .prepare = InterruptPrepare, + .action = InterruptAction, + .interrupt = Interrupt, + .max_iteration_count = 10000 + }; +test-target: testsuites/validation/tr-event-send-receive.c +test-teardown: + brief: null + code: | + rtems_status_code sc; + rtems_task_priority prio; + + prio = 0; + sc = rtems_task_set_priority( RTEMS_SELF, PRIO_HIGH, &prio ); + T_rsc_success( sc ); + T_eq_u32( prio, PRIO_NORMAL ); + + if ( ctx->worker_id != 0 ) { + sc = rtems_task_delete( ctx->worker_id ); + T_rsc_success( sc ); + } + + DeleteWakeupSema( ctx->worker_wakeup ); + DeleteWakeupSema( ctx->runner_wakeup ); + description: null +text: ${.:text-template} +transition-map: +- enabled-by: true + post-conditions: + ReceiveStatus: None + SendStatus: InvId + SenderPreemption: 'No' + pre-conditions: + Id: + - InvId + ReceiverState: N/A + Satisfy: N/A + Send: N/A +- enabled-by: true + post-conditions: + ReceiveStatus: Pending + SendStatus: Ok + SenderPreemption: 'No' + pre-conditions: + Id: + - Task + ReceiverState: + - NotWaiting + Satisfy: N/A + Send: all +- enabled-by: true + post-conditions: + ReceiveStatus: Timeout + SendStatus: Ok + SenderPreemption: 'No' + pre-conditions: + Id: + - Task + ReceiverState: + - Timeout + Satisfy: all + Send: all +- enabled-by: true + post-conditions: + ReceiveStatus: Unsatisfied + SendStatus: Ok + SenderPreemption: 'No' + pre-conditions: + Id: + - Task + ReceiverState: + - Poll + Satisfy: all + Send: + - Zero + - Unrelated +- enabled-by: true + post-conditions: + ReceiveStatus: Blocked + SendStatus: Ok + SenderPreemption: 'No' + pre-conditions: + Id: + - Task + ReceiverState: + - Lower + - Equal + - Higher + - Intend + Satisfy: all + Send: + - Unrelated + - Zero +- enabled-by: true + post-conditions: + ReceiveStatus: Satisfied + SendStatus: Ok + SenderPreemption: 'Yes' + pre-conditions: + Id: + - Task + ReceiverState: + - Higher + Satisfy: all + Send: + - All + - MixedAll +- enabled-by: true + post-conditions: + ReceiveStatus: Satisfied + SendStatus: Ok + SenderPreemption: 'No' + pre-conditions: + Id: + - Task + ReceiverState: + - Poll + - Lower + - Equal + - Intend + Satisfy: all + Send: + - All + - MixedAll +- enabled-by: true + post-conditions: + ReceiveStatus: Satisfied + SendStatus: Ok + SenderPreemption: 'Yes' + pre-conditions: + Id: + - Task + ReceiverState: + - Higher + Satisfy: + - Any + Send: + - Any + - MixedAny +- enabled-by: true + post-conditions: + ReceiveStatus: Satisfied + SendStatus: Ok + SenderPreemption: 'No' + pre-conditions: + Id: + - Task + ReceiverState: + - Poll + - Lower + - Equal + - Intend + Satisfy: + - Any + Send: + - Any + - MixedAny +- enabled-by: true + post-conditions: + ReceiveStatus: Unsatisfied + SendStatus: Ok + SenderPreemption: 'No' + pre-conditions: + Id: + - Task + ReceiverState: + - Poll + Satisfy: + - All + Send: + - Any + - MixedAny +- enabled-by: true + post-conditions: + ReceiveStatus: Blocked + SendStatus: Ok + SenderPreemption: 'No' + pre-conditions: + Id: + - Task + ReceiverState: + - Lower + - Equal + - Higher + - Intend + Satisfy: + - All + Send: + - Any + - MixedAny +- enabled-by: true + post-conditions: NoOtherScheduler + pre-conditions: + Id: + - Task + ReceiverState: + - Other + Satisfy: all + Send: all +- enabled-by: RTEMS_SMP + post-conditions: + ReceiveStatus: Blocked + SendStatus: Ok + SenderPreemption: 'No' + pre-conditions: + Id: + - Task + ReceiverState: + - Other + Satisfy: all + Send: + - Unrelated + - Zero +- enabled-by: RTEMS_SMP + post-conditions: + ReceiveStatus: Satisfied + SendStatus: Ok + SenderPreemption: 'No' + pre-conditions: + Id: + - Task + ReceiverState: + - Other + Satisfy: all + Send: + - All + - MixedAll +- enabled-by: RTEMS_SMP + post-conditions: + ReceiveStatus: Satisfied + SendStatus: Ok + SenderPreemption: 'No' + pre-conditions: + Id: + - Task + ReceiverState: + - Other + Satisfy: + - Any + Send: + - Any + - MixedAny +- enabled-by: RTEMS_SMP + post-conditions: + ReceiveStatus: Blocked + SendStatus: Ok + SenderPreemption: 'No' + pre-conditions: + Id: + - Task + ReceiverState: + - Other + Satisfy: + - All + Send: + - Any + - MixedAny +type: requirement diff --git a/spec/rtems/event/req/send.yml b/spec/rtems/event/req/send.yml new file mode 100644 index 00000000..328e1293 --- /dev/null +++ b/spec/rtems/event/req/send.yml @@ -0,0 +1,15 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +functional-type: function +links: +- role: interface-function + uid: ../if/send +rationale: null +references: [] +requirement-type: functional +text: | + The ${../if/send:/name} directive shall send events to the application event + set of a task as specified by ${send-receive}. +type: requirement diff --git a/spec/rtems/event/req/system-receive.yml b/spec/rtems/event/req/system-receive.yml new file mode 100644 index 00000000..5343d749 --- /dev/null +++ b/spec/rtems/event/req/system-receive.yml @@ -0,0 +1,15 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +functional-type: function +links: +- role: interface-function + uid: ../if/system-receive +rationale: null +references: [] +requirement-type: functional +text: | + The ${../if/system-receive:/name} directive shall receive events from the + system event set of a task as specified by ${send-receive}. +type: requirement diff --git a/spec/rtems/event/req/system-send.yml b/spec/rtems/event/req/system-send.yml new file mode 100644 index 00000000..22336d86 --- /dev/null +++ b/spec/rtems/event/req/system-send.yml @@ -0,0 +1,15 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +functional-type: function +links: +- role: interface-function + uid: ../if/system-send +rationale: null +references: [] +requirement-type: functional +text: | + The ${../if/system-send:/name} directive shall send events to the system + event set of a task as specified by ${send-receive}. +type: requirement diff --git a/spec/rtems/event/val/send-receive.yml b/spec/rtems/event/val/send-receive.yml new file mode 100644 index 00000000..f3d67209 --- /dev/null +++ b/spec/rtems/event/val/send-receive.yml @@ -0,0 +1,65 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +links: +- role: validation + uid: ../req/receive +- role: validation + uid: ../req/send +test-actions: +- action: | + ${../req/send-receive:/test-run}( + EventSend, + EventReceive, + GetPendingEvents, + THREAD_WAIT_CLASS_EVENT, + STATES_WAITING_FOR_EVENT + ); + checks: [] + description: | + Run the event send and receive tests for the application event set defined + by ${../req/send-receive}. + links: [] +test-brief: | + Tests the ${../if/send:/name} and ${../if/receive:/name} directives. +test-description: null +test-epilogue: null +test-fixture: null +test-header: null +test-includes: +- rtems/rtems/eventimpl.h +- rtems/rtems/tasksdata.h +- rtems/score/statesimpl.h +- rtems/score/threadimpl.h +test-local-includes: +- tr-event-send-receive.h +test-prologue: null +test-support: | + static rtems_status_code EventSend( + rtems_id id, + rtems_event_set event_in + ) + { + return rtems_event_send( id, event_in ); + } + + static rtems_status_code EventReceive( + rtems_id event_in, + rtems_option option_set, + rtems_interval ticks, + rtems_event_set *event_out + ) + { + return rtems_event_receive( event_in, option_set, ticks, event_out ); + } + + static rtems_event_set GetPendingEvents( Thread_Control *thread ) + { + RTEMS_API_Control *api; + + api = thread->API_Extensions[ THREAD_API_RTEMS ]; + return api->Event.pending_events; + } +test-target: testsuites/validation/tc-event-send-receive.c +type: test-case diff --git a/spec/rtems/event/val/system-send-receive.yml b/spec/rtems/event/val/system-send-receive.yml new file mode 100644 index 00000000..18bdeb03 --- /dev/null +++ b/spec/rtems/event/val/system-send-receive.yml @@ -0,0 +1,71 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +links: +- role: validation + uid: ../req/system-receive +- role: validation + uid: ../req/system-send +test-actions: +- action: | + ${../req/send-receive:/test-run}( + EventSystemSend, + EventSystemReceive, + GetPendingSystemEvents, + THREAD_WAIT_CLASS_SYSTEM_EVENT, + STATES_WAITING_FOR_SYSTEM_EVENT + ); + checks: [] + description: | + Run the event send and receive tests for the system event set defined + by ${../req/send-receive}. + links: [] +test-brief: | + Tests the ${../if/system-send:/name} and ${../if/system-receive:/name} + directives. +test-description: null +test-epilogue: null +test-fixture: null +test-header: null +test-includes: +- rtems/rtems/eventimpl.h +- rtems/rtems/tasksdata.h +- rtems/score/statesimpl.h +- rtems/score/threadimpl.h +test-local-includes: +- tr-event-send-receive.h +test-prologue: null +test-support: | + static rtems_status_code EventSystemSend( + rtems_id id, + rtems_event_set event_in + ) + { + return rtems_event_system_send( id, event_in ); + } + + static rtems_status_code EventSystemReceive( + rtems_id event_in, + rtems_option option_set, + rtems_interval ticks, + rtems_event_set *event_out + ) + { + return rtems_event_system_receive( + event_in, + option_set, + ticks, + event_out + ); + } + + static rtems_event_set GetPendingSystemEvents( Thread_Control *thread ) + { + RTEMS_API_Control *api; + + api = thread->API_Extensions[ THREAD_API_RTEMS ]; + return api->System_event.pending_events; + } +test-target: testsuites/validation/tc-event-send-receive.c +type: test-case diff --git a/spec/rtems/fatal/if/assert-context.yml b/spec/rtems/fatal/if/assert-context.yml new file mode 100644 index 00000000..9fb89b87 --- /dev/null +++ b/spec/rtems/fatal/if/assert-context.yml @@ -0,0 +1,50 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: +- default: + brief: | + This member is + definition: const char *${.:name} + description: '%' + kind: member + name: file + variants: [] +- default: + brief: | + This member is + definition: int ${.:name} + description: '%' + kind: member + name: line + variants: [] +- default: + brief: | + This member is + definition: const char *${.:name} + description: '%' + kind: member + name: function + variants: [] +- default: + brief: | + This member is + definition: const char *${.:name} + description: '%' + kind: member + name: failed_expression + variants: [] +definition-kind: typedef-only +description: null +enabled-by: true +interface-type: struct +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_assert_context +notes: null +type: interface diff --git a/spec/rtems/fatal/if/error-occurred.yml b/spec/rtems/fatal/if/error-occurred.yml new file mode 100644 index 00000000..a0e8c6df --- /dev/null +++ b/spec/rtems/fatal/if/error-occurred.yml @@ -0,0 +1,30 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${/c/if/uint32_t:/name} ${.:/params[0]/name} + return: ${../../basedefs/if/no-return:/name} void + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_fatal_error_occurred +notes: null +params: +- description: '%' + dir: null + name: the_error +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/fatal/if/exception-frame-print.yml b/spec/rtems/fatal/if/exception-frame-print.yml new file mode 100644 index 00000000..d65187b9 --- /dev/null +++ b/spec/rtems/fatal/if/exception-frame-print.yml @@ -0,0 +1,31 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: | + ${/score/cpu/if/exception-frame-print:/name}( ${.:/params[0]/name} ); + params: + - const ${exception-frame:/name} *${.:/params[0]/name} + return: void + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_exception_frame_print +notes: null +params: +- description: '%' + dir: null + name: frame +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/fatal/if/exception-frame.yml b/spec/rtems/fatal/if/exception-frame.yml new file mode 100644 index 00000000..43aa120b --- /dev/null +++ b/spec/rtems/fatal/if/exception-frame.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/cpu/if/exception-frame:/name} ${.:/name} + variants: [] +description: null +enabled-by: true +interface-type: typedef +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_exception_frame +notes: null +type: interface diff --git a/spec/rtems/fatal/if/fatal.yml b/spec/rtems/fatal/if/fatal.yml new file mode 100644 index 00000000..10fdaad4 --- /dev/null +++ b/spec/rtems/fatal/if/fatal.yml @@ -0,0 +1,35 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: | + ${/score/interr/if/terminate:/name}( ${.:/params[0]/name}, ${.:/params[1]/name} ); + params: + - ${../../userext/if/fatal-source:/name} ${.:/params[0]/name} + - ${../../userext/if/fatal-code:/name} ${.:/params[1]/name} + return: ${../../basedefs/if/no-return:/name} void + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_fatal +notes: null +params: +- description: '%' + dir: null + name: fatal_source +- description: '%' + dir: null + name: error_code +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/fatal/if/group.yml b/spec/rtems/fatal/if/group.yml new file mode 100644 index 00000000..e3a05303 --- /dev/null +++ b/spec/rtems/fatal/if/group.yml @@ -0,0 +1,21 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + The Fatal Error Manager processes all fatal or irrecoverable errors and other + sources of system termination (for example after ``exit()``). Fatal errors + are identified by the fatal source and error code pair. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +description: null +enabled-by: true +identifier: RTEMSAPIClassicFatal +interface-type: group +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: ../../if/group +name: Fatal Error Manager +text: | + The Classic API shall provide an interface to the Fatal Error Manager. +type: interface diff --git a/spec/rtems/fatal/if/header.yml b/spec/rtems/fatal/if/header.yml new file mode 100644 index 00000000..77f8e0c0 --- /dev/null +++ b/spec/rtems/fatal/if/header.yml @@ -0,0 +1,12 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: This header file defines the Fatal Error Manager API. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +interface-type: header-file +links: +- role: interface-placement + uid: /if/domain +path: rtems/fatal.h +prefix: cpukit/include +type: interface diff --git a/spec/rtems/fatal/if/internal-error-text.yml b/spec/rtems/fatal/if/internal-error-text.yml new file mode 100644 index 00000000..8c55cc07 --- /dev/null +++ b/spec/rtems/fatal/if/internal-error-text.yml @@ -0,0 +1,30 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../userext/if/fatal-code:/name} ${.:/params[0]/name} + return: const char * + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_internal_error_text +notes: null +params: +- description: '%' + dir: null + name: error +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/fatal/if/panic.yml b/spec/rtems/fatal/if/panic.yml new file mode 100644 index 00000000..18511f87 --- /dev/null +++ b/spec/rtems/fatal/if/panic.yml @@ -0,0 +1,35 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - const char *${.:/params[0]/name} + - '...' + return: | + ${../../basedefs/if/no-return:/name} ${../../basedefs/if/printflike:/name}( 1, 2 ) void + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_panic +notes: null +params: +- description: '%' + dir: null + name: fmt +- description: '%' + dir: null + name: '...' +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/fatal/if/source-text.yml b/spec/rtems/fatal/if/source-text.yml new file mode 100644 index 00000000..ae97ebbd --- /dev/null +++ b/spec/rtems/fatal/if/source-text.yml @@ -0,0 +1,30 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../userext/if/fatal-source:/name} ${.:/params[0]/name} + return: const char * + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_fatal_source_text +notes: null +params: +- description: '%' + dir: null + name: source +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/if/group.yml b/spec/rtems/if/group.yml new file mode 100644 index 00000000..f2284dc0 --- /dev/null +++ b/spec/rtems/if/group.yml @@ -0,0 +1,18 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This group contains the Classic API groups. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +description: null +enabled-by: true +identifier: RTEMSAPIClassic +interface-type: group +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: /if/api +name: Classic +text: | + The API shall contain the Classic API. +type: interface diff --git a/spec/rtems/if/header.yml b/spec/rtems/if/header.yml new file mode 100644 index 00000000..d6f6234f --- /dev/null +++ b/spec/rtems/if/header.yml @@ -0,0 +1,87 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: This header file defines the Classic API. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +interface-type: header-file +links: +- role: interface-placement + uid: /if/domain +- enabled-by: [] + role: interface-include + uid: ../barrier/if/header +- enabled-by: [] + role: interface-include + uid: ../cache/if/header +- enabled-by: [] + role: interface-include + uid: ../clock/if/header +- enabled-by: [] + role: interface-include + uid: ../config/if/header +- enabled-by: [] + role: interface-include + uid: ../dpmem/if/header +- enabled-by: [] + role: interface-include + uid: ../event/if/header +- enabled-by: [] + role: interface-include + uid: ../fatal/if/header +- enabled-by: [] + role: interface-include + uid: ../init/if/header +- enabled-by: [] + role: interface-include + uid: ../intr/if/header +- enabled-by: [] + role: interface-include + uid: ../io/if/header +- enabled-by: [] + role: interface-include + uid: ../message/if/header +- enabled-by: [] + role: interface-include + uid: ../object/if/header +- enabled-by: [] + role: interface-include + uid: ../option/if/header +- enabled-by: [] + role: interface-include + uid: ../part/if/header +- enabled-by: [] + role: interface-include + uid: ../ratemon/if/header +- enabled-by: [] + role: interface-include + uid: ../region/if/header +- enabled-by: [] + role: interface-include + uid: ../sem/if/header +- enabled-by: [] + role: interface-include + uid: ../signal/if/header +- enabled-by: [] + role: interface-include + uid: ../status/if/header +- enabled-by: [] + role: interface-include + uid: ../support/if/header +- enabled-by: [] + role: interface-include + uid: ../task/if/header +- enabled-by: [] + role: interface-include + uid: ../timer/if/header +- enabled-by: [] + role: interface-include + uid: ../type/if/header +- enabled-by: [] + role: interface-include + uid: ../userext/if/header +- enabled-by: RTEMS_MULTIPROCESSING + role: interface-include + uid: ../mp/if/header +path: rtems.h +prefix: cpukit/include +type: interface diff --git a/spec/rtems/init/if/group.yml b/spec/rtems/init/if/group.yml new file mode 100644 index 00000000..89104bf3 --- /dev/null +++ b/spec/rtems/init/if/group.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This group contains directives to initialize and shutdown the RTEMS + executive. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +description: null +enabled-by: true +identifier: RTEMSAPIClassicInit +interface-type: group +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: ../../if/group +name: Initialization and Shutdown +text: | + The Classic API shall provide an interface to the Initialization and Shutdown + Manager. +type: interface diff --git a/spec/rtems/init/if/header.yml b/spec/rtems/init/if/header.yml new file mode 100644 index 00000000..a842fbd8 --- /dev/null +++ b/spec/rtems/init/if/header.yml @@ -0,0 +1,12 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: This header file defines the Initialization Manager API. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +interface-type: header-file +links: +- role: interface-placement + uid: /if/domain +path: rtems/init.h +prefix: cpukit/include +type: interface diff --git a/spec/rtems/init/if/initialize-executive.yml b/spec/rtems/init/if/initialize-executive.yml new file mode 100644 index 00000000..5d4e3ac1 --- /dev/null +++ b/spec/rtems/init/if/initialize-executive.yml @@ -0,0 +1,32 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Initializes the system and starts multitasking. +copyrights: +- Copyright (C) 2015, 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: + body: null + params: [] + return: ${../../basedefs/if/no-return:/name} void + variants: [] +description: | + Iterates through the system initialization linker set and invokes the + registered handlers. The final step is to start multitasking. +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_initialize_executive +notes: | + This directive should be called by boot_card() only. + + This directive does not return to the caller. Errors in the initialization + sequence are usually fatal and lead to a system termination. +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/init/if/shutdown-executive.yml b/spec/rtems/init/if/shutdown-executive.yml new file mode 100644 index 00000000..d4e8fe07 --- /dev/null +++ b/spec/rtems/init/if/shutdown-executive.yml @@ -0,0 +1,35 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Shuts down the RTEMS environment. +copyrights: +- Copyright (C) 2015, 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1989, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${/c/if/uint32_t:/name} ${.:/params[0]/name} + return: ${../../basedefs/if/no-return:/name} void + variants: [] +description: | + The invocation of this directive results in the RTEMS environment being + shutdown and multitasking halted. The system is terminated with a fatal + source of RTEMS_FATAL_SOURCE_EXIT and the specified result code. +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_shutdown_executive +notes: | + This directive does not return to the caller. +params: +- description: is the result code. + dir: null + name: result +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/intr/if/catch.yml b/spec/rtems/intr/if/catch.yml new file mode 100644 index 00000000..40246fcb --- /dev/null +++ b/spec/rtems/intr/if/catch.yml @@ -0,0 +1,38 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${isr-entry:/name} ${.:/params[0]/name} + - ${vector-number:/name} ${.:/params[1]/name} + - ${isr-entry:/name} *${.:/params[2]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_interrupt_catch +notes: null +params: +- description: '%' + dir: null + name: new_isr_handler +- description: '%' + dir: null + name: vector +- description: '%' + dir: null + name: old_isr_handler +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/intr/if/cause.yml b/spec/rtems/intr/if/cause.yml new file mode 100644 index 00000000..6d562a61 --- /dev/null +++ b/spec/rtems/intr/if/cause.yml @@ -0,0 +1,26 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '%' + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_interrupt_cause +notes: null +params: +- description: '%' + dir: null + name: _interrupt_to_cause +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/intr/if/clear.yml b/spec/rtems/intr/if/clear.yml new file mode 100644 index 00000000..f77071c1 --- /dev/null +++ b/spec/rtems/intr/if/clear.yml @@ -0,0 +1,26 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '%' + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_interrupt_clear +notes: null +params: +- description: '%' + dir: null + name: _interrupt_to_clear +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/intr/if/disable.yml b/spec/rtems/intr/if/disable.yml new file mode 100644 index 00000000..c87c3d56 --- /dev/null +++ b/spec/rtems/intr/if/disable.yml @@ -0,0 +1,27 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/isr/if/local-disable:/name}( ${.:/params[0]/name} ) + variants: [] +description: null +enabled-by: + not: RTEMS_SMP +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_interrupt_disable +notes: null +params: +- description: '%' + dir: null + name: _isr_cookie +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/intr/if/enable.yml b/spec/rtems/intr/if/enable.yml new file mode 100644 index 00000000..e2353ccd --- /dev/null +++ b/spec/rtems/intr/if/enable.yml @@ -0,0 +1,27 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/isr/if/local-enable:/name}( ${.:/params[0]/name} ) + variants: [] +description: null +enabled-by: + not: RTEMS_SMP +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_interrupt_enable +notes: null +params: +- description: '%' + dir: null + name: _isr_cookie +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/intr/if/flash.yml b/spec/rtems/intr/if/flash.yml new file mode 100644 index 00000000..140ba90e --- /dev/null +++ b/spec/rtems/intr/if/flash.yml @@ -0,0 +1,27 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/isr/if/local-flash:/name}( ${.:/params[0]/name} ) + variants: [] +description: null +enabled-by: + not: RTEMS_SMP +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_interrupt_flash +notes: null +params: +- description: '%' + dir: null + name: _isr_cookie +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/intr/if/group.yml b/spec/rtems/intr/if/group.yml new file mode 100644 index 00000000..e1c4c8af --- /dev/null +++ b/spec/rtems/intr/if/group.yml @@ -0,0 +1,24 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Any real-time executive must provide a mechanism for quick response to + externally generated interrupts to satisfy the critical time constraints of + the application. The Interrupt Manager provides this mechanism for RTEMS. + This manager permits quick interrupt response times by providing the critical + ability to alter task execution which allows a task to be preempted upon exit + from an ISR. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +description: null +enabled-by: true +identifier: RTEMSAPIClassicIntr +interface-type: group +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: ../../if/group +name: Interrupt Manager +text: | + The Classic API shall provide an interface to the Interrupt Manager. +type: interface diff --git a/spec/rtems/intr/if/header.yml b/spec/rtems/intr/if/header.yml new file mode 100644 index 00000000..b1c63786 --- /dev/null +++ b/spec/rtems/intr/if/header.yml @@ -0,0 +1,12 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: This header file defines the Interrupt Manager API. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +interface-type: header-file +links: +- role: interface-placement + uid: /if/domain +path: rtems/rtems/intr.h +prefix: cpukit/include +type: interface diff --git a/spec/rtems/intr/if/is-in-progress.yml b/spec/rtems/intr/if/is-in-progress.yml new file mode 100644 index 00000000..115adee1 --- /dev/null +++ b/spec/rtems/intr/if/is-in-progress.yml @@ -0,0 +1,23 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/isr/if/is-in-progress:/name}() + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_interrupt_is_in_progress +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/intr/if/isr-entry.yml b/spec/rtems/intr/if/isr-entry.yml new file mode 100644 index 00000000..eedfcca0 --- /dev/null +++ b/spec/rtems/intr/if/isr-entry.yml @@ -0,0 +1,23 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Interrupt service routines installed by ${catch:/name} shall have this + function pointer type. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: void ( *${.:/name} )( void * ) + variants: + - definition: ${/score/isr/if/handler-entry:/name} ${.:/name} + enabled-by: ${/score/cpu/if/simple-vectored-interrupts:/name} == ${../../basedefs/if/true:/name} +description: null +enabled-by: true +interface-type: typedef +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_isr_entry +notes: null +type: interface diff --git a/spec/rtems/intr/if/isr.yml b/spec/rtems/intr/if/isr.yml new file mode 100644 index 00000000..9ef98ecd --- /dev/null +++ b/spec/rtems/intr/if/isr.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/isr/if/handler:/name} ${.:/name} + variants: [] +description: null +enabled-by: true +interface-type: typedef +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_isr +notes: null +type: interface diff --git a/spec/rtems/intr/if/level.yml b/spec/rtems/intr/if/level.yml new file mode 100644 index 00000000..ab9d08d0 --- /dev/null +++ b/spec/rtems/intr/if/level.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/isr/if/level:/name} ${.:/name} + variants: [] +description: null +enabled-by: true +interface-type: typedef +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_interrupt_level +notes: null +type: interface diff --git a/spec/rtems/intr/if/local-disable.yml b/spec/rtems/intr/if/local-disable.yml new file mode 100644 index 00000000..2a4918c8 --- /dev/null +++ b/spec/rtems/intr/if/local-disable.yml @@ -0,0 +1,26 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/isr/if/local-disable:/name}( ${.:/params[0]/name} ) + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_interrupt_local_disable +notes: null +params: +- description: '%' + dir: null + name: _isr_cookie +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/intr/if/local-enable.yml b/spec/rtems/intr/if/local-enable.yml new file mode 100644 index 00000000..5bfa440e --- /dev/null +++ b/spec/rtems/intr/if/local-enable.yml @@ -0,0 +1,26 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/isr/if/local-enable:/name}( ${.:/params[0]/name} ) + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_interrupt_local_enable +notes: null +params: +- description: '%' + dir: null + name: _isr_cookie +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/intr/if/lock-acquire-isr.yml b/spec/rtems/intr/if/lock-acquire-isr.yml new file mode 100644 index 00000000..e7bca712 --- /dev/null +++ b/spec/rtems/intr/if/lock-acquire-isr.yml @@ -0,0 +1,35 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: do { (void) ${.:/params[1]/name}; } while ( 0 ) + variants: + - definition: | + ${/score/smp/if/lock-acquire:/name}( + &( ${.:/params[0]/name} )->Lock, + &( ${.:/params[1]/name} )->Lock_context + ) + enabled-by: defined(${/build-options/if/smp:/name}) +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_interrupt_lock_acquire_isr +notes: null +params: +- description: '%' + dir: null + name: _lock +- description: '%' + dir: null + name: _lock_context +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/intr/if/lock-acquire.yml b/spec/rtems/intr/if/lock-acquire.yml new file mode 100644 index 00000000..4ca3dbde --- /dev/null +++ b/spec/rtems/intr/if/lock-acquire.yml @@ -0,0 +1,30 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: | + ${/score/isr/if/lock-isr-disable-acquire:/name}( ${.:/params[0]/name}, ${.:/params[1]/name} ) + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_interrupt_lock_acquire +notes: null +params: +- description: '%' + dir: null + name: _lock +- description: '%' + dir: null + name: _lock_context +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/intr/if/lock-context.yml b/spec/rtems/intr/if/lock-context.yml new file mode 100644 index 00000000..c1c53d91 --- /dev/null +++ b/spec/rtems/intr/if/lock-context.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/isr/if/lock-context:/name} ${.:/name} + variants: [] +description: null +enabled-by: true +interface-type: typedef +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_interrupt_lock_context +notes: null +type: interface diff --git a/spec/rtems/intr/if/lock-declare.yml b/spec/rtems/intr/if/lock-declare.yml new file mode 100644 index 00000000..fa1c1147 --- /dev/null +++ b/spec/rtems/intr/if/lock-declare.yml @@ -0,0 +1,30 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: | + ${/score/isr/if/lock-declare:/name}( ${.:/params[0]/name}, ${.:/params[1]/name} ) + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_INTERRUPT_LOCK_DECLARE +notes: null +params: +- description: '%' + dir: null + name: _qualifier +- description: '%' + dir: null + name: _designator +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/intr/if/lock-define.yml b/spec/rtems/intr/if/lock-define.yml new file mode 100644 index 00000000..762201a5 --- /dev/null +++ b/spec/rtems/intr/if/lock-define.yml @@ -0,0 +1,33 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: | + ${/score/isr/if/lock-define:/name}( ${.:/params[0]/name}, ${.:/params[1]/name}, ${.:/params[2]/name} ) + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_INTERRUPT_LOCK_DEFINE +notes: null +params: +- description: '%' + dir: null + name: _qualifier +- description: '%' + dir: null + name: _designator +- description: '%' + dir: null + name: _name +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/intr/if/lock-destroy.yml b/spec/rtems/intr/if/lock-destroy.yml new file mode 100644 index 00000000..5c6e553e --- /dev/null +++ b/spec/rtems/intr/if/lock-destroy.yml @@ -0,0 +1,26 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/isr/if/lock-destroy:/name}( ${.:/params[0]/name} ) + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_interrupt_lock_destroy +notes: null +params: +- description: '%' + dir: null + name: _lock +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/intr/if/lock-initialize.yml b/spec/rtems/intr/if/lock-initialize.yml new file mode 100644 index 00000000..0c82aa65 --- /dev/null +++ b/spec/rtems/intr/if/lock-initialize.yml @@ -0,0 +1,30 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: | + ${/score/isr/if/lock-initialize:/name}( ${.:/params[0]/name}, ${.:/params[1]/name} ) + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_interrupt_lock_initialize +notes: null +params: +- description: '%' + dir: null + name: _lock +- description: '%' + dir: null + name: _name +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/intr/if/lock-initializer.yml b/spec/rtems/intr/if/lock-initializer.yml new file mode 100644 index 00000000..b2ee84a4 --- /dev/null +++ b/spec/rtems/intr/if/lock-initializer.yml @@ -0,0 +1,26 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/isr/if/lock-initializer:/name}( ${.:/params[0]/name} ) + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_INTERRUPT_LOCK_INITIALIZER +notes: null +params: +- description: '%' + dir: null + name: _name +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/intr/if/lock-isr-disable.yml b/spec/rtems/intr/if/lock-isr-disable.yml new file mode 100644 index 00000000..43660b93 --- /dev/null +++ b/spec/rtems/intr/if/lock-isr-disable.yml @@ -0,0 +1,26 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/isr/if/lock-isr-disable:/name}( ${.:/params[0]/name} ) + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_interrupt_lock_interrupt_disable +notes: null +params: +- description: '%' + dir: null + name: _lock_context +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/intr/if/lock-member.yml b/spec/rtems/intr/if/lock-member.yml new file mode 100644 index 00000000..19f9509e --- /dev/null +++ b/spec/rtems/intr/if/lock-member.yml @@ -0,0 +1,26 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/isr/if/lock-member:/name}( ${.:/params[0]/name} ) + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_INTERRUPT_LOCK_MEMBER +notes: null +params: +- description: '%' + dir: null + name: _designator +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/intr/if/lock-reference.yml b/spec/rtems/intr/if/lock-reference.yml new file mode 100644 index 00000000..e187c4b9 --- /dev/null +++ b/spec/rtems/intr/if/lock-reference.yml @@ -0,0 +1,30 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: | + ${/score/isr/if/lock-reference:/name}( ${.:/params[0]/name}, ${.:/params[1]/name} ) + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_INTERRUPT_LOCK_REFERENCE +notes: null +params: +- description: '%' + dir: null + name: _designator +- description: '%' + dir: null + name: _target +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/intr/if/lock-release-isr.yml b/spec/rtems/intr/if/lock-release-isr.yml new file mode 100644 index 00000000..e12e641a --- /dev/null +++ b/spec/rtems/intr/if/lock-release-isr.yml @@ -0,0 +1,35 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: do { (void) ${.:/params[1]/name}; } while ( 0 ) + variants: + - definition: | + ${/score/smp/if/lock-release:/name}( + &( ${.:/params[0]/name} )->Lock, + &( ${.:/params[1]/name} )->Lock_context + ) + enabled-by: defined(${/build-options/if/smp:/name}) +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_interrupt_lock_release_isr +notes: null +params: +- description: '%' + dir: null + name: _lock +- description: '%' + dir: null + name: _lock_context +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/intr/if/lock-release.yml b/spec/rtems/intr/if/lock-release.yml new file mode 100644 index 00000000..97bbb81b --- /dev/null +++ b/spec/rtems/intr/if/lock-release.yml @@ -0,0 +1,30 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: | + ${/score/isr/if/lock-release-isr-enable:/name}( ${.:/params[0]/name}, ${.:/params[1]/name} ) + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_interrupt_lock_release +notes: null +params: +- description: '%' + dir: null + name: _lock +- description: '%' + dir: null + name: _lock_context +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/intr/if/lock.yml b/spec/rtems/intr/if/lock.yml new file mode 100644 index 00000000..1b2615be --- /dev/null +++ b/spec/rtems/intr/if/lock.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/isr/if/lock-control:/name} ${.:/name} + variants: [] +description: null +enabled-by: true +interface-type: typedef +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_interrupt_lock +notes: null +type: interface diff --git a/spec/rtems/intr/if/vector-number.yml b/spec/rtems/intr/if/vector-number.yml new file mode 100644 index 00000000..74e96aa1 --- /dev/null +++ b/spec/rtems/intr/if/vector-number.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/isr/if/vector-number:/name} ${.:/name} + variants: [] +description: null +enabled-by: true +interface-type: typedef +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_vector_number +notes: null +type: interface diff --git a/spec/rtems/io/if/close.yml b/spec/rtems/io/if/close.yml new file mode 100644 index 00000000..0321a932 --- /dev/null +++ b/spec/rtems/io/if/close.yml @@ -0,0 +1,38 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${device-major-number:/name} ${.:/params[0]/name} + - ${device-minor-number:/name} ${.:/params[1]/name} + - void *${.:/params[2]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_io_close +notes: null +params: +- description: '%' + dir: null + name: major +- description: '%' + dir: null + name: minor +- description: '%' + dir: null + name: argument +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/io/if/control.yml b/spec/rtems/io/if/control.yml new file mode 100644 index 00000000..09608139 --- /dev/null +++ b/spec/rtems/io/if/control.yml @@ -0,0 +1,38 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${device-major-number:/name} ${.:/params[0]/name} + - ${device-minor-number:/name} ${.:/params[1]/name} + - void *${.:/params[2]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_io_control +notes: null +params: +- description: '%' + dir: null + name: major +- description: '%' + dir: null + name: minor +- description: '%' + dir: null + name: argument +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/io/if/device-driver-entry.yml b/spec/rtems/io/if/device-driver-entry.yml new file mode 100644 index 00000000..a3ba8c60 --- /dev/null +++ b/spec/rtems/io/if/device-driver-entry.yml @@ -0,0 +1,24 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: | + ${device-driver:/name} ( *${.:/name} )( + ${device-major-number:/name}, + ${device-minor-number:/name}, + void * + ); + variants: [] +description: null +enabled-by: true +interface-type: typedef +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_device_driver_entry +notes: null +type: interface diff --git a/spec/rtems/io/if/device-driver.yml b/spec/rtems/io/if/device-driver.yml new file mode 100644 index 00000000..7ed1cdb0 --- /dev/null +++ b/spec/rtems/io/if/device-driver.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${../../status/if/code:/name} ${.:/name} + variants: [] +description: null +enabled-by: true +interface-type: typedef +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_device_driver +notes: null +type: interface diff --git a/spec/rtems/io/if/device-major-number.yml b/spec/rtems/io/if/device-major-number.yml new file mode 100644 index 00000000..f49bbc6b --- /dev/null +++ b/spec/rtems/io/if/device-major-number.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/c/if/uint32_t:/name} ${.:/name} + variants: [] +description: null +enabled-by: true +interface-type: typedef +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_device_major_number +notes: null +type: interface diff --git a/spec/rtems/io/if/device-minor-number.yml b/spec/rtems/io/if/device-minor-number.yml new file mode 100644 index 00000000..dde18153 --- /dev/null +++ b/spec/rtems/io/if/device-minor-number.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/c/if/uint32_t:/name} ${.:/name} + variants: [] +description: null +enabled-by: true +interface-type: typedef +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_device_minor_number +notes: null +type: interface diff --git a/spec/rtems/io/if/driver-address-table.yml b/spec/rtems/io/if/driver-address-table.yml new file mode 100644 index 00000000..503ed033 --- /dev/null +++ b/spec/rtems/io/if/driver-address-table.yml @@ -0,0 +1,66 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: +- default: + brief: | + This member is + definition: rtems_device_driver_entry ${.:name} + description: '%' + kind: member + name: initialization_entry + variants: [] +- default: + brief: | + This member is + definition: rtems_device_driver_entry ${.:name} + description: '%' + kind: member + name: open_entry + variants: [] +- default: + brief: | + This member is + definition: rtems_device_driver_entry ${.:name} + description: '%' + kind: member + name: close_entry + variants: [] +- default: + brief: | + This member is + definition: rtems_device_driver_entry ${.:name} + description: '%' + kind: member + name: read_entry + variants: [] +- default: + brief: | + This member is + definition: rtems_device_driver_entry ${.:name} + description: '%' + kind: member + name: write_entry + variants: [] +- default: + brief: | + This member is + definition: rtems_device_driver_entry ${.:name} + description: '%' + kind: member + name: control_entry + variants: [] +definition-kind: typedef-only +description: null +enabled-by: true +interface-type: struct +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_driver_address_table +notes: null +type: interface diff --git a/spec/rtems/io/if/driver-error.yml b/spec/rtems/io/if/driver-error.yml new file mode 100644 index 00000000..e9d1f0aa --- /dev/null +++ b/spec/rtems/io/if/driver-error.yml @@ -0,0 +1,38 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${device-major-number:/name} ${.:/params[0]/name} + - ${device-minor-number:/name} ${.:/params[1]/name} + - void *${.:/params[2]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_io_driver_io_error +notes: null +params: +- description: '%' + dir: null + name: major +- description: '%' + dir: null + name: minor +- description: '%' + dir: null + name: arg +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/io/if/getchark.yml b/spec/rtems/io/if/getchark.yml new file mode 100644 index 00000000..312942a7 --- /dev/null +++ b/spec/rtems/io/if/getchark.yml @@ -0,0 +1,9 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +interface-type: unspecified-function +links: [] +name: rtems_putc +reference: null +type: interface diff --git a/spec/rtems/io/if/group.yml b/spec/rtems/io/if/group.yml new file mode 100644 index 00000000..181f251a --- /dev/null +++ b/spec/rtems/io/if/group.yml @@ -0,0 +1,21 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + The Input/Output Interface Manager provides a well-defined mechanism for + accessing device drivers and a structured methodology for organizing device + drivers. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +description: null +enabled-by: true +identifier: RTEMSAPIClassicIO +interface-type: group +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: ../../if/group +name: Input/Output Interface Manager +text: | + The Classic API shall provide an interface to the Input/Output Interface Manager. +type: interface diff --git a/spec/rtems/io/if/header.yml b/spec/rtems/io/if/header.yml new file mode 100644 index 00000000..70a8d08e --- /dev/null +++ b/spec/rtems/io/if/header.yml @@ -0,0 +1,12 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: This header file defines the IO Manager API. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +interface-type: header-file +links: +- role: interface-placement + uid: /if/domain +path: rtems/io.h +prefix: cpukit/include +type: interface diff --git a/spec/rtems/io/if/initialize.yml b/spec/rtems/io/if/initialize.yml new file mode 100644 index 00000000..61250511 --- /dev/null +++ b/spec/rtems/io/if/initialize.yml @@ -0,0 +1,38 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${device-major-number:/name} ${.:/params[0]/name} + - ${device-minor-number:/name} ${.:/params[1]/name} + - void *${.:/params[2]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_io_initialize +notes: null +params: +- description: '%' + dir: null + name: major +- description: '%' + dir: null + name: minor +- description: '%' + dir: null + name: argument +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/io/if/mount.yml b/spec/rtems/io/if/mount.yml new file mode 100644 index 00000000..ee4d6ba1 --- /dev/null +++ b/spec/rtems/io/if/mount.yml @@ -0,0 +1,9 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +interface-type: unspecified-function +links: [] +name: mount +reference: null +type: interface diff --git a/spec/rtems/io/if/open.yml b/spec/rtems/io/if/open.yml new file mode 100644 index 00000000..6ec33a03 --- /dev/null +++ b/spec/rtems/io/if/open.yml @@ -0,0 +1,38 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${device-major-number:/name} ${.:/params[0]/name} + - ${device-minor-number:/name} ${.:/params[1]/name} + - void *${.:/params[2]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_io_open +notes: null +params: +- description: '%' + dir: null + name: major +- description: '%' + dir: null + name: minor +- description: '%' + dir: null + name: argument +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/io/if/printer.yml b/spec/rtems/io/if/printer.yml new file mode 100644 index 00000000..118f0686 --- /dev/null +++ b/spec/rtems/io/if/printer.yml @@ -0,0 +1,13 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: [] +definition-kind: struct-only +description: null +enabled-by: true +interface-type: struct +links: [] +name: rtems_printer +notes: null +type: interface diff --git a/spec/rtems/io/if/printk.yml b/spec/rtems/io/if/printk.yml new file mode 100644 index 00000000..f8ed543d --- /dev/null +++ b/spec/rtems/io/if/printk.yml @@ -0,0 +1,9 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +interface-type: unspecified-function +links: [] +name: printk +reference: null +type: interface diff --git a/spec/rtems/io/if/putc.yml b/spec/rtems/io/if/putc.yml new file mode 100644 index 00000000..d49990be --- /dev/null +++ b/spec/rtems/io/if/putc.yml @@ -0,0 +1,9 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +interface-type: unspecified-function +links: [] +name: getchark +reference: null +type: interface diff --git a/spec/rtems/io/if/read.yml b/spec/rtems/io/if/read.yml new file mode 100644 index 00000000..b28a1279 --- /dev/null +++ b/spec/rtems/io/if/read.yml @@ -0,0 +1,38 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${device-major-number:/name} ${.:/params[0]/name} + - ${device-minor-number:/name} ${.:/params[1]/name} + - void *${.:/params[2]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_io_read +notes: null +params: +- description: '%' + dir: null + name: major +- description: '%' + dir: null + name: minor +- description: '%' + dir: null + name: argument +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/io/if/register-driver.yml b/spec/rtems/io/if/register-driver.yml new file mode 100644 index 00000000..a51ec9c5 --- /dev/null +++ b/spec/rtems/io/if/register-driver.yml @@ -0,0 +1,38 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${device-major-number:/name} ${.:/params[0]/name} + - const rtems_driver_address_table *${.:/params[1]/name} + - ${device-major-number:/name} *${.:/params[2]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_io_register_driver +notes: null +params: +- description: '%' + dir: null + name: major +- description: '%' + dir: null + name: driver_table +- description: '%' + dir: null + name: registered_major +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/io/if/register-name.yml b/spec/rtems/io/if/register-name.yml new file mode 100644 index 00000000..0b086407 --- /dev/null +++ b/spec/rtems/io/if/register-name.yml @@ -0,0 +1,38 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - const char *${.:/params[0]/name} + - ${device-major-number:/name} ${.:/params[1]/name} + - ${device-minor-number:/name} ${.:/params[2]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_io_register_name +notes: null +params: +- description: '%' + dir: null + name: device_name +- description: '%' + dir: null + name: major +- description: '%' + dir: null + name: minor +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/io/if/unmount.yml b/spec/rtems/io/if/unmount.yml new file mode 100644 index 00000000..fa548907 --- /dev/null +++ b/spec/rtems/io/if/unmount.yml @@ -0,0 +1,9 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +interface-type: unspecified-function +links: [] +name: unmount +reference: null +type: interface diff --git a/spec/rtems/io/if/unregister-driver.yml b/spec/rtems/io/if/unregister-driver.yml new file mode 100644 index 00000000..0f7cf261 --- /dev/null +++ b/spec/rtems/io/if/unregister-driver.yml @@ -0,0 +1,30 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${device-major-number:/name} ${.:/params[0]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_io_unregister_driver +notes: null +params: +- description: '%' + dir: null + name: major +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/io/if/write.yml b/spec/rtems/io/if/write.yml new file mode 100644 index 00000000..0cd9c278 --- /dev/null +++ b/spec/rtems/io/if/write.yml @@ -0,0 +1,38 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${device-major-number:/name} ${.:/params[0]/name} + - ${device-minor-number:/name} ${.:/params[1]/name} + - void *${.:/params[2]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_io_write +notes: null +params: +- description: '%' + dir: null + name: major +- description: '%' + dir: null + name: minor +- description: '%' + dir: null + name: argument +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/message/if/broadcast.yml b/spec/rtems/message/if/broadcast.yml new file mode 100644 index 00000000..ab2e45d0 --- /dev/null +++ b/spec/rtems/message/if/broadcast.yml @@ -0,0 +1,42 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + - const void *${.:/params[1]/name} + - ${/c/if/size_t:/name} ${.:/params[2]/name} + - ${/c/if/uint32_t:/name} *${.:/params[3]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_message_queue_broadcast +notes: null +params: +- description: '%' + dir: null + name: id +- description: '%' + dir: null + name: buffer +- description: '%' + dir: null + name: size +- description: '%' + dir: null + name: count +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/message/if/create.yml b/spec/rtems/message/if/create.yml new file mode 100644 index 00000000..88f0cdb1 --- /dev/null +++ b/spec/rtems/message/if/create.yml @@ -0,0 +1,46 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/name:/name} ${.:/params[0]/name} + - ${/c/if/uint32_t:/name} ${.:/params[1]/name} + - ${/c/if/size_t:/name} ${.:/params[2]/name} + - ${../../attr/if/attribute:/name} ${.:/params[3]/name} + - ${../../type/if/id:/name} *${.:/params[4]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_message_queue_create +notes: null +params: +- description: '%' + dir: null + name: name +- description: '%' + dir: null + name: count +- description: '%' + dir: null + name: max_message_size +- description: '%' + dir: null + name: attribute_set +- description: '%' + dir: null + name: id +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/message/if/delete.yml b/spec/rtems/message/if/delete.yml new file mode 100644 index 00000000..3e6fb462 --- /dev/null +++ b/spec/rtems/message/if/delete.yml @@ -0,0 +1,30 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_message_queue_delete +notes: null +params: +- description: '%' + dir: null + name: id +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/message/if/flush.yml b/spec/rtems/message/if/flush.yml new file mode 100644 index 00000000..faeb0c81 --- /dev/null +++ b/spec/rtems/message/if/flush.yml @@ -0,0 +1,34 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + - ${/c/if/uint32_t:/name} *${.:/params[1]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_message_queue_flush +notes: null +params: +- description: '%' + dir: null + name: id +- description: '%' + dir: null + name: count +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/message/if/get-number-pending.yml b/spec/rtems/message/if/get-number-pending.yml new file mode 100644 index 00000000..aab16f4d --- /dev/null +++ b/spec/rtems/message/if/get-number-pending.yml @@ -0,0 +1,34 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + - ${/c/if/uint32_t:/name} *${.:/params[1]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_message_queue_get_number_pending +notes: null +params: +- description: '%' + dir: null + name: id +- description: '%' + dir: null + name: count +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/message/if/group.yml b/spec/rtems/message/if/group.yml new file mode 100644 index 00000000..82c9944d --- /dev/null +++ b/spec/rtems/message/if/group.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + The Message Manager provides communication and synchronization capabilities + using RTEMS message queues. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +description: null +enabled-by: true +identifier: RTEMSAPIClassicMessage +interface-type: group +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: ../../if/group +name: Message Manager +text: | + The Classic API shall provide an interface to the Message Manager. +type: interface diff --git a/spec/rtems/message/if/header.yml b/spec/rtems/message/if/header.yml new file mode 100644 index 00000000..519439da --- /dev/null +++ b/spec/rtems/message/if/header.yml @@ -0,0 +1,12 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: This header file defines the Message Manager API. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +interface-type: header-file +links: +- role: interface-placement + uid: /if/domain +path: rtems/rtems/message.h +prefix: cpukit/include +type: interface diff --git a/spec/rtems/message/if/ident.yml b/spec/rtems/message/if/ident.yml new file mode 100644 index 00000000..a80d93d9 --- /dev/null +++ b/spec/rtems/message/if/ident.yml @@ -0,0 +1,86 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Identifies a message queue object by the specified object name. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/name:/name} ${.:/params[0]/name} + - ${/c/if/uint32_t:/name} ${.:/params[1]/name} + - ${../../type/if/id:/name} *${.:/params[2]/name} + return: ${../../status/if/code:/name} + variants: [] +description: | + This directive obtains the message queue identifier associated with the + message queue name specified in ``${.:/params[0]/name}``. + + The node to search is specified in ``${.:/params[1]/name}``. It shall be + + * a valid node number, + + * the constant ${../../object/if/search-all-nodes:/name} to search in all nodes, + + * the constant ${../../object/if/search-local-node:/name} to search in the local + node only, or + + * the constant ${../../object/if/search-other-nodes:/name} to search in all nodes + except the local node. +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_message_queue_ident +notes: | + If the message queue name is not unique, then the message queue identifier + will match the first message queue with that name in the search order. + However, this message queue identifier is not guaranteed to correspond to the + desired message queue. The message queue identifier is used with other + message related directives to access the message queue. + + If node is ${../../object/if/search-all-nodes:/name}, all nodes are searched with + the local node being searched first. All other nodes are searched with the + lowest numbered node searched first. + + If node is a valid node number which does not represent the local node, then + only the message queues exported by the designated node are searched. + + This directive does not generate activity on remote nodes. It accesses only + the local copy of the global object table. +params: +- description: is the object name to look up. + dir: null + name: name +- description: is the node or node set to search for a matching object. + dir: null + name: node +- description: | + is the pointer to an object identifier variable. The object identifier of + an object with the specified name will be stored in this variable, in case + of a successful operation. + dir: out + name: id +return: + return: null + return-values: + - description: | + The requested operation was successful. + value: ${../../status/if/successful:/name} + - description: | + The ${.:/params[2]/name} parameter was ${/c/if/null:/name}. + value: ${../../status/if/invalid-address:/name} + - description: | + The ${.:/params[0]/name} parameter was 0. + value: ${../../status/if/invalid-name:/name} + - description: | + There was no object with the specified name on the specified nodes. + value: ${../../status/if/invalid-name:/name} + - description: | + In multiprocessing configurations, the specified node was invalid. + value: ${../../status/if/invalid-node:/name} +type: interface diff --git a/spec/rtems/message/if/receive.yml b/spec/rtems/message/if/receive.yml new file mode 100644 index 00000000..5c77dedf --- /dev/null +++ b/spec/rtems/message/if/receive.yml @@ -0,0 +1,46 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + - void *${.:/params[1]/name} + - ${/c/if/size_t:/name} *${.:/params[2]/name} + - ${../../option/if/option:/name} ${.:/params[3]/name} + - ${../../type/if/interval:/name} ${.:/params[4]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_message_queue_receive +notes: null +params: +- description: '%' + dir: null + name: id +- description: '%' + dir: null + name: buffer +- description: '%' + dir: null + name: size +- description: '%' + dir: null + name: option_set +- description: '%' + dir: null + name: timeout +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/message/if/send.yml b/spec/rtems/message/if/send.yml new file mode 100644 index 00000000..7ce5dd07 --- /dev/null +++ b/spec/rtems/message/if/send.yml @@ -0,0 +1,38 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + - const void *${.:/params[1]/name} + - ${/c/if/size_t:/name} ${.:/params[2]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_message_queue_send +notes: null +params: +- description: '%' + dir: null + name: id +- description: '%' + dir: null + name: buffer +- description: '%' + dir: null + name: size +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/message/if/urgent.yml b/spec/rtems/message/if/urgent.yml new file mode 100644 index 00000000..bf21ed90 --- /dev/null +++ b/spec/rtems/message/if/urgent.yml @@ -0,0 +1,38 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + - const void *${.:/params[1]/name} + - ${/c/if/size_t:/name} ${.:/params[2]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_message_queue_urgent +notes: null +params: +- description: '%' + dir: null + name: id +- description: '%' + dir: null + name: buffer +- description: '%' + dir: null + name: size +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/message/req/ident.yml b/spec/rtems/message/req/ident.yml new file mode 100644 index 00000000..1e623ab9 --- /dev/null +++ b/spec/rtems/message/req/ident.yml @@ -0,0 +1,15 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +functional-type: function +links: +- role: interface-function + uid: ../if/ident +rationale: null +references: [] +requirement-type: functional +text: | + The ${../if/ident:/name} directive shall identify an Classic API + message queue class object by its name as specified by ${../req/ident}. +type: requirement diff --git a/spec/rtems/message/val/ident.yml b/spec/rtems/message/val/ident.yml new file mode 100644 index 00000000..2a1e9ff4 --- /dev/null +++ b/spec/rtems/message/val/ident.yml @@ -0,0 +1,49 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +links: +- role: validation + uid: ../req/ident +test-actions: +- action: | + ${../../req/ident:/test-run}( + id_local_object, + ClassicMessageIdentAction + ); + checks: [] + description: | + Run the generic object identification tests for Classic API message queue + class objects defined by ${../../req/ident}. + links: [] +test-brief: Test the ${../if/ident:/name} directive. +test-description: null +test-epilogue: null +test-fixture: null +test-header: null +test-includes: [] +test-local-includes: +- tr-object-ident.h +test-prologue: | + rtems_status_code sc; + rtems_id id_local_object; + + sc = rtems_message_queue_create( + ClassicObjectIdentName, + 1, + 1, + RTEMS_DEFAULT_ATTRIBUTES, + &id_local_object + ); + T_assert_rsc_success( sc ); +test-support: | + static rtems_status_code ClassicMessageIdentAction( + rtems_name name, + uint32_t node, + rtems_id *id + ) + { + return rtems_message_queue_ident( name, node, id ); + } +test-target: testsuites/validation/tc-message-ident.c +type: test-case diff --git a/spec/rtems/mode/if/all-mode-masks.yml b/spec/rtems/mode/if/all-mode-masks.yml new file mode 100644 index 00000000..92a86105 --- /dev/null +++ b/spec/rtems/mode/if/all-mode-masks.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: This mode constant is a mask with all mode bits set. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x0000ffff' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_ALL_MODE_MASKS +notes: null +type: interface diff --git a/spec/rtems/mode/if/asr-mask.yml b/spec/rtems/mode/if/asr-mask.yml new file mode 100644 index 00000000..690a4cb8 --- /dev/null +++ b/spec/rtems/mode/if/asr-mask.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This mode constant corresponds to the signal enable/disable bit. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000400' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_ASR_MASK +notes: null +type: interface diff --git a/spec/rtems/mode/if/asr.yml b/spec/rtems/mode/if/asr.yml new file mode 100644 index 00000000..54231e74 --- /dev/null +++ b/spec/rtems/mode/if/asr.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This mode constant is used to indicate signal processing is enabled. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_ASR +notes: null +type: interface diff --git a/spec/rtems/mode/if/current-mode.yml b/spec/rtems/mode/if/current-mode.yml new file mode 100644 index 00000000..06767b5f --- /dev/null +++ b/spec/rtems/mode/if/current-mode.yml @@ -0,0 +1,21 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This mode constant is used when the user wishes to obtain their current + execution mode. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_CURRENT_MODE +notes: null +type: interface diff --git a/spec/rtems/mode/if/default.yml b/spec/rtems/mode/if/default.yml new file mode 100644 index 00000000..a5d62d71 --- /dev/null +++ b/spec/rtems/mode/if/default.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This mode constant is the default mode set. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_DEFAULT_MODES +notes: null +type: interface diff --git a/spec/rtems/mode/if/group.yml b/spec/rtems/mode/if/group.yml new file mode 100644 index 00000000..effb1397 --- /dev/null +++ b/spec/rtems/mode/if/group.yml @@ -0,0 +1,18 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This group contains the Classic API task modes. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +description: null +enabled-by: true +identifier: RTEMSAPIClassicModes +interface-type: group +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: ../../if/group +name: Task Modes +text: | + The Classic API shall provide an interface to task modes. +type: interface diff --git a/spec/rtems/mode/if/header.yml b/spec/rtems/mode/if/header.yml new file mode 100644 index 00000000..17d29647 --- /dev/null +++ b/spec/rtems/mode/if/header.yml @@ -0,0 +1,12 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: This header file defines the task modes of the Task Manager API. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +interface-type: header-file +links: +- role: interface-placement + uid: /if/domain +path: rtems/rtems/modes.h +prefix: cpukit/include +type: interface diff --git a/spec/rtems/mode/if/interrupt-level-body.yml b/spec/rtems/mode/if/interrupt-level-body.yml new file mode 100644 index 00000000..16608cc8 --- /dev/null +++ b/spec/rtems/mode/if/interrupt-level-body.yml @@ -0,0 +1,35 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Returns a mode with the desired interrupt level in the proper bit-field + location. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${/c/if/uint32_t:/name} ${.:/params[0]/name} + return: ${mode:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_interrupt_level_body +notes: | + This function is used by bindings from languages other than C and C++. +params: +- description: is the desired interrupt level. + dir: null + name: level +return: + return: | + A mode with the desired interrupt level in the proper bit-field location is + returned. + return-values: [] +type: interface diff --git a/spec/rtems/mode/if/interrupt-level.yml b/spec/rtems/mode/if/interrupt-level.yml new file mode 100644 index 00000000..b4eb17e5 --- /dev/null +++ b/spec/rtems/mode/if/interrupt-level.yml @@ -0,0 +1,30 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Returns the processor dependent interrupt level which corresponds to the + requested interrupt level. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ( ( ${.:/params[0]/name} ) & ${interrupt-mask:/name} ) + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_INTERRUPT_LEVEL +notes: | + RTEMS supports 256 interrupt levels using the least significant eight bits of + the mode set. On any particular CPU, fewer than 256 levels may be supported. +params: +- description: is the mode set. + dir: null + name: _mode_set +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/mode/if/interrupt-mask-variable.yml b/spec/rtems/mode/if/interrupt-mask-variable.yml new file mode 100644 index 00000000..6e185f6e --- /dev/null +++ b/spec/rtems/mode/if/interrupt-mask-variable.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: const ${/c/if/uint32_t:/name} ${.:/name} + variants: [] +description: '%' +enabled-by: true +interface-type: variable +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_interrupt_mask +notes: null +type: interface diff --git a/spec/rtems/mode/if/interrupt-mask.yml b/spec/rtems/mode/if/interrupt-mask.yml new file mode 100644 index 00000000..8f343f11 --- /dev/null +++ b/spec/rtems/mode/if/interrupt-mask.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This mode constant corresponds to the interrupt enable/disable bits. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/cpu/if/modes-interrupt-mask:/name} + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_INTERRUPT_MASK +notes: null +type: interface diff --git a/spec/rtems/mode/if/mode.yml b/spec/rtems/mode/if/mode.yml new file mode 100644 index 00000000..4ecfc56f --- /dev/null +++ b/spec/rtems/mode/if/mode.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This type defines the control block used to manage each a mode set. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/c/if/uint32_t:/name} ${.:/name} + variants: [] +description: null +enabled-by: true +interface-type: typedef +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_mode +notes: null +type: interface diff --git a/spec/rtems/mode/if/no-asr.yml b/spec/rtems/mode/if/no-asr.yml new file mode 100644 index 00000000..c2278801 --- /dev/null +++ b/spec/rtems/mode/if/no-asr.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This mode constant is used to indicate signal processing is disabled. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000400' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_NO_ASR +notes: null +type: interface diff --git a/spec/rtems/mode/if/no-preempt.yml b/spec/rtems/mode/if/no-preempt.yml new file mode 100644 index 00000000..f6183fe9 --- /dev/null +++ b/spec/rtems/mode/if/no-preempt.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This mode constant is used to indicate preemption is disabled. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000100' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_NO_PREEMPT +notes: null +type: interface diff --git a/spec/rtems/mode/if/no-timeslice.yml b/spec/rtems/mode/if/no-timeslice.yml new file mode 100644 index 00000000..de7aec75 --- /dev/null +++ b/spec/rtems/mode/if/no-timeslice.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This mode constant is used to indicate timeslicing is disabled. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_NO_TIMESLICE +notes: null +type: interface diff --git a/spec/rtems/mode/if/preempt-mask.yml b/spec/rtems/mode/if/preempt-mask.yml new file mode 100644 index 00000000..8020cb47 --- /dev/null +++ b/spec/rtems/mode/if/preempt-mask.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This mode constant corresponds to the preemption enable/disable bit. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000100' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_PREEMPT_MASK +notes: null +type: interface diff --git a/spec/rtems/mode/if/preempt.yml b/spec/rtems/mode/if/preempt.yml new file mode 100644 index 00000000..c513ffac --- /dev/null +++ b/spec/rtems/mode/if/preempt.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This mode constant is used to indicate preemption is enabled. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_PREEMPT +notes: null +type: interface diff --git a/spec/rtems/mode/if/timeslice-mask.yml b/spec/rtems/mode/if/timeslice-mask.yml new file mode 100644 index 00000000..c1846c59 --- /dev/null +++ b/spec/rtems/mode/if/timeslice-mask.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This mode constant corresponds to the timeslice enable/disable bit. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000200' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_TIMESLICE_MASK +notes: null +type: interface diff --git a/spec/rtems/mode/if/timeslice.yml b/spec/rtems/mode/if/timeslice.yml new file mode 100644 index 00000000..1d2f98b6 --- /dev/null +++ b/spec/rtems/mode/if/timeslice.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This mode constant is used to indicate timeslicing is enabled. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000200' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_TIMESLICE +notes: null +type: interface diff --git a/spec/rtems/mode/req/bit-set.yml b/spec/rtems/mode/req/bit-set.yml new file mode 100644 index 00000000..42c93a46 --- /dev/null +++ b/spec/rtems/mode/req/bit-set.yml @@ -0,0 +1,15 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +links: +- role: requirement-refinement + uid: ../if/group +non-functional-type: interface +rationale: null +references: [] +requirement-type: non-functional +text: | + Each non-default task mode constant shall be a power of two representable as + an integer of type ${../if/mode:/name}. +type: requirement diff --git a/spec/rtems/mode/req/default.yml b/spec/rtems/mode/req/default.yml new file mode 100644 index 00000000..8e1fbb49 --- /dev/null +++ b/spec/rtems/mode/req/default.yml @@ -0,0 +1,14 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +links: +- role: requirement-refinement + uid: ../if/group +non-functional-type: interface +rationale: null +references: [] +requirement-type: non-functional +text: | + Each default task mode constant shall have a value of zero. +type: requirement diff --git a/spec/rtems/mode/req/masks-all.yml b/spec/rtems/mode/req/masks-all.yml new file mode 100644 index 00000000..8adf26ed --- /dev/null +++ b/spec/rtems/mode/req/masks-all.yml @@ -0,0 +1,15 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +links: +- role: requirement-refinement + uid: ../if/all-mode-masks +non-functional-type: interface +rationale: null +references: [] +requirement-type: non-functional +text: | + The bitwise and of a task mode mask constant and + ${../if/all-mode-masks:/name} shall be equal to the task mode mask constant. +type: requirement diff --git a/spec/rtems/mode/req/masks-unique.yml b/spec/rtems/mode/req/masks-unique.yml new file mode 100644 index 00000000..61f8bdbc --- /dev/null +++ b/spec/rtems/mode/req/masks-unique.yml @@ -0,0 +1,14 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +links: +- role: requirement-refinement + uid: ../if/group +non-functional-type: interface +rationale: null +references: [] +requirement-type: non-functional +text: | + The task mode mask constants and 0xff shall have unique values. +type: requirement diff --git a/spec/rtems/mode/req/masks.yml b/spec/rtems/mode/req/masks.yml new file mode 100644 index 00000000..3c9d7dad --- /dev/null +++ b/spec/rtems/mode/req/masks.yml @@ -0,0 +1,15 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +links: +- role: requirement-refinement + uid: ../if/group +non-functional-type: interface +rationale: null +references: [] +requirement-type: non-functional +text: | + Each task mode mask constant except ${../if/interrupt-mask} shall be a power + of two representable as an integer of type ${../if/mode:/name}. +type: requirement diff --git a/spec/rtems/mode/req/unique.yml b/spec/rtems/mode/req/unique.yml new file mode 100644 index 00000000..d71177e0 --- /dev/null +++ b/spec/rtems/mode/req/unique.yml @@ -0,0 +1,14 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +links: +- role: requirement-refinement + uid: ../if/group +non-functional-type: interface +rationale: null +references: [] +requirement-type: non-functional +text: | + The non-default task mode constants shall have unique values. +type: requirement diff --git a/spec/rtems/mode/val/modes.yml b/spec/rtems/mode/val/modes.yml new file mode 100644 index 00000000..bcbb32a2 --- /dev/null +++ b/spec/rtems/mode/val/modes.yml @@ -0,0 +1,242 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +links: [] +test-actions: +- action: | + /* No action */ + checks: + - check: | + T_step_true( ${step}, IsPowerOfTwo( RTEMS_NO_ASR ) ); + description: | + Check that RTEMS_NO_ASR is a power of two representable as an integer of + type rtems_mode. + links: + - role: validation + uid: ../req/bit-set + - role: validation + uid: ../if/no-asr + - check: | + T_step_true( ${step}, IsPowerOfTwo( RTEMS_NO_PREEMPT ) ); + description: | + Check that RTEMS_NO_PREEMPT is a power of two representable as an integer + of type rtems_mode. + links: + - role: validation + uid: ../req/bit-set + - role: validation + uid: ../if/no-preempt + - check: | + T_step_true( ${step}, IsPowerOfTwo( RTEMS_TIMESLICE ) ); + description: | + Check that RTEMS_TIMESLICE is a power of two representable as an integer + of type rtems_mode. + links: + - role: validation + uid: ../req/bit-set + - role: validation + uid: ../if/timeslice + description: | + Validate the non-default task mode constants. + links: [] +- action: | + /* No action */ + checks: + - check: | + T_step_eq_u32( ${step}, RTEMS_ASR, 0 ); + description: | + Check that RTEMS_ASR is equal to zero. + links: + - role: validation + uid: ../req/default + - role: validation + uid: ../if/asr + - check: | + T_step_eq_u32( ${step}, RTEMS_DEFAULT_MODES, 0 ); + description: | + Check that RTEMS_DEFAULT_MODES is equal to zero. + links: + - role: validation + uid: ../req/default + - role: validation + uid: ../if/default + - check: | + T_step_eq_u32( ${step}, RTEMS_NO_TIMESLICE, 0 ); + description: | + Check that RTEMS_NO_TIMESLICE is equal to zero. + links: + - role: validation + uid: ../req/default + - role: validation + uid: ../if/no-timeslice + - check: | + T_step_eq_u32( ${step}, RTEMS_PREEMPT, 0 ); + description: | + Check that RTEMS_PREEMPT is equal to zero. + links: + - role: validation + uid: ../req/default + - role: validation + uid: ../if/preempt + description: | + Validate the default task mode constants. + links: [] +- action: | + /* No action */ + checks: + - check: | + T_step_eq_u32( + ${step}, + RTEMS_ASR_MASK & RTEMS_ALL_MODE_MASKS, + RTEMS_ASR_MASK + ); + description: | + Check that the bitwise and of RTEMS_ASR_MASK and RTEMS_ALL_MODE_MASKS is + equal to RTEMS_ASR_MASK. + links: + - role: validation + uid: ../req/masks-all + - role: validation + uid: ../if/asr-mask + - check: | + T_step_eq_u32( + ${step}, + RTEMS_PREEMPT_MASK & RTEMS_ALL_MODE_MASKS, + RTEMS_PREEMPT_MASK + ); + description: | + Check that the bitwise and of RTEMS_PREEMPT_MASK and RTEMS_ALL_MODE_MASKS + is equal to RTEMS_PREEMPT_MASK. + links: + - role: validation + uid: ../req/masks-all + - role: validation + uid: ../if/preempt-mask + - check: | + T_step_eq_u32( + ${step}, + RTEMS_TIMESLICE_MASK & RTEMS_ALL_MODE_MASKS, + RTEMS_TIMESLICE_MASK + ); + description: | + Check that the bitwise and of RTEMS_TIMESLICE_MASK and + RTEMS_ALL_MODE_MASKS is equal to RTEMS_TIMESLICE_MASK. + links: + - role: validation + uid: ../req/masks-all + - role: validation + uid: ../if/timeslice-mask + - check: | + T_step_eq_u32( + ${step}, + RTEMS_INTERRUPT_MASK & RTEMS_ALL_MODE_MASKS, + RTEMS_INTERRUPT_MASK + ); + description: | + Check that the bitwise and of RTEMS_INTERRUPT_MASK and + RTEMS_ALL_MODE_MASKS is equal to RTEMS_INTERRUPT_MASK. + links: + - role: validation + uid: ../req/masks-all + - role: validation + uid: ../if/interrupt-mask + description: | + Validate RTEMS_ALL_MODE_MASKS. + links: [] +- action: | + /* No action */ + checks: + - check: | + T_step_true( ${step}, IsPowerOfTwo( RTEMS_ASR_MASK ) ); + description: | + Check that RTEMS_ASR_MASK is a power of two representable as an integer + of type rtems_mode. + links: + - role: validation + uid: ../req/masks + - role: validation + uid: ../if/asr-mask + - check: | + T_step_true( ${step}, IsPowerOfTwo( RTEMS_PREEMPT_MASK ) ); + description: | + Check that RTEMS_PREEMPT_MASK is a power of two representable as an + integer of type rtems_mode. + links: + - role: validation + uid: ../req/masks + - role: validation + uid: ../if/preempt-mask + - check: | + T_step_true( ${step}, IsPowerOfTwo( RTEMS_TIMESLICE_MASK ) ); + description: | + Check that RTEMS_TIMESLICE_MASK is a power of two representable as an + integer of type rtems_mode. + links: + - role: validation + uid: ../req/masks + - role: validation + uid: ../if/timeslice-mask + description: | + Validate the task mode mask constants except RTEMS_INTERRUPT_MASK. + links: [] +- action: | + modes = 0; + modes |= 0xff; + modes |= RTEMS_ASR_MASK; + modes |= RTEMS_PREEMPT_MASK; + modes |= RTEMS_TIMESLICE_MASK; + checks: + - check: | + T_step_eq_int( ${step}, PopCount( modes ), 11 ); + description: | + Check that the count of set bits in the calculated value is equal to the + count of task mode mask constants except RTEMS_INTERRUPT_MASK plus eight. + Since each task mode mask constants except RTEMS_INTERRUPT_MASK is a + power of two and the bitwise and of 0xff and RTEMS_INTERRUPT_MASK is + equal to RTEMS_INTERRUPT_MASK this proves that each constant and 0xff has + a unique value. + links: + - role: validation + uid: ../req/unique + - role: validation + uid: ../if/asr-mask + - role: validation + uid: ../if/preempt-mask + - role: validation + uid: ../if/timeslice-mask + description: | + Calculate the bitwise or of all task mode mask constants and 0xff. + links: [] +test-brief: | + Tests the task mode constants and function-like macros of the Classic API. +test-description: null +test-epilogue: null +test-fixture: null +test-header: null +test-includes: +- rtems.h +test-local-includes: [] +test-prologue: | + rtems_mode modes; +test-support: | + static bool IsPowerOfTwo( rtems_mode mode ) + { + return mode != 0 && ( mode & ( mode - 1 ) ) == 0; + } + + static int PopCount( rtems_mode modes ) + { + int count; + + count = 0; + + while ( modes != 0 ) { + ++count; + modes &= modes - 1; + } + + return count; + } +test-target: testsuites/validation/tc-modes.c +type: test-case diff --git a/spec/rtems/mp/if/announce.yml b/spec/rtems/mp/if/announce.yml new file mode 100644 index 00000000..c137015e --- /dev/null +++ b/spec/rtems/mp/if/announce.yml @@ -0,0 +1,25 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: + body: null + params: [] + return: void + variants: [] +description: '%' +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_multiprocessing_announce +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/mp/if/group.yml b/spec/rtems/mp/if/group.yml new file mode 100644 index 00000000..8cdd031d --- /dev/null +++ b/spec/rtems/mp/if/group.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + The Multiprocessing Manager provides support for heterogeneous + multiprocessing systems based on message passing in a network of + multiprocessing nodes. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +description: null +enabled-by: true +identifier: RTEMSAPIClassicMP +interface-type: group +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: ../../if/group +name: Multiprocessing Manager +text: | + The Classic API shall provide an interface to the Multiprocessing Manager. +type: interface diff --git a/spec/rtems/mp/if/header.yml b/spec/rtems/mp/if/header.yml new file mode 100644 index 00000000..e5198750 --- /dev/null +++ b/spec/rtems/mp/if/header.yml @@ -0,0 +1,12 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: This header file defines the Multiprocessing Manager API. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +interface-type: header-file +links: +- role: interface-placement + uid: /if/domain +path: rtems/rtems/mp.h +prefix: cpukit/include +type: interface diff --git a/spec/rtems/object/if/api-class-information.yml b/spec/rtems/object/if/api-class-information.yml new file mode 100644 index 00000000..06c7ac82 --- /dev/null +++ b/spec/rtems/object/if/api-class-information.yml @@ -0,0 +1,58 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: +- default: + brief: | + This member is + definition: ${../../type/if/id:/name} ${.:name} + description: '%' + kind: member + name: minimum_id + variants: [] +- default: + brief: | + This member is + definition: ${../../type/if/id:/name} ${.:name} + description: '%' + kind: member + name: maximum_id + variants: [] +- default: + brief: | + This member is + definition: ${/c/if/uint32_t:/name} ${.:name} + description: '%' + kind: member + name: maximum + variants: [] +- default: + brief: | + This member is + definition: ${/c/if/bool:/name} ${.:name} + description: '%' + kind: member + name: auto_extend + variants: [] +- default: + brief: | + This member is + definition: ${/c/if/uint32_t:/name} ${.:name} + description: '%' + kind: member + name: unallocated + variants: [] +definition-kind: typedef-only +description: null +enabled-by: true +interface-type: struct +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_object_api_class_information +notes: null +type: interface diff --git a/spec/rtems/object/if/api-maximum-class.yml b/spec/rtems/object/if/api-maximum-class.yml new file mode 100644 index 00000000..bc8de4c9 --- /dev/null +++ b/spec/rtems/object/if/api-maximum-class.yml @@ -0,0 +1,30 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - int ${.:/params[0]/name} + return: int + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_object_api_maximum_class +notes: null +params: +- description: '%' + dir: null + name: api +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/object/if/api-minimum-class.yml b/spec/rtems/object/if/api-minimum-class.yml new file mode 100644 index 00000000..f8912bb9 --- /dev/null +++ b/spec/rtems/object/if/api-minimum-class.yml @@ -0,0 +1,30 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - int ${.:/params[0]/name} + return: int + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_object_api_minimum_class +notes: null +params: +- description: '%' + dir: null + name: api +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/object/if/build-id.yml b/spec/rtems/object/if/build-id.yml new file mode 100644 index 00000000..482bd8fb --- /dev/null +++ b/spec/rtems/object/if/build-id.yml @@ -0,0 +1,36 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: | + ${/score/object/if/build-id:/name}( ${.:/params[0]/name}, ${.:/params[1]/name}, ${.:/params[2]/name}, ${.:/params[3]/name} ) + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_build_id +notes: null +params: +- description: '%' + dir: null + name: _api +- description: '%' + dir: null + name: _class +- description: '%' + dir: null + name: _node +- description: '%' + dir: null + name: _index +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/object/if/build-name.yml b/spec/rtems/object/if/build-name.yml new file mode 100644 index 00000000..df16d81e --- /dev/null +++ b/spec/rtems/object/if/build-name.yml @@ -0,0 +1,36 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: | + ${/score/object/if/build-name:/name}( ${.:/params[0]/name}, ${.:/params[1]/name}, ${.:/params[2]/name}, ${.:/params[3]/name} ) + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_build_name +notes: null +params: +- description: '%' + dir: null + name: _C1 +- description: '%' + dir: null + name: _C2 +- description: '%' + dir: null + name: _C3 +- description: '%' + dir: null + name: _C4 +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/object/if/get-api-class-name.yml b/spec/rtems/object/if/get-api-class-name.yml new file mode 100644 index 00000000..4a7948bd --- /dev/null +++ b/spec/rtems/object/if/get-api-class-name.yml @@ -0,0 +1,34 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - int ${.:/params[0]/name} + - int ${.:/params[1]/name} + return: const char * + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_object_get_api_class_name +notes: null +params: +- description: '%' + dir: null + name: the_api +- description: '%' + dir: null + name: the_class +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/object/if/get-api-name.yml b/spec/rtems/object/if/get-api-name.yml new file mode 100644 index 00000000..5baeab0f --- /dev/null +++ b/spec/rtems/object/if/get-api-name.yml @@ -0,0 +1,30 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - int ${.:/params[0]/name} + return: const char * + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_object_get_api_name +notes: null +params: +- description: '%' + dir: null + name: api +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/object/if/get-class-information.yml b/spec/rtems/object/if/get-class-information.yml new file mode 100644 index 00000000..688ee2ff --- /dev/null +++ b/spec/rtems/object/if/get-class-information.yml @@ -0,0 +1,38 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - int ${.:/params[0]/name} + - int ${.:/params[1]/name} + - ${api-class-information:/name} *${.:/params[2]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_object_get_class_information +notes: null +params: +- description: '%' + dir: null + name: the_api +- description: '%' + dir: null + name: the_class +- description: '%' + dir: null + name: info +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/object/if/get-classic-name.yml b/spec/rtems/object/if/get-classic-name.yml new file mode 100644 index 00000000..140bc6db --- /dev/null +++ b/spec/rtems/object/if/get-classic-name.yml @@ -0,0 +1,34 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + - ${../../type/if/name:/name} *${.:/params[1]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_object_get_classic_name +notes: null +params: +- description: '%' + dir: null + name: id +- description: '%' + dir: null + name: name +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/object/if/get-local-node.yml b/spec/rtems/object/if/get-local-node.yml new file mode 100644 index 00000000..2f894085 --- /dev/null +++ b/spec/rtems/object/if/get-local-node.yml @@ -0,0 +1,27 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1989, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: | + return ${/score/object/if/local-node:/name}; + params: [] + return: ${/c/if/uint16_t:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_object_get_local_node +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/object/if/get-name.yml b/spec/rtems/object/if/get-name.yml new file mode 100644 index 00000000..cd4a4fcb --- /dev/null +++ b/spec/rtems/object/if/get-name.yml @@ -0,0 +1,38 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + - ${/c/if/size_t:/name} ${.:/params[1]/name} + - char *${.:/params[2]/name} + return: char * + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_object_get_name +notes: null +params: +- description: '%' + dir: null + name: id +- description: '%' + dir: null + name: length +- description: '%' + dir: null + name: name +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/object/if/group.yml b/spec/rtems/object/if/group.yml new file mode 100644 index 00000000..ab5aee42 --- /dev/null +++ b/spec/rtems/object/if/group.yml @@ -0,0 +1,22 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + RTEMS provides a collection of services to assist in the management and usage + of the objects created and utilized via other managers. These services + assist in the manipulation of RTEMS objects independent of the API used to + create them. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +description: null +enabled-by: true +identifier: RTEMSAPIClassicObject +interface-type: group +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: ../../if/group +name: Object Services +text: | + The Classic API shall provide an interface to the Object Services. +type: interface diff --git a/spec/rtems/object/if/header.yml b/spec/rtems/object/if/header.yml new file mode 100644 index 00000000..317bf7f8 --- /dev/null +++ b/spec/rtems/object/if/header.yml @@ -0,0 +1,12 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: This header file defines the Object Manager API. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +interface-type: header-file +links: +- role: interface-placement + uid: /if/domain +path: rtems/rtems/object.h +prefix: cpukit/include +type: interface diff --git a/spec/rtems/object/if/id-api-maximum-class.yml b/spec/rtems/object/if/id-api-maximum-class.yml new file mode 100644 index 00000000..78003b22 --- /dev/null +++ b/spec/rtems/object/if/id-api-maximum-class.yml @@ -0,0 +1,30 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - int ${.:/params[0]/name} + return: int + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_object_id_api_maximum_class +notes: null +params: +- description: '%' + dir: null + name: api +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/object/if/id-api-maximum.yml b/spec/rtems/object/if/id-api-maximum.yml new file mode 100644 index 00000000..ab889a59 --- /dev/null +++ b/spec/rtems/object/if/id-api-maximum.yml @@ -0,0 +1,23 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/object/if/apis-last:/name} + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_object_id_api_maximum +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/object/if/id-api-minimum.yml b/spec/rtems/object/if/id-api-minimum.yml new file mode 100644 index 00000000..cbe6a0b1 --- /dev/null +++ b/spec/rtems/object/if/id-api-minimum.yml @@ -0,0 +1,23 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/object/if/internal-api:/name} + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_object_id_api_minimum +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/object/if/id-final-index.yml b/spec/rtems/object/if/id-final-index.yml new file mode 100644 index 00000000..ba575fc8 --- /dev/null +++ b/spec/rtems/object/if/id-final-index.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/object/if/id-final-index:/name} + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_OBJECT_ID_FINAL_INDEX +notes: null +type: interface diff --git a/spec/rtems/object/if/id-final.yml b/spec/rtems/object/if/id-final.yml new file mode 100644 index 00000000..5a2b8201 --- /dev/null +++ b/spec/rtems/object/if/id-final.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/object/if/id-final:/name} + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_OBJECT_ID_FINAL +notes: null +type: interface diff --git a/spec/rtems/object/if/id-get-api.yml b/spec/rtems/object/if/id-get-api.yml new file mode 100644 index 00000000..b45a51ae --- /dev/null +++ b/spec/rtems/object/if/id-get-api.yml @@ -0,0 +1,26 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/object/if/get-api:/name}( ${.:/params[0]/name} ) + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_object_id_get_api +notes: null +params: +- description: '%' + dir: null + name: _id +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/object/if/id-get-class.yml b/spec/rtems/object/if/id-get-class.yml new file mode 100644 index 00000000..d828ae48 --- /dev/null +++ b/spec/rtems/object/if/id-get-class.yml @@ -0,0 +1,26 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/object/if/get-class:/name}( ${.:/params[0]/name} ) + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_object_id_get_class +notes: null +params: +- description: '%' + dir: null + name: _id +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/object/if/id-get-index.yml b/spec/rtems/object/if/id-get-index.yml new file mode 100644 index 00000000..41e13c72 --- /dev/null +++ b/spec/rtems/object/if/id-get-index.yml @@ -0,0 +1,26 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/object/if/get-index:/name}( ${.:/params[0]/name} ) + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_object_id_get_index +notes: null +params: +- description: '%' + dir: null + name: _id +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/object/if/id-get-node.yml b/spec/rtems/object/if/id-get-node.yml new file mode 100644 index 00000000..3b090b02 --- /dev/null +++ b/spec/rtems/object/if/id-get-node.yml @@ -0,0 +1,26 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/object/if/get-node:/name}( ${.:/params[0]/name} ) + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_object_id_get_node +notes: null +params: +- description: '%' + dir: null + name: _id +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/object/if/id-initial-index.yml b/spec/rtems/object/if/id-initial-index.yml new file mode 100644 index 00000000..d28cb502 --- /dev/null +++ b/spec/rtems/object/if/id-initial-index.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/object/if/id-initial-index:/name} + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_OBJECT_ID_INITIAL_INDEX +notes: null +type: interface diff --git a/spec/rtems/object/if/id-initial.yml b/spec/rtems/object/if/id-initial.yml new file mode 100644 index 00000000..25a640f2 --- /dev/null +++ b/spec/rtems/object/if/id-initial.yml @@ -0,0 +1,33 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: | + ${/score/object/if/id-initial:/name}( ${.:/params[0]/name}, ${.:/params[1]/name}, ${.:/params[2]/name} ) + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_OBJECT_ID_INITIAL +notes: null +params: +- description: '%' + dir: null + name: _api +- description: '%' + dir: null + name: _class +- description: '%' + dir: null + name: _node +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/object/if/search-all-nodes.yml b/spec/rtems/object/if/search-all-nodes.yml new file mode 100644 index 00000000..5c880da9 --- /dev/null +++ b/spec/rtems/object/if/search-all-nodes.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/object/if/search-all-nodes:/name} + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_SEARCH_ALL_NODES +notes: null +type: interface diff --git a/spec/rtems/object/if/search-local-node.yml b/spec/rtems/object/if/search-local-node.yml new file mode 100644 index 00000000..66d10966 --- /dev/null +++ b/spec/rtems/object/if/search-local-node.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/object/if/search-local-nodes:/name} + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_SEARCH_LOCAL_NODE +notes: null +type: interface diff --git a/spec/rtems/object/if/search-other-nodes.yml b/spec/rtems/object/if/search-other-nodes.yml new file mode 100644 index 00000000..f64a725a --- /dev/null +++ b/spec/rtems/object/if/search-other-nodes.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/object/if/search-other-nodes:/name} + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_SEARCH_OTHER_NODES +notes: null +type: interface diff --git a/spec/rtems/object/if/set-name.yml b/spec/rtems/object/if/set-name.yml new file mode 100644 index 00000000..bfc874fa --- /dev/null +++ b/spec/rtems/object/if/set-name.yml @@ -0,0 +1,34 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + - const char *${.:/params[1]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_object_set_name +notes: null +params: +- description: '%' + dir: null + name: id +- description: '%' + dir: null + name: name +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/object/if/who-am-i.yml b/spec/rtems/object/if/who-am-i.yml new file mode 100644 index 00000000..4646762d --- /dev/null +++ b/spec/rtems/object/if/who-am-i.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/object/if/who-am-i:/name} + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_WHO_AM_I +notes: null +type: interface diff --git a/spec/rtems/option/if/default.yml b/spec/rtems/option/if/default.yml new file mode 100644 index 00000000..4b93d4c9 --- /dev/null +++ b/spec/rtems/option/if/default.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This option constant is the default option set. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_DEFAULT_OPTIONS +notes: null +type: interface diff --git a/spec/rtems/option/if/event-all.yml b/spec/rtems/option/if/event-all.yml new file mode 100644 index 00000000..da4a727f --- /dev/null +++ b/spec/rtems/option/if/event-all.yml @@ -0,0 +1,21 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This option constant indicates that the task wishes to wait until all events + of interest are available. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_EVENT_ALL +notes: null +type: interface diff --git a/spec/rtems/option/if/event-any.yml b/spec/rtems/option/if/event-any.yml new file mode 100644 index 00000000..6562f06c --- /dev/null +++ b/spec/rtems/option/if/event-any.yml @@ -0,0 +1,21 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This option constant indicates that the task wishes to wait until any events + of interest are available. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000002' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_EVENT_ANY +notes: null +type: interface diff --git a/spec/rtems/option/if/group.yml b/spec/rtems/option/if/group.yml new file mode 100644 index 00000000..be8a7c4e --- /dev/null +++ b/spec/rtems/option/if/group.yml @@ -0,0 +1,18 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This group contains the Classic API directive options. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +description: null +enabled-by: true +identifier: RTEMSAPIClassicOptions +interface-type: group +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: ../../if/group +name: Directive Options +text: | + The Classic API shall provide an interface to directive options. +type: interface diff --git a/spec/rtems/option/if/header.yml b/spec/rtems/option/if/header.yml new file mode 100644 index 00000000..ee4d2342 --- /dev/null +++ b/spec/rtems/option/if/header.yml @@ -0,0 +1,12 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: This header file defines options provided by the API. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +interface-type: header-file +links: +- role: interface-placement + uid: /if/domain +path: rtems/rtems/options.h +prefix: cpukit/include +type: interface diff --git a/spec/rtems/option/if/no-wait.yml b/spec/rtems/option/if/no-wait.yml new file mode 100644 index 00000000..504128c5 --- /dev/null +++ b/spec/rtems/option/if/no-wait.yml @@ -0,0 +1,22 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This option constant indicates that the task is to not wait on the resource. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000001' + variants: [] +description: | + If the resource is not available, then directives shall return immediately + with a status to indicate unsatisfied. +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_NO_WAIT +notes: null +type: interface diff --git a/spec/rtems/option/if/option.yml b/spec/rtems/option/if/option.yml new file mode 100644 index 00000000..a15781ed --- /dev/null +++ b/spec/rtems/option/if/option.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This type defines the control block used to manage option sets. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1989, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/c/if/uint32_t:/name} ${.:/name} + variants: [] +description: null +enabled-by: true +interface-type: typedef +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_option +notes: null +type: interface diff --git a/spec/rtems/option/if/wait.yml b/spec/rtems/option/if/wait.yml new file mode 100644 index 00000000..940d117f --- /dev/null +++ b/spec/rtems/option/if/wait.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This option constant indicates that the task is to wait on resource. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_WAIT +notes: null +type: interface diff --git a/spec/rtems/option/req/bit-set.yml b/spec/rtems/option/req/bit-set.yml new file mode 100644 index 00000000..2b7b8733 --- /dev/null +++ b/spec/rtems/option/req/bit-set.yml @@ -0,0 +1,15 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +links: +- role: requirement-refinement + uid: ../if/group +non-functional-type: interface +rationale: null +references: [] +requirement-type: non-functional +text: | + Each non-default directive option constant shall be a power of two + representable as an integer of type ${../if/option}. +type: requirement diff --git a/spec/rtems/option/req/default.yml b/spec/rtems/option/req/default.yml new file mode 100644 index 00000000..019b775a --- /dev/null +++ b/spec/rtems/option/req/default.yml @@ -0,0 +1,14 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +links: +- role: requirement-refinement + uid: ../if/group +non-functional-type: interface +rationale: null +references: [] +requirement-type: non-functional +text: | + Each default directive option constant shall have a value of zero. +type: requirement diff --git a/spec/rtems/option/req/unique.yml b/spec/rtems/option/req/unique.yml new file mode 100644 index 00000000..ffaafc14 --- /dev/null +++ b/spec/rtems/option/req/unique.yml @@ -0,0 +1,14 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +links: +- role: requirement-refinement + uid: ../if/group +non-functional-type: interface +rationale: null +references: [] +requirement-type: non-functional +text: | + The non-default directive option constants shall have unique values. +type: requirement diff --git a/spec/rtems/option/val/options.yml b/spec/rtems/option/val/options.yml new file mode 100644 index 00000000..7efa7885 --- /dev/null +++ b/spec/rtems/option/val/options.yml @@ -0,0 +1,117 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +links: [] +test-actions: +- action: | + /* No action */ + checks: + - check: | + T_step_true( ${step}, IsPowerOfTwo( RTEMS_EVENT_ANY ) ); + description: | + Check that RTEMS_EVENT_ANY is a power of two. + links: + - role: validation + uid: ../req/bit-set + - role: validation + uid: ../if/event-any + - check: | + T_step_true( ${step}, IsPowerOfTwo( RTEMS_NO_WAIT ) ); + description: | + Check that RTEMS_NO_WAIT is a power of two. + links: + - role: validation + uid: ../req/bit-set + - role: validation + uid: ../if/no-wait + description: | + Validate the non-default option constants. + links: [] +- action: | + /* No action */ + checks: + - check: | + T_step_eq_u32( ${step}, RTEMS_DEFAULT_OPTIONS, 0 ); + description: | + Check that RTEMS_DEFAULT_OPTIONS is equal to zero. + links: + - role: validation + uid: ../req/default + - role: validation + uid: ../if/default + - check: | + T_step_eq_u32( ${step}, RTEMS_EVENT_ALL, 0 ); + description: | + Check that RTEMS_EVENT_ALL is equal to zero. + links: + - role: validation + uid: ../req/default + - role: validation + uid: ../if/event-all + - check: | + T_step_eq_u32( ${step}, RTEMS_WAIT, 0 ); + description: | + Check that RTEMS_WAIT is equal to zero. + links: + - role: validation + uid: ../req/default + - role: validation + uid: ../if/wait + description: | + Validate the default option constants. + links: [] +- action: | + options = 0; + options |= RTEMS_EVENT_ANY; + options |= RTEMS_NO_WAIT; + checks: + - check: | + T_step_eq_int( ${step}, PopCount( options ), 2 ); + description: | + Check that the count of set bits in the calculated value is equal to the + count of non-default option constants. Since each non-default option + constant is a power of two, this proves that each constant has a unique + value. + links: + - role: validation + uid: ../req/unique + - role: validation + uid: ../if/event-any + - role: validation + uid: ../if/no-wait + description: | + Calculate the bitwise or of all non-default option constants. + links: [] +test-brief: | + Tests the option constants of the Classic API. +test-description: null +test-epilogue: null +test-fixture: null +test-header: null +test-includes: +- rtems.h +test-local-includes: [] +test-prologue: | + rtems_option options; +test-support: | + static bool IsPowerOfTwo( rtems_option option ) + { + return option != 0 && ( option & ( option - 1 ) ) == 0; + } + + static int PopCount( rtems_option options ) + { + int count; + + count = 0; + + while ( options != 0 ) { + ++count; + options &= options - 1; + } + + return count; + } +test-target: testsuites/validation/tc-options.c +type: test-case diff --git a/spec/rtems/part/if/create.yml b/spec/rtems/part/if/create.yml new file mode 100644 index 00000000..7a9a7171 --- /dev/null +++ b/spec/rtems/part/if/create.yml @@ -0,0 +1,50 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/name:/name} ${.:/params[0]/name} + - void *${.:/params[1]/name} + - ${/c/if/uintptr_t:/name} ${.:/params[2]/name} + - ${/c/if/size_t:/name} ${.:/params[3]/name} + - ${../../attr/if/attribute:/name} ${.:/params[4]/name} + - ${../../type/if/id:/name} *${.:/params[5]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_partition_create +notes: null +params: +- description: '%' + dir: null + name: name +- description: '%' + dir: null + name: starting_address +- description: '%' + dir: null + name: length +- description: '%' + dir: null + name: buffer_size +- description: '%' + dir: null + name: attribute_set +- description: '%' + dir: null + name: id +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/part/if/delete.yml b/spec/rtems/part/if/delete.yml new file mode 100644 index 00000000..db63cebb --- /dev/null +++ b/spec/rtems/part/if/delete.yml @@ -0,0 +1,30 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_partition_delete +notes: null +params: +- description: '%' + dir: null + name: id +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/part/if/get-buffer.yml b/spec/rtems/part/if/get-buffer.yml new file mode 100644 index 00000000..691345ed --- /dev/null +++ b/spec/rtems/part/if/get-buffer.yml @@ -0,0 +1,34 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + - void **${.:/params[1]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_partition_get_buffer +notes: null +params: +- description: '%' + dir: null + name: id +- description: '%' + dir: null + name: buffer +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/part/if/group.yml b/spec/rtems/part/if/group.yml new file mode 100644 index 00000000..ae0d0365 --- /dev/null +++ b/spec/rtems/part/if/group.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + The Partition Manager provides facilities to dynamically allocate memory in + fixed-size units. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +description: null +enabled-by: true +identifier: RTEMSAPIClassicPart +interface-type: group +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: ../../if/group +name: Partition Manager +text: | + The Classic API shall provide an interface to the Partition Manager. +type: interface diff --git a/spec/rtems/part/if/header.yml b/spec/rtems/part/if/header.yml new file mode 100644 index 00000000..040ebb1c --- /dev/null +++ b/spec/rtems/part/if/header.yml @@ -0,0 +1,12 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: This header file defines the Partition Manager API. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +interface-type: header-file +links: +- role: interface-placement + uid: /if/domain +path: rtems/rtems/part.h +prefix: cpukit/include +type: interface diff --git a/spec/rtems/part/if/ident.yml b/spec/rtems/part/if/ident.yml new file mode 100644 index 00000000..d4e0bb1c --- /dev/null +++ b/spec/rtems/part/if/ident.yml @@ -0,0 +1,86 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Identifies a partition object by the specified object name. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/name:/name} ${.:/params[0]/name} + - ${/c/if/uint32_t:/name} ${.:/params[1]/name} + - ${../../type/if/id:/name} *${.:/params[2]/name} + return: ${../../status/if/code:/name} + variants: [] +description: | + This directive obtains the partition identifier associated with the partition + name specified in ``${.:/params[0]/name}``. + + The node to search is specified in ``${.:/params[1]/name}``. It shall be + + * a valid node number, + + * the constant ${../../object/if/search-all-nodes:/name} to search in all nodes, + + * the constant ${../../object/if/search-local-node:/name} to search in the local + node only, or + + * the constant ${../../object/if/search-other-nodes:/name} to search in all nodes + except the local node. +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_partition_ident +notes: | + If the partition name is not unique, then the partition identifier will match + the first partition with that name in the search order. However, this + partition identifier is not guaranteed to correspond to the desired + partition. The partition identifier is used with other partition related + directives to access the partition. + + If node is ${../../object/if/search-all-nodes:/name}, all nodes are searched with + the local node being searched first. All other nodes are searched with the + lowest numbered node searched first. + + If node is a valid node number which does not represent the local node, then + only the partitions exported by the designated node are searched. + + This directive does not generate activity on remote nodes. It accesses only + the local copy of the global object table. +params: +- description: is the object name to look up. + dir: null + name: name +- description: is the node or node set to search for a matching object. + dir: null + name: node +- description: | + is the pointer to an object identifier variable. The object identifier of + an object with the specified name will be stored in this variable, in case + of a successful operation. + dir: out + name: id +return: + return: null + return-values: + - description: | + The requested operation was successful. + value: ${../../status/if/successful:/name} + - description: | + The ${.:/params[2]/name} parameter was ${/c/if/null:/name}. + value: ${../../status/if/invalid-address:/name} + - description: | + The ${.:/params[0]/name} parameter was 0. + value: ${../../status/if/invalid-name:/name} + - description: | + There was no object with the specified name on the specified nodes. + value: ${../../status/if/invalid-name:/name} + - description: | + In multiprocessing configurations, the specified node was invalid. + value: ${../../status/if/invalid-node:/name} +type: interface diff --git a/spec/rtems/part/if/return-buffer.yml b/spec/rtems/part/if/return-buffer.yml new file mode 100644 index 00000000..8bc791e6 --- /dev/null +++ b/spec/rtems/part/if/return-buffer.yml @@ -0,0 +1,34 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + - void *${.:/params[1]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_partition_return_buffer +notes: null +params: +- description: '%' + dir: null + name: id +- description: '%' + dir: null + name: buffer +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/part/req/ident.yml b/spec/rtems/part/req/ident.yml new file mode 100644 index 00000000..b6a63f0d --- /dev/null +++ b/spec/rtems/part/req/ident.yml @@ -0,0 +1,15 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +functional-type: function +links: +- role: interface-function + uid: ../if/ident +rationale: null +references: [] +requirement-type: functional +text: | + The ${../if/ident:/name} directive shall identify an Classic API + partition class object by its name as specified by ${../req/ident}. +type: requirement diff --git a/spec/rtems/part/val/ident.yml b/spec/rtems/part/val/ident.yml new file mode 100644 index 00000000..4af46bea --- /dev/null +++ b/spec/rtems/part/val/ident.yml @@ -0,0 +1,51 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +links: +- role: validation + uid: ../req/ident +test-actions: +- action: | + ${../../req/ident:/test-run}( + id_local_object, + ClassicPartIdentAction + ); + checks: [] + description: | + Run the generic object identification tests for Classic API partition class + objects defined by ${../../req/ident}. + links: [] +test-brief: Test the ${../if/ident:/name} directive. +test-description: null +test-epilogue: null +test-fixture: null +test-header: null +test-includes: [] +test-local-includes: +- tr-object-ident.h +test-prologue: | + static long area[32]; + rtems_status_code sc; + rtems_id id_local_object; + + sc = rtems_partition_create( + ClassicObjectIdentName, + area, + sizeof( area ), + sizeof( area ), + RTEMS_DEFAULT_ATTRIBUTES, + &id_local_object + ); + T_assert_rsc_success( sc ); +test-support: | + static rtems_status_code ClassicPartIdentAction( + rtems_name name, + uint32_t node, + rtems_id *id + ) + { + return rtems_partition_ident( name, node, id ); + } +test-target: testsuites/validation/tc-part-ident.c +type: test-case diff --git a/spec/rtems/ratemon/if/active.yml b/spec/rtems/ratemon/if/active.yml new file mode 100644 index 00000000..845a0954 --- /dev/null +++ b/spec/rtems/ratemon/if/active.yml @@ -0,0 +1,15 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: null + variants: [] +description: null +enabled-by: true +interface-type: enumerator +links: [] +name: RATE_MONOTONIC_ACTIVE +notes: null +type: interface diff --git a/spec/rtems/ratemon/if/cancel.yml b/spec/rtems/ratemon/if/cancel.yml new file mode 100644 index 00000000..10dd35fa --- /dev/null +++ b/spec/rtems/ratemon/if/cancel.yml @@ -0,0 +1,30 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_rate_monotonic_cancel +notes: null +params: +- description: '%' + dir: null + name: id +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/ratemon/if/create.yml b/spec/rtems/ratemon/if/create.yml new file mode 100644 index 00000000..b883e19a --- /dev/null +++ b/spec/rtems/ratemon/if/create.yml @@ -0,0 +1,34 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/name:/name} ${.:/params[0]/name} + - ${../../type/if/id:/name} *${.:/params[1]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_rate_monotonic_create +notes: null +params: +- description: '%' + dir: null + name: name +- description: '%' + dir: null + name: id +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/ratemon/if/delete.yml b/spec/rtems/ratemon/if/delete.yml new file mode 100644 index 00000000..4b648e14 --- /dev/null +++ b/spec/rtems/ratemon/if/delete.yml @@ -0,0 +1,30 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_rate_monotonic_delete +notes: null +params: +- description: '%' + dir: null + name: id +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/ratemon/if/expired.yml b/spec/rtems/ratemon/if/expired.yml new file mode 100644 index 00000000..4f3c5dfb --- /dev/null +++ b/spec/rtems/ratemon/if/expired.yml @@ -0,0 +1,15 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: null + variants: [] +description: null +enabled-by: true +interface-type: enumerator +links: [] +name: RATE_MONOTONIC_EXPIRED +notes: null +type: interface diff --git a/spec/rtems/ratemon/if/get-statistics.yml b/spec/rtems/ratemon/if/get-statistics.yml new file mode 100644 index 00000000..95f70393 --- /dev/null +++ b/spec/rtems/ratemon/if/get-statistics.yml @@ -0,0 +1,34 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + - ${period-statistics:/name} *${.:/params[1]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_rate_monotonic_get_statistics +notes: null +params: +- description: '%' + dir: null + name: id +- description: '%' + dir: null + name: statistics +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/ratemon/if/get-status.yml b/spec/rtems/ratemon/if/get-status.yml new file mode 100644 index 00000000..2f2ddb34 --- /dev/null +++ b/spec/rtems/ratemon/if/get-status.yml @@ -0,0 +1,34 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + - ${period-status:/name} *${.:/params[1]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_rate_monotonic_get_status +notes: null +params: +- description: '%' + dir: null + name: id +- description: '%' + dir: null + name: status +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/ratemon/if/group.yml b/spec/rtems/ratemon/if/group.yml new file mode 100644 index 00000000..640247af --- /dev/null +++ b/spec/rtems/ratemon/if/group.yml @@ -0,0 +1,22 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + The Rate-Monotonic Manager provides facilities to implement tasks which + execute in a periodic fashion. Critically, it also gathers information about + the execution of those periods and can provide important statistics to the + user which can be used to analyze and tune the application. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +description: null +enabled-by: true +identifier: RTEMSAPIClassicRatemon +interface-type: group +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: ../../if/group +name: Rate-Monotonic Manager +text: | + The Classic API shall provide an interface to the Rate-Monotonic Manager. +type: interface diff --git a/spec/rtems/ratemon/if/header.yml b/spec/rtems/ratemon/if/header.yml new file mode 100644 index 00000000..a9e6f957 --- /dev/null +++ b/spec/rtems/ratemon/if/header.yml @@ -0,0 +1,12 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: This header file defines the Rate-Monotonic Manager API. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +interface-type: header-file +links: +- role: interface-placement + uid: /if/domain +path: rtems/rtems/ratemon.h +prefix: cpukit/include +type: interface diff --git a/spec/rtems/ratemon/if/ident.yml b/spec/rtems/ratemon/if/ident.yml new file mode 100644 index 00000000..43d10a9e --- /dev/null +++ b/spec/rtems/ratemon/if/ident.yml @@ -0,0 +1,60 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Identifies a period object by the specified object name. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/name:/name} ${.:/params[0]/name} + - ${../../type/if/id:/name} *${.:/params[1]/name} + return: ${../../status/if/code:/name} + variants: [] +description: | + This directive obtains the period identifier associated with the period name + specified in ``${.:/params[0]/name}``. +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_rate_monotonic_ident +notes: | + If the period name is not unique, then the period identifier will match the + first period with that name in the search order. However, this period + identifier is not guaranteed to correspond to the desired period. The period + identifier is used with other rate monotonic related directives to access the + period. + + The objects are searched from lowest to the highest index. Only the local + node is searched. +params: +- description: is the object name to look up. + dir: null + name: name +- description: | + is the pointer to an object identifier variable. The object identifier of + an object with the specified name will be stored in this variable, in case + of a successful operation. + dir: out + name: id +return: + return: null + return-values: + - description: | + The requested operation was successful. + value: ${../../status/if/successful:/name} + - description: | + The ${.:/params[1]/name} parameter was ${/c/if/null:/name}. + value: ${../../status/if/invalid-address:/name} + - description: | + The ${.:/params[0]/name} parameter was 0. + value: ${../../status/if/invalid-name:/name} + - description: | + There was no object with the specified name on the local node. + value: ${../../status/if/invalid-name:/name} +type: interface diff --git a/spec/rtems/ratemon/if/inactive.yml b/spec/rtems/ratemon/if/inactive.yml new file mode 100644 index 00000000..8608f7c0 --- /dev/null +++ b/spec/rtems/ratemon/if/inactive.yml @@ -0,0 +1,15 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: null + variants: [] +description: null +enabled-by: true +interface-type: enumerator +links: [] +name: RATE_MONOTONIC_INACTIVE +notes: null +type: interface diff --git a/spec/rtems/ratemon/if/period-states.yml b/spec/rtems/ratemon/if/period-states.yml new file mode 100644 index 00000000..1b06a560 --- /dev/null +++ b/spec/rtems/ratemon/if/period-states.yml @@ -0,0 +1,23 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition-kind: typedef-only +description: null +enabled-by: true +interface-type: enum +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +- role: interface-enumerator + uid: inactive +- role: interface-enumerator + uid: active +- role: interface-enumerator + uid: expired +name: rtems_rate_monotonic_period_states +notes: null +type: interface diff --git a/spec/rtems/ratemon/if/period-statistics.yml b/spec/rtems/ratemon/if/period-statistics.yml new file mode 100644 index 00000000..86343bb0 --- /dev/null +++ b/spec/rtems/ratemon/if/period-statistics.yml @@ -0,0 +1,82 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: +- default: + brief: | + This member is + definition: ${/c/if/uint32_t:/name} ${.:name} + description: '%' + kind: member + name: count + variants: [] +- default: + brief: | + This member is + definition: ${/c/if/uint32_t:/name} ${.:name} + description: '%' + kind: member + name: missed_count + variants: [] +- default: + brief: | + This member is + definition: ${/c/if/timespec:/name} ${.:name} + description: '%' + kind: member + name: min_cpu_time + variants: [] +- default: + brief: | + This member is + definition: ${/c/if/timespec:/name} ${.:name} + description: '%' + kind: member + name: max_cpu_time + variants: [] +- default: + brief: | + This member is + definition: ${/c/if/timespec:/name} ${.:name} + description: '%' + kind: member + name: total_cpu_time + variants: [] +- default: + brief: | + This member is + definition: ${/c/if/timespec:/name} ${.:name} + description: '%' + kind: member + name: min_wall_time + variants: [] +- default: + brief: | + This member is + definition: ${/c/if/timespec:/name} ${.:name} + description: '%' + kind: member + name: max_wall_time + variants: [] +- default: + brief: | + This member is + definition: ${/c/if/timespec:/name} ${.:name} + description: '%' + kind: member + name: total_wall_time + variants: [] +definition-kind: typedef-only +description: null +enabled-by: true +interface-type: struct +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_rate_monotonic_period_statistics +notes: null +type: interface diff --git a/spec/rtems/ratemon/if/period-status-define.yml b/spec/rtems/ratemon/if/period-status-define.yml new file mode 100644 index 00000000..77a08505 --- /dev/null +++ b/spec/rtems/ratemon/if/period-status-define.yml @@ -0,0 +1,21 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant is the interval passed to the ${period:/name} directive to + obtain status information. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/watchdog/if/no-timeout:/name} + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_PERIOD_STATUS +notes: null +type: interface diff --git a/spec/rtems/ratemon/if/period-status.yml b/spec/rtems/ratemon/if/period-status.yml new file mode 100644 index 00000000..59b1bc09 --- /dev/null +++ b/spec/rtems/ratemon/if/period-status.yml @@ -0,0 +1,58 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: +- default: + brief: | + This member is + definition: ${../../type/if/id:/name} ${.:name} + description: '%' + kind: member + name: owner + variants: [] +- default: + brief: | + This member is + definition: ${period-states:/name} ${.:name} + description: '%' + kind: member + name: state + variants: [] +- default: + brief: | + This member is + definition: ${/c/if/timespec:/name} ${.:name} + description: '%' + kind: member + name: since_last_period + variants: [] +- default: + brief: | + This member is + definition: ${/c/if/timespec:/name} ${.:name} + description: '%' + kind: member + name: executed_since_last_period + variants: [] +- default: + brief: | + This member is + definition: ${/c/if/uint32_t:/name} ${.:name} + description: '%' + kind: member + name: postponed_jobs_count + variants: [] +definition-kind: typedef-only +description: null +enabled-by: true +interface-type: struct +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_rate_monotonic_period_status +notes: null +type: interface diff --git a/spec/rtems/ratemon/if/period.yml b/spec/rtems/ratemon/if/period.yml new file mode 100644 index 00000000..64112baf --- /dev/null +++ b/spec/rtems/ratemon/if/period.yml @@ -0,0 +1,34 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + - ${../../type/if/interval:/name} ${.:/params[1]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_rate_monotonic_period +notes: null +params: +- description: '%' + dir: null + name: id +- description: '%' + dir: null + name: length +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/ratemon/if/printer.yml b/spec/rtems/ratemon/if/printer.yml new file mode 100644 index 00000000..509117ef --- /dev/null +++ b/spec/rtems/ratemon/if/printer.yml @@ -0,0 +1,11 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +interface-type: forward-declaration +links: +- role: interface-placement + uid: header +- role: interface-target + uid: ../../io/if/printer +type: interface diff --git a/spec/rtems/ratemon/if/report-statistics-with-plugin.yml b/spec/rtems/ratemon/if/report-statistics-with-plugin.yml new file mode 100644 index 00000000..0078fdce --- /dev/null +++ b/spec/rtems/ratemon/if/report-statistics-with-plugin.yml @@ -0,0 +1,30 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - const ${printer:/name} *${.:/params[0]/name} + return: void + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_rate_monotonic_report_statistics_with_plugin +notes: null +params: +- description: '%' + dir: null + name: printer +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/ratemon/if/report-statistics.yml b/spec/rtems/ratemon/if/report-statistics.yml new file mode 100644 index 00000000..3a7a2702 --- /dev/null +++ b/spec/rtems/ratemon/if/report-statistics.yml @@ -0,0 +1,26 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: [] + return: void + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_rate_monotonic_report_statistics +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/ratemon/if/reset-all-statistics.yml b/spec/rtems/ratemon/if/reset-all-statistics.yml new file mode 100644 index 00000000..39a03f3b --- /dev/null +++ b/spec/rtems/ratemon/if/reset-all-statistics.yml @@ -0,0 +1,26 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: [] + return: void + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_rate_monotonic_reset_all_statistics +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/ratemon/if/reset-statistics.yml b/spec/rtems/ratemon/if/reset-statistics.yml new file mode 100644 index 00000000..06efe480 --- /dev/null +++ b/spec/rtems/ratemon/if/reset-statistics.yml @@ -0,0 +1,30 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_rate_monotonic_reset_statistics +notes: null +params: +- description: '%' + dir: null + name: id +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/ratemon/req/ident.yml b/spec/rtems/ratemon/req/ident.yml new file mode 100644 index 00000000..3db3c6a7 --- /dev/null +++ b/spec/rtems/ratemon/req/ident.yml @@ -0,0 +1,15 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +functional-type: function +links: +- role: interface-function + uid: ../if/ident +rationale: null +references: [] +requirement-type: functional +text: | + The ${../if/ident:/name} directive shall identify an Classic API + rate monotonic class object by its name as specified by ${../req/ident-local}. +type: requirement diff --git a/spec/rtems/ratemon/val/ident.yml b/spec/rtems/ratemon/val/ident.yml new file mode 100644 index 00000000..37fc0df0 --- /dev/null +++ b/spec/rtems/ratemon/val/ident.yml @@ -0,0 +1,45 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +links: +- role: validation + uid: ../req/ident +test-actions: +- action: | + ${../../req/ident-local:/test-run}( + id_local_object, + ClassicRatemonIdentAction + ); + checks: [] + description: | + Run the generic object identification tests for Classic API rate monotonic + class objects defined by ${../../req/ident-local}. + links: [] +test-brief: Test the ${../if/ident:/name} directive. +test-description: null +test-epilogue: null +test-fixture: null +test-header: null +test-includes: [] +test-local-includes: +- tr-object-ident-local.h +test-prologue: | + rtems_status_code sc; + rtems_id id_local_object; + + sc = rtems_rate_monotonic_create( + ClassicObjectLocalIdentName, + &id_local_object + ); + T_assert_rsc_success( sc ); +test-support: | + static rtems_status_code ClassicRatemonIdentAction( + rtems_name name, + rtems_id *id + ) + { + return rtems_rate_monotonic_ident( name, id ); + } +test-target: testsuites/validation/tc-ratemon-ident.c +type: test-case diff --git a/spec/rtems/region/if/create.yml b/spec/rtems/region/if/create.yml new file mode 100644 index 00000000..eca13c24 --- /dev/null +++ b/spec/rtems/region/if/create.yml @@ -0,0 +1,50 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/name:/name} ${.:/params[0]/name} + - void *${.:/params[1]/name} + - ${/c/if/uintptr_t:/name} ${.:/params[2]/name} + - ${/c/if/uintptr_t:/name} ${.:/params[3]/name} + - ${../../attr/if/attribute:/name} ${.:/params[4]/name} + - ${../../type/if/id:/name} *${.:/params[5]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_region_create +notes: null +params: +- description: '%' + dir: null + name: name +- description: '%' + dir: null + name: starting_address +- description: '%' + dir: null + name: length +- description: '%' + dir: null + name: page_size +- description: '%' + dir: null + name: attribute_set +- description: '%' + dir: null + name: id +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/region/if/delete.yml b/spec/rtems/region/if/delete.yml new file mode 100644 index 00000000..4565f3b1 --- /dev/null +++ b/spec/rtems/region/if/delete.yml @@ -0,0 +1,30 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_region_delete +notes: null +params: +- description: '%' + dir: null + name: id +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/region/if/extend.yml b/spec/rtems/region/if/extend.yml new file mode 100644 index 00000000..e863d803 --- /dev/null +++ b/spec/rtems/region/if/extend.yml @@ -0,0 +1,38 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + - void *${.:/params[1]/name} + - ${/c/if/uintptr_t:/name} ${.:/params[2]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_region_extend +notes: null +params: +- description: '%' + dir: null + name: id +- description: '%' + dir: null + name: starting_address +- description: '%' + dir: null + name: length +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/region/if/get-free-information.yml b/spec/rtems/region/if/get-free-information.yml new file mode 100644 index 00000000..9a8b85be --- /dev/null +++ b/spec/rtems/region/if/get-free-information.yml @@ -0,0 +1,34 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + - ${/score/heap/if/information-block:/name} *${.:/params[1]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_region_get_free_information +notes: null +params: +- description: '%' + dir: null + name: id +- description: '%' + dir: null + name: the_info +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/region/if/get-information.yml b/spec/rtems/region/if/get-information.yml new file mode 100644 index 00000000..bee6a1c2 --- /dev/null +++ b/spec/rtems/region/if/get-information.yml @@ -0,0 +1,34 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + - ${/score/heap/if/information-block:/name} *${.:/params[1]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_region_get_information +notes: null +params: +- description: '%' + dir: null + name: id +- description: '%' + dir: null + name: the_info +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/region/if/get-segment-size.yml b/spec/rtems/region/if/get-segment-size.yml new file mode 100644 index 00000000..4b3e1d65 --- /dev/null +++ b/spec/rtems/region/if/get-segment-size.yml @@ -0,0 +1,38 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + - void *${.:/params[1]/name} + - ${/c/if/uintptr_t:/name} *${.:/params[2]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_region_get_segment_size +notes: null +params: +- description: '%' + dir: null + name: id +- description: '%' + dir: null + name: segment +- description: '%' + dir: null + name: size +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/region/if/get-segment.yml b/spec/rtems/region/if/get-segment.yml new file mode 100644 index 00000000..e050fcd0 --- /dev/null +++ b/spec/rtems/region/if/get-segment.yml @@ -0,0 +1,46 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + - ${/c/if/uintptr_t:/name} ${.:/params[1]/name} + - ${../../option/if/option:/name} ${.:/params[2]/name} + - ${../../type/if/interval:/name} ${.:/params[3]/name} + - void **${.:/params[4]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_region_get_segment +notes: null +params: +- description: '%' + dir: null + name: id +- description: '%' + dir: null + name: size +- description: '%' + dir: null + name: option_set +- description: '%' + dir: null + name: timeout +- description: '%' + dir: null + name: segment +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/region/if/group.yml b/spec/rtems/region/if/group.yml new file mode 100644 index 00000000..ca01b322 --- /dev/null +++ b/spec/rtems/region/if/group.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + The Region Manager provides facilities to dynamically allocate memory in + variable sized units. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +description: null +enabled-by: true +identifier: RTEMSAPIClassicRegion +interface-type: group +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: ../../if/group +name: Region Manager +text: | + The Classic API shall provide an interface to the Region Manager. +type: interface diff --git a/spec/rtems/region/if/header.yml b/spec/rtems/region/if/header.yml new file mode 100644 index 00000000..9f456de6 --- /dev/null +++ b/spec/rtems/region/if/header.yml @@ -0,0 +1,12 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: This header file defines the Region Manager API. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +interface-type: header-file +links: +- role: interface-placement + uid: /if/domain +path: rtems/rtems/region.h +prefix: cpukit/include +type: interface diff --git a/spec/rtems/region/if/ident.yml b/spec/rtems/region/if/ident.yml new file mode 100644 index 00000000..cfce1445 --- /dev/null +++ b/spec/rtems/region/if/ident.yml @@ -0,0 +1,59 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Identifies a region object by the specified object name. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/name:/name} ${.:/params[0]/name} + - ${../../type/if/id:/name} *${.:/params[1]/name} + return: ${../../status/if/code:/name} + variants: [] +description: | + This directive obtains the region identifier associated with the region name + specified in ``${.:/params[0]/name}``. +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_region_ident +notes: | + If the region name is not unique, then the region identifier will match the + first region with that name in the search order. However, this region + identifier is not guaranteed to correspond to the desired region. The region + identifier is used with other region related directives to access the region. + + The objects are searched from lowest to the highest index. Only the local + node is searched. +params: +- description: is the object name to look up. + dir: null + name: name +- description: | + is the pointer to an object identifier variable. The object identifier of + an object with the specified name will be stored in this variable, in case + of a successful operation. + dir: out + name: id +return: + return: null + return-values: + - description: | + The requested operation was successful. + value: ${../../status/if/successful:/name} + - description: | + The ${.:/params[1]/name} parameter was ${/c/if/null:/name}. + value: ${../../status/if/invalid-address:/name} + - description: | + The ${.:/params[0]/name} parameter was 0. + value: ${../../status/if/invalid-name:/name} + - description: | + There was no object with the specified name on the local node. + value: ${../../status/if/invalid-name:/name} +type: interface diff --git a/spec/rtems/region/if/resize-segment.yml b/spec/rtems/region/if/resize-segment.yml new file mode 100644 index 00000000..1da5c347 --- /dev/null +++ b/spec/rtems/region/if/resize-segment.yml @@ -0,0 +1,42 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + - void *${.:/params[1]/name} + - ${/c/if/uintptr_t:/name} ${.:/params[2]/name} + - ${/c/if/uintptr_t:/name} *${.:/params[3]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_region_resize_segment +notes: null +params: +- description: '%' + dir: null + name: id +- description: '%' + dir: null + name: segment +- description: '%' + dir: null + name: size +- description: '%' + dir: null + name: old_size +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/region/if/return-segment.yml b/spec/rtems/region/if/return-segment.yml new file mode 100644 index 00000000..3767cc5d --- /dev/null +++ b/spec/rtems/region/if/return-segment.yml @@ -0,0 +1,34 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + - void *${.:/params[1]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_region_return_segment +notes: null +params: +- description: '%' + dir: null + name: id +- description: '%' + dir: null + name: segment +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/req/ident-local.yml b/spec/rtems/req/ident-local.yml new file mode 100644 index 00000000..416d8fc6 --- /dev/null +++ b/spec/rtems/req/ident-local.yml @@ -0,0 +1,165 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +functional-type: action +links: [] +post-conditions: +- name: Status + states: + - name: Ok + test-code: | + T_rsc( ctx->status, RTEMS_SUCCESSFUL ); + text: | + The status shall be RTEMS_SUCCESSFUL. + - name: InvAddr + test-code: | + T_rsc( ctx->status, RTEMS_INVALID_ADDRESS ); + text: | + The status shall be RTEMS_INVALID_ADDRESS. + - name: InvName + test-code: | + T_rsc( ctx->status, RTEMS_INVALID_NAME ); + text: | + The status shall be RTEMS_INVALID_NAME. + test-epilogue: null + test-prologue: null +- name: Id + states: + - name: Nop + test-code: | + T_eq_ptr( ctx->id, &ctx->id_value ); + T_eq_u32( ctx->id_value, 0xffffffff ); + text: | + The value of the object identifier referenced by the id parameter shall + be the value before the action. + - name: NullPtr + test-code: | + T_null( ctx->id ) + text: | + The id parameter shall be NULL. + - name: Id + test-code: | + T_eq_ptr( ctx->id, &ctx->id_value ); + T_eq_u32( ctx->id_value, ctx->id_local_object ); + text: | + The value of the object identifier referenced by the id parameter shall + be the identifier of a local object of the specified class with a name + equal to the name parameter. If more than one local object of the + specified class with such a name exists, then it shall be the identifier + of the object with the lowest object index. + test-epilogue: null + test-prologue: null +pre-conditions: +- name: Name + states: + - name: Invalid + test-code: | + ctx->name = 1; + text: | + The name parameter shall not equal to a name of an active Classic API + object of the specified class. + - name: Valid + test-code: | + ctx->name = ClassicObjectLocalIdentName; + text: | + The name parameter shall equal to a name of an active Classic API object + of the specified class. + test-epilogue: null + test-prologue: null +- name: Id + states: + - name: NullPtr + test-code: | + ctx->id = NULL; + text: | + The id parameter shall be NULL. + - name: Valid + test-code: | + ctx->id_value = 0xffffffff; + ctx->id = &ctx->id_value; + text: | + The id parameter shall point to an object identifier. + test-epilogue: null + test-prologue: null +rationale: null +references: [] +requirement-type: functional +skip-reasons: {} +test-action: | + ctx->status = ( *ctx->action )( ctx->name, ctx->id ); +test-brief: null +test-cleanup: null +test-context: +- brief: null + description: null + member: rtems_status_code status +- brief: null + description: null + member: rtems_name name +- brief: null + description: null + member: rtems_id *id +- brief: null + description: null + member: rtems_id id_value +test-context-support: null +test-description: null +test-header: + code: | + #define ClassicObjectLocalIdentName \ + rtems_build_name( 'I', 'D', 'N', 'T' ) + includes: + - rtems.h + local-includes: [] + run-params: + - description: | + is the identifier of an active object of the class under test with the + name ClassicObjectLocalIdentName. + dir: null + name: id_local_object + specifier: rtems_id ${.:name} + - description: | + is the action handler. + dir: null + name: action + specifier: rtems_status_code ( *${.:name} )( rtems_name, rtems_id * ) + target: testsuites/validation/tr-object-ident-local.h +test-includes: [] +test-local-includes: +- tr-object-ident-local.h +test-prepare: null +test-setup: null +test-stop: null +test-support: null +test-target: testsuites/validation/tr-object-ident-local.c +test-teardown: null +text: ${.:text-template} +transition-map: +- enabled-by: true + post-conditions: + Id: NullPtr + Status: InvAddr + pre-conditions: + Id: + - NullPtr + Name: all +- enabled-by: true + post-conditions: + Id: Nop + Status: InvName + pre-conditions: + Id: + - Valid + Name: + - Invalid +- enabled-by: true + post-conditions: + Id: Id + Status: Ok + pre-conditions: + Id: + - Valid + Name: + - Valid +type: requirement diff --git a/spec/rtems/req/ident.yml b/spec/rtems/req/ident.yml new file mode 100644 index 00000000..11dd1820 --- /dev/null +++ b/spec/rtems/req/ident.yml @@ -0,0 +1,257 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +functional-type: action +links: [] +post-conditions: +- name: Status + states: + - name: Ok + test-code: | + T_rsc(ctx->status, RTEMS_SUCCESSFUL); + text: | + The status shall be RTEMS_SUCCESSFUL. + - name: InvAddr + test-code: | + T_rsc(ctx->status, RTEMS_INVALID_ADDRESS); + text: | + The status shall be RTEMS_INVALID_ADDRESS. + - name: InvName + test-code: | + T_rsc(ctx->status, RTEMS_INVALID_NAME); + text: | + The status shall be RTEMS_INVALID_NAME. + - name: InvNode + test-code: | + T_rsc(ctx->status, RTEMS_INVALID_NODE); + text: | + The status shall be RTEMS_INVALID_NODE. + test-epilogue: null + test-prologue: null +- name: Id + states: + - name: Nop + test-code: | + T_eq_ptr(ctx->id, &ctx->id_value); + T_eq_u32(ctx->id_value, 0xffffffff); + text: | + The value of the object identifier referenced by the id parameter shall + be the value before the action. + - name: NullPtr + test-code: | + T_null(ctx->id) + text: | + The id parameter shall be NULL. + - name: LocalObj + test-code: | + T_eq_ptr(ctx->id, &ctx->id_value); + T_eq_u32(ctx->id_value, ctx->id_local_object); + text: | + The value of the object identifier referenced by the id parameter shall + be the identifier of a local object of the specified class with a name + equal to the name parameter. If more than one local object of the + specified class with such a name exists, then it shall be the identifier + of the object with the lowest object index. + - name: RemoteObj + test-code: | + T_eq_ptr(ctx->id, &ctx->id_value); + T_eq_u32(ctx->id_value, ctx->id_remote_object); + text: | + The value of the object identifier referenced by the id parameter shall + be the identifier of a remote object of the specified class on a eligible + node defined by the node parameter with a name equal to the name + parameter. If more than one local object of the specified class with + such a name exists, then it shall be the identifier of the object with + the lowest object index. Otherwise, if more than one object of the + specified class with such a name exists on remote eligible nodes, then it + shall be the identifier of the object with the lowest node index and the + lowest object index on this node. + test-epilogue: null + test-prologue: null +pre-conditions: +- name: Name + states: + - name: Invalid + test-code: | + ctx->name = 1; + text: | + The name parameter shall not equal to a name of an active Classic API + object of the specified class. + - name: Valid + test-code: | + ctx->name = ClassicObjectIdentName; + text: | + The name parameter shall equal to a name of an active Classic API object + of the specified class. + test-epilogue: null + test-prologue: null +- name: Node + states: + - name: Local + test-code: | + ctx->node = 1; + text: | + The node parameter shall be the local node number. + - name: Remote + test-code: | + ctx->node = 2; + text: | + The node parameter shall be a remote node number. + - name: Invalid + test-code: | + ctx->node = 256; + text: | + The node parameter shall be an invalid node number. + - name: SearchAll + test-code: | + ctx->node = RTEMS_SEARCH_ALL_NODES; + text: | + The node parameter shall be RTEMS_SEARCH_ALL_NODES. + - name: SearchOther + test-code: | + ctx->node = RTEMS_SEARCH_OTHER_NODES; + text: | + The node parameter shall be RTEMS_SEARCH_OTHER_NODES. + - name: SearchLocal + test-code: | + ctx->node = RTEMS_SEARCH_LOCAL_NODE; + text: | + The node parameter shall be RTEMS_SEARCH_LOCAL_NODE. + test-epilogue: null + test-prologue: null +- name: Id + states: + - name: NullPtr + test-code: | + ctx->id = NULL; + text: | + The id parameter shall be NULL. + - name: Valid + test-code: | + ctx->id_value = 0xffffffff; + ctx->id = &ctx->id_value; + text: | + The id parameter shall point to an object identifier. + test-epilogue: null + test-prologue: null +rationale: null +references: [] +requirement-type: functional +skip-reasons: {} +test-action: | + ctx->status = ( *ctx->action )( ctx->name, ctx->node, ctx->id ); +test-brief: null +test-cleanup: null +test-context: +- brief: null + description: null + member: | + rtems_status_code status +- brief: null + description: null + member: rtems_name name +- brief: null + description: null + member: uint32_t node +- brief: null + description: null + member: rtems_id *id +- brief: null + description: null + member: rtems_id id_value +- brief: null + description: null + member: rtems_id id_remote_object +test-context-support: null +test-description: null +test-header: + code: | + #define ClassicObjectIdentName \ + rtems_build_name( 'I', 'D', 'N', 'T' ) + includes: + - rtems.h + local-includes: [] + run-params: + - description: | + is the identifier of an active object of the class under test with the + name ClassicObjectIdentName. + dir: null + name: id_local_object + specifier: rtems_id ${.:name} + - description: | + is the action handler. + dir: null + name: action + specifier: | + rtems_status_code ( *${.:name} )( rtems_name, uint32_t, rtems_id * ) + target: testsuites/validation/tr-object-ident.h +test-includes: [] +test-local-includes: +- tr-object-ident.h +test-prepare: null +test-setup: null +test-stop: null +test-support: null +test-target: testsuites/validation/tr-object-ident.c +test-teardown: null +text: ${.:text-template} +transition-map: +- enabled-by: true + post-conditions: + Id: LocalObj + Status: Ok + pre-conditions: + Id: + - Valid + Name: + - Valid + Node: + - SearchAll + - SearchLocal + - Local +- enabled-by: true + post-conditions: + Id: Nop + Status: InvName + pre-conditions: + Id: + - Valid + Name: + - Valid + Node: + - Invalid + - SearchOther + - Remote +- enabled-by: true + post-conditions: + Id: Nop + Status: InvName + pre-conditions: + Id: + - Valid + Name: + - Invalid + Node: all +- enabled-by: true + post-conditions: + Id: NullPtr + Status: InvAddr + pre-conditions: + Id: + - NullPtr + Name: all + Node: all +- enabled-by: RTEMS_MULTIPROCESSING + post-conditions: + Id: RemoteObj + Status: Ok + pre-conditions: + Id: + - Valid + Name: + - Valid + Node: + - SearchOther + - Remote +type: requirement diff --git a/spec/rtems/scheduler/if/add-processor.yml b/spec/rtems/scheduler/if/add-processor.yml new file mode 100644 index 00000000..dab967ce --- /dev/null +++ b/spec/rtems/scheduler/if/add-processor.yml @@ -0,0 +1,52 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Adds the processor to the set of processors owned by the scheduler instance. +copyrights: +- Copyright (C) 2016, 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + - ${/c/if/uint32_t:/name} ${.:/params[1]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: ../../task/if/header +- role: interface-ingroup + uid: ../../task/if/group +name: rtems_scheduler_add_processor +notes: | + This directive shall be called from task context. It obtains and releases + the objects allocator lock. +params: +- description: is the scheduler instance identifier. + dir: null + name: scheduler_id +- description: is the index of the processor to add. + dir: null + name: cpu_index +return: + return: null + return-values: + - description: | + The requested operation was successful. + value: ${../../status/if/successful:/name} + - description: | + The processor was configured to be used by the application, however, it + was not online. + value: ${../../status/if/incorrect-state:/name} + - description: | + The scheduler instance identifier was invalid. + value: ${../../status/if/invalid-id:/name} + - description: | + The processor was not configured to be used by the application. + value: ${../../status/if/not-configured:/name} + - description: | + The processor was already assigned to a scheduler instance. + value: ${../../status/if/resource-in-use:/name} +type: interface diff --git a/spec/rtems/scheduler/if/get-maximum-priority.yml b/spec/rtems/scheduler/if/get-maximum-priority.yml new file mode 100644 index 00000000..e8c26a62 --- /dev/null +++ b/spec/rtems/scheduler/if/get-maximum-priority.yml @@ -0,0 +1,46 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Gets the maximum task priority of the scheduler instance. +copyrights: +- Copyright (C) 2018, 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + - ${../../task/if/priority:/name} *${.:/params[1]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: ../../task/if/header +- role: interface-ingroup + uid: ../../task/if/group +name: rtems_scheduler_get_maximum_priority +notes: null +params: +- description: is the scheduler instance identifier. + dir: null + name: scheduler_id +- description: | + is the pointer to a task priority variable. The maximum priority of the + scheduler instance will be stored in this variable, if the operation is + successful. + dir: out + name: priority +return: + return: null + return-values: + - description: | + The requested operation was successful. + value: ${../../status/if/successful:/name} + - description: | + The ${.:/params[1]/name} parameter was ${/c/if/null:/name}. + value: ${../../status/if/invalid-address:/name} + - description: | + The scheduler instance identifier was invalid. + value: ${../../status/if/invalid-id:/name} +type: interface diff --git a/spec/rtems/scheduler/if/get-processor-maximum.yml b/spec/rtems/scheduler/if/get-processor-maximum.yml new file mode 100644 index 00000000..9c5c4f98 --- /dev/null +++ b/spec/rtems/scheduler/if/get-processor-maximum.yml @@ -0,0 +1,33 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Returns the processor maximum supported by the system. +copyrights: +- Copyright (C) 2013, 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: ${/score/smp/if/get-processor-maximum:/name}() + variants: [] +description: | + In uniprocessor configurations, this macro evaluates to a compile time + constant of one. + + In SMP configurations, this macro returns the minimum of the processors + (physically or virtually) available by the platform and the configured + processor maximum. Not all processors in the range from processor index zero + to the last processor index (which is the processor maximum minus one) may be + configured to be used by a scheduler or may be online (online processors have + a scheduler assigned). +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: ../../task/if/header +- role: interface-ingroup + uid: ../../task/if/group +name: rtems_scheduler_get_processor_maximum +notes: null +params: [] +return: + return: | + The processor maximum supported by the system is returned. + return-values: [] +type: interface diff --git a/spec/rtems/scheduler/if/get-processor-set.yml b/spec/rtems/scheduler/if/get-processor-set.yml new file mode 100644 index 00000000..62dbb702 --- /dev/null +++ b/spec/rtems/scheduler/if/get-processor-set.yml @@ -0,0 +1,58 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Gets the set of processors owned by the scheduler instance. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + - ${/c/if/size_t:/name} ${.:/params[1]/name} + - ${/c/if/cpu_set_t:/name} *${.:/params[2]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: ../../task/if/header +- role: interface-ingroup + uid: ../../task/if/group +name: rtems_scheduler_get_processor_set +notes: null +params: +- description: is the scheduler instance identifier. + dir: null + name: scheduler_id +- description: | + is the size of the referenced processor set variable in bytes. This value + shall be positive. + dir: null + name: cpusetsize +- description: | + is the pointer to a processor set variable. The processor set of the + scheduler instance will be stored in this variable, in case of a successful + operation. A set bit in the processor set means that the corresponding + processor is owned by the scheduler instance, otherwise the bit is cleared. + dir: out + name: cpuset +return: + return: null + return-values: + - description: | + The requested operation was successful. + value: ${../../status/if/successful:/name} + - description: | + The ${.:/params[2]/name} parameter was ${/c/if/null:/name}. + value: ${../../status/if/invalid-address:/name} + - description: | + The scheduler instance identifier was invalid. + value: ${../../status/if/invalid-id:/name} + - description: | + The provided processor set was too small for the set of processors owned + by the scheduler instance. + value: ${../../status/if/invalid-number:/name} +type: interface diff --git a/spec/rtems/scheduler/if/get-processor.yml b/spec/rtems/scheduler/if/get-processor.yml new file mode 100644 index 00000000..8c32712b --- /dev/null +++ b/spec/rtems/scheduler/if/get-processor.yml @@ -0,0 +1,35 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Returns the index of the current processor. +copyrights: +- Copyright (C) 2014, 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: ${/score/smp/if/get-current-processor:/name}() + variants: [] +description: | + In uniprocessor configurations, this macro evaluates to a compile time + constant of zero. + + In SMP configurations, an architecture-specific method is used to obtain the + index of the current processor in the system. The set of processor indices + is the range of integers starting with zero up to + ${get-processor-maximum:/name} minus one. +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: ../../task/if/header +- role: interface-ingroup + uid: ../../task/if/group +name: rtems_scheduler_get_processor +notes: | + Outside of sections with disabled thread dispatching the current processor + index may change after every instruction since the thread may migrate from + one processor to another. Sections with disabled interrupts are sections + with thread dispatching disabled. +params: [] +return: + return: | + The index of the current processor is returned. + return-values: [] +type: interface diff --git a/spec/rtems/scheduler/if/ident-by-processor-set.yml b/spec/rtems/scheduler/if/ident-by-processor-set.yml new file mode 100644 index 00000000..f1c7a3e9 --- /dev/null +++ b/spec/rtems/scheduler/if/ident-by-processor-set.yml @@ -0,0 +1,63 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Identifies a scheduler instance by a processor set. +copyrights: +- Copyright (C) 2017, 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: + body: null + params: + - ${/c/if/size_t:/name} ${.:/params[0]/name} + - const ${/c/if/cpu_set_t:/name} *${.:/params[1]/name} + - ${../../type/if/id:/name} *${.:/params[2]/name} + return: ${../../status/if/code:/name} + variants: [] +description: | + The scheduler instance is selected according to the highest numbered online + processor in the specified processor set. +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: ../../task/if/header +- role: interface-ingroup + uid: ../../task/if/group +name: rtems_scheduler_ident_by_processor_set +notes: null +params: +- description: | + is the size of the referenced processor set variable in bytes. This value + shall be positive. + dir: null + name: cpusetsize +- description: | + is the pointer to a processor set variable. The referenced processor set + will be used to identify the scheduler instance. + dir: null + name: cpuset +- description: | + is the pointer to an object identifier variable. The identifier of the + scheduler instance will be stored in this variable, in case of a successful + operation. + dir: out + name: id +return: + return: null + return-values: + - description: | + The requested operation was successful. + value: ${../../status/if/successful:/name} + - description: | + The processor set was valid, however, the highest numbered online + processor in the processor set was not owned by a scheduler instance. + value: ${../../status/if/incorrect-state:/name} + - description: | + The ${.:/params[2]/name} parameter was ${/c/if/null:/name}. + value: ${../../status/if/invalid-address:/name} + - description: | + The processor set contained no online processor. + value: ${../../status/if/invalid-name:/name} + - description: | + The processor set size was invalid. + value: ${../../status/if/invalid-size:/name} +type: interface diff --git a/spec/rtems/scheduler/if/ident-by-processor.yml b/spec/rtems/scheduler/if/ident-by-processor.yml new file mode 100644 index 00000000..4a05cc96 --- /dev/null +++ b/spec/rtems/scheduler/if/ident-by-processor.yml @@ -0,0 +1,51 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Identifies a scheduler instance by a processor index. +copyrights: +- Copyright (C) 2017, 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: + body: null + params: + - ${/c/if/uint32_t:/name} ${.:/params[0]/name} + - ${../../type/if/id:/name} *${.:/params[1]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: ../../task/if/header +- role: interface-ingroup + uid: ../../task/if/group +name: rtems_scheduler_ident_by_processor +notes: null +params: +- description: | + is the processor index to identify the scheduler instance. + dir: null + name: cpu_index +- description: | + is the pointer to an object identifier variable. The identifier of the + scheduler instance will be stored in this variable, in case of a successful + operation. + dir: out + name: id +return: + return: null + return-values: + - description: | + The requested operation was successful. + value: ${../../status/if/successful:/name} + - description: | + The processor index was valid, however, the corresponding processor was + not owned by a scheduler instance. + value: ${../../status/if/incorrect-state:/name} + - description: | + The ${.:/params[1]/name} parameter was ${/c/if/null:/name}. + value: ${../../status/if/invalid-address:/name} + - description: | + The processor index was invalid. + value: ${../../status/if/invalid-name:/name} +type: interface diff --git a/spec/rtems/scheduler/if/ident.yml b/spec/rtems/scheduler/if/ident.yml new file mode 100644 index 00000000..3a8a3e9b --- /dev/null +++ b/spec/rtems/scheduler/if/ident.yml @@ -0,0 +1,47 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Identifies a scheduler instance by its name. +copyrights: +- Copyright (C) 2014, 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: + body: null + params: + - ${../../type/if/name:/name} ${.:/params[0]/name} + - ${../../type/if/id:/name} *${.:/params[1]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: ../../task/if/header +- role: interface-ingroup + uid: ../../task/if/group +name: rtems_scheduler_ident +notes: | + The scheduler name is determined by the scheduler configuration. +params: +- description: is the scheduler name. + dir: null + name: name +- description: | + is the pointer to an object identifier variable. The identifier of the + scheduler instance will be stored in this variable, in case of a successful + operation. + dir: out + name: id +return: + return: null + return-values: + - description: | + The requested operation was successful. + value: ${../../status/if/successful:/name} + - description: | + The ${.:/params[1]/name} parameter was ${/c/if/null:/name}. + value: ${../../status/if/invalid-address:/name} + - description: | + The scheduler name was invalid. + value: ${../../status/if/invalid-name:/name} +type: interface diff --git a/spec/rtems/scheduler/if/map-priority-from-posix.yml b/spec/rtems/scheduler/if/map-priority-from-posix.yml new file mode 100644 index 00000000..56527ddd --- /dev/null +++ b/spec/rtems/scheduler/if/map-priority-from-posix.yml @@ -0,0 +1,53 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Maps a POSIX thread priority to the corresponding Classic API task priority. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + - int ${.:/params[1]/name} + - ${../../task/if/priority:/name} *${.:/params[2]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: ../../task/if/header +- role: interface-ingroup + uid: ../../task/if/group +name: rtems_scheduler_map_priority_from_posix +notes: null +params: +- description: is the scheduler instance identifier. + dir: null + name: scheduler_id +- description: is the POSIX thread priority to map. + dir: null + name: posix_priority +- description: | + is the pointer to a Classic API task priority variable. The Classic API + task priority value corresponding to the specified POSIX thread priority + value will be stored in this variable, in case of a successful operation. + dir: out + name: priority +return: + return: null + return-values: + - description: | + The requested operation was successful. + value: ${../../status/if/successful:/name} + - description: | + The ${.:/params[2]/name} parameter was ${/c/if/null:/name}. + value: ${../../status/if/invalid-address:/name} + - description: | + The scheduler instance identifier was invalid. + value: ${../../status/if/invalid-id:/name} + - description: | + The POSIX thread priority was invalid. + value: ${../../status/if/invalid-priority:/name} +type: interface diff --git a/spec/rtems/scheduler/if/map-priority-to-posix.yml b/spec/rtems/scheduler/if/map-priority-to-posix.yml new file mode 100644 index 00000000..65fe51ea --- /dev/null +++ b/spec/rtems/scheduler/if/map-priority-to-posix.yml @@ -0,0 +1,53 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Maps a Classic API task priority to the corresponding POSIX thread priority. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + - ${../../task/if/priority:/name} ${.:/params[1]/name} + - int *${.:/params[2]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: ../../task/if/header +- role: interface-ingroup + uid: ../../task/if/group +name: rtems_scheduler_map_priority_to_posix +notes: null +params: +- description: is the scheduler instance identifier. + dir: null + name: scheduler_id +- description: is the Classic API task priority to map. + dir: null + name: priority +- description: | + is the pointer to a POSIX thread priority variable. The POSIX thread + priority value corresponding to the specified Classic API task priority + value will be stored in this variable, in case of a successful operation. + dir: out + name: posix_priority +return: + return: null + return-values: + - description: | + The requested operation was successful. + value: ${../../status/if/successful:/name} + - description: | + The ${.:/params[2]/name} parameter was ${/c/if/null:/name}. + value: ${../../status/if/invalid-address:/name} + - description: | + The scheduler instance identifier was invalid. + value: ${../../status/if/invalid-id:/name} + - description: | + The Classic API task priority was invalid. + value: ${../../status/if/invalid-priority:/name} +type: interface diff --git a/spec/rtems/scheduler/if/remove-processor.yml b/spec/rtems/scheduler/if/remove-processor.yml new file mode 100644 index 00000000..d1801148 --- /dev/null +++ b/spec/rtems/scheduler/if/remove-processor.yml @@ -0,0 +1,52 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Removes a processor from set of processors owned by the scheduler instance. +copyrights: +- Copyright (C) 2016, 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + - ${/c/if/uint32_t:/name} ${.:/params[1]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: ../../task/if/header +- role: interface-ingroup + uid: ../../task/if/group +name: rtems_scheduler_remove_processor +notes: | + This directive shall be called from task context. It obtains and releases + the objects allocator lock. Removing a processor from a scheduler instance + is a complex operation that involves all tasks of the system. +params: +- description: is the scheduler instance identifier. + dir: null + name: scheduler_id +- description: is the index of the processor to remove. + dir: null + name: cpu_index +return: + return: null + return-values: + - description: | + The requested operation was successful. + value: ${../../status/if/successful:/name} + - description: | + The scheduler instance identifier was invalid. + value: ${../../status/if/invalid-id:/name} + - description: | + The processor was not owned by the specified scheduler instance. + value: ${../../status/if/invalid-number:/name} + - description: | + The set of processors owned by the specified scheduler instance would + have been empty after the processor removal and there was at least one + non-idle task that used this scheduler instance as its home scheduler + instance. + value: ${../../status/if/resource-in-use:/name} +type: interface diff --git a/spec/rtems/sem/if/create.yml b/spec/rtems/sem/if/create.yml new file mode 100644 index 00000000..e3a5e701 --- /dev/null +++ b/spec/rtems/sem/if/create.yml @@ -0,0 +1,183 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Creates a semaphore with the specified properties and returns its identifier. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/name:/name} ${.:/params[0]/name} + - ${/c/if/uint32_t:/name} ${.:/params[1]/name} + - ${../../attr/if/attribute:/name} ${.:/params[2]/name} + - ${../../task/if/priority:/name} ${.:/params[3]/name} + - ${../../type/if/id:/name} *${.:/params[4]/name} + return: ${../../status/if/code:/name} + variants: [] +description: | + This directive creates a semaphore which resides on the local node. The new + semaphore has the user-defined name specified in ``name`` and the initial + count specified in ``count``. For control and maintenance of the semaphore, + RTEMS allocates and initializes a ${/glossary/smcb:/term}. The + RTEMS-assigned semaphore identifier is returned in ``id``. This semaphore + identifier is used with other semaphore related directives to access the + semaphore. + + The attribute set specified in ``attribute_set`` defines + + * the scope of the semaphore (local or global), + + * the discipline of the task wait queue used by the semaphore (FIFO or + priority), + + * the class of the semaphore (counting, binary, or simple binary), and + + * the locking protocol of a binary semaphore (priority inheritance, priority + ceiling or MrsP). + + The attribute set is built through a *bitwise or* of the attribute constants + described below. Not all combinations of attributes are allowed. Some + attributes are mutually exclusive. If mutually exclusive attributes are + combined, the behaviour is undefined. + + The *scope of a semaphore* is either the local node only (local scope) or all + nodes in a multiprocessing network (global scope). The scope is selected by + the mutually exclusive ${../../attr/if/local:/name} and + ${../../attr/if/global:/name} attributes. + + * The local scope is the default and can be emphasized through use + of the ${../../attr/if/local:/name} attribute. + + * The global scope is selected by the ${../../attr/if/global:/name} attribute. In + a single node system and the local and global scope are identical. + + The *task wait queue discipline* is selected by the mutually exclusive + ${../../attr/if/fifo:/name} and ${../../attr/if/priority:/name} attributes. + + * The ${/glossary/fifo:/term} discipline is the default and can be emphasized + through use of the ${../../attr/if/fifo:/name} attribute. + + * The priority discipline is selected by the ${../../attr/if/priority:/name} + attribute. Some locking protocols require the priority discipline. + + The *semaphore class* is selected by the mutually exclusive + ${../../attr/if/counting-semaphore:/name}, + ${../../attr/if/binary-semaphore:/name}, and + ${../../attr/if/simple-binary-semaphore:/name} attributes. + + * Counting semaphores are the default and can be emphasized through use of + the ${../../attr/if/counting-semaphore:/name} attribute. + + * Binary semaphores are mutual exclusion (mutex) synchronization primitives + which may have an owner. The count of a binary semaphore is restricted to + 0 and 1. The binary semaphore class is selected by the + ${../../attr/if/binary-semaphore:/name} attribute. + + * Simple binary semaphores have no owner. The count of a simple binary + semaphore is restricted to 0 and 1. They may be used for task and + interrupt synchronization. The simple binary semaphore class is selected + by the ${../../attr/if/simple-binary-semaphore:/name} attribute. + + Binary semaphores may use a *locking protocol*. If a locking protocol is + selected, then the scope shall be local and the priority task wait queue + discipline shall be selected. The locking protocol is selected by the + mutually exclusive ${../../attr/if/inherit-priority:/name}, + ${../../attr/if/priority-ceiling:/name}, and + ${../../attr/if/multiprocessor-resource-sharing:/name} attributes. + + * The default is to use no locking protocol. + + * The ${../../attr/if/inherit-priority:/name} attribute selects the priority + inheritance locking protocol. + + * The ${../../attr/if/priority-ceiling:/name} attribute selects the priority + ceiling locking protocol. For this locking protocol a priority ceiling + shall be specified in ``priority_ceiling``. + + * The ${../../attr/if/multiprocessor-resource-sharing:/name} attribute selects the + MrsP locking protocol in SMP configurations, otherwise it selects the + priority ceiling protocol. For this locking protocol a priority ceiling + shall be specified in ``priority_ceiling``. This priority is used to set + the priority ceiling in all scheduler instances. This can be changed later + with the ${set-priority:/name} directive using the returned semaphore + identifier. +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_semaphore_create +notes: | + This directive may cause the calling task to be preempted due to an obtain + and release of the object allocator mutex. + + Semaphores should not be made global unless remote tasks must interact with + the new semaphore. This is to avoid the system overhead incurred by the + creation of a global semaphore. When a global semaphore is created, the + semaphore's name and identifier must be transmitted to every node in the + system for insertion in the local copy of the global object table. + + The total number of global objects, including semaphores, is limited by the + ${/acfg/if/mp-max-global-objects:/name} application configuration option. + + It is not allowed to create an initially locked MrsP semaphore and the + ${../../status/if/invalid-number:/name} status code will be returned in SMP + configurations in this case. This prevents lock order reversal problems + with the allocator mutex. +params: +- description: is the object name of the new semaphore. + dir: null + name: name +- description: | + is the initial count of the new semaphore. If the semaphore is a mutex, + then a count of 0 will make the calling task the owner of the new mutex and + a count of 1 will create a mutex without an owner. + dir: null + name: count +- description: | + is the attribute set which defines the properties of the new semaphore. + dir: null + name: attribute_set +- description: | + is the priority ceiling if the new semaphore is a binary semaphore with the + priority ceiling or MrsP semaphore locking protocol as defined by the + attribute set. + dir: null + name: priority_ceiling +- description: | + is the pointer to an object identifier variable. The object identifier of + the new semaphore will be stored in this variable, in case of a successful + operation. + dir: out + name: id +return: + return: null + return-values: + - description: | + The requested operation was successful. + value: ${../../status/if/successful:/name} + - description: | + The ${.:/params[3]/name} parameter was ${/c/if/null:/name}. + value: ${../../status/if/invalid-address:/name} + - description: | + The semaphore name was invalid. + value: ${../../status/if/invalid-name:/name} + - description: | + The priority ceiling was invalid. + value: ${../../status/if/invalid-priority:/name} + - description: | + The attribute set was invalid. + value: ${../../status/if/not-defined:/name} + - description: | + There was no inactive semaphore object available to create a new + semaphore. The semaphore object maximum is defined by the + ${/acfg/if/max-semaphores:/name} application configuration option. + value: ${../../status/if/too-many:/name} + - description: | + In multiprocessing configurations, there was no inactive global object + available to create a new global semaphore. + value: ${../../status/if/too-many:/name} +type: interface diff --git a/spec/rtems/sem/if/delete.yml b/spec/rtems/sem/if/delete.yml new file mode 100644 index 00000000..74f96cee --- /dev/null +++ b/spec/rtems/sem/if/delete.yml @@ -0,0 +1,30 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_semaphore_delete +notes: null +params: +- description: '%' + dir: null + name: id +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/sem/if/flush.yml b/spec/rtems/sem/if/flush.yml new file mode 100644 index 00000000..c1f71a7b --- /dev/null +++ b/spec/rtems/sem/if/flush.yml @@ -0,0 +1,30 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_semaphore_flush +notes: null +params: +- description: '%' + dir: null + name: id +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/sem/if/group.yml b/spec/rtems/sem/if/group.yml new file mode 100644 index 00000000..19e1e0f4 --- /dev/null +++ b/spec/rtems/sem/if/group.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + The Semaphore Manager utilizes standard Dijkstra counting semaphores to + provide synchronization and mutual exclusion capabilities. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +description: null +enabled-by: true +identifier: RTEMSAPIClassicSem +interface-type: group +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: ../../if/group +name: Semaphore Manager +text: | + The Classic API shall provide an interface to the Semaphore Manager. +type: interface diff --git a/spec/rtems/sem/if/header.yml b/spec/rtems/sem/if/header.yml new file mode 100644 index 00000000..9c269fee --- /dev/null +++ b/spec/rtems/sem/if/header.yml @@ -0,0 +1,12 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: This header file defines the Semaphore Manager API. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +interface-type: header-file +links: +- role: interface-placement + uid: /if/domain +path: rtems/rtems/sem.h +prefix: cpukit/include +type: interface diff --git a/spec/rtems/sem/if/ident.yml b/spec/rtems/sem/if/ident.yml new file mode 100644 index 00000000..e549d403 --- /dev/null +++ b/spec/rtems/sem/if/ident.yml @@ -0,0 +1,86 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Identifies a semaphore object by the specified object name. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/name:/name} ${.:/params[0]/name} + - ${/c/if/uint32_t:/name} ${.:/params[1]/name} + - ${../../type/if/id:/name} *${.:/params[2]/name} + return: ${../../status/if/code:/name} + variants: [] +description: | + This directive obtains the semaphore identifier associated with the semaphore + name specified in ``${.:/params[0]/name}``. + + The node to search is specified in ``${.:/params[1]/name}``. It shall be + + * a valid node number, + + * the constant ${../../object/if/search-all-nodes:/name} to search in all nodes, + + * the constant ${../../object/if/search-local-node:/name} to search in the local + node only, or + + * the constant ${../../object/if/search-other-nodes:/name} to search in all nodes + except the local node. +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_semaphore_ident +notes: | + If the semaphore name is not unique, then the semaphore identifier will match + the first semaphore with that name in the search order. However, this + semaphore identifier is not guaranteed to correspond to the desired + semaphore. The semaphore identifier is used with other semaphore related + directives to access the semaphore. + + If node is ${../../object/if/search-all-nodes:/name}, all nodes are searched with + the local node being searched first. All other nodes are searched with the + lowest numbered node searched first. + + If node is a valid node number which does not represent the local node, then + only the semaphores exported by the designated node are searched. + + This directive does not generate activity on remote nodes. It accesses only + the local copy of the global object table. +params: +- description: is the object name to look up. + dir: null + name: name +- description: is the node or node set to search for a matching object. + dir: null + name: node +- description: | + is the pointer to an object identifier variable. The object identifier of + an object with the specified name will be stored in this variable, in case + of a successful operation. + dir: out + name: id +return: + return: null + return-values: + - description: | + The requested operation was successful. + value: ${../../status/if/successful:/name} + - description: | + The ${.:/params[2]/name} parameter was ${/c/if/null:/name}. + value: ${../../status/if/invalid-address:/name} + - description: | + The ${.:/params[0]/name} parameter was 0. + value: ${../../status/if/invalid-name:/name} + - description: | + There was no object with the specified name on the specified nodes. + value: ${../../status/if/invalid-name:/name} + - description: | + In multiprocessing configurations, the specified node was invalid. + value: ${../../status/if/invalid-node:/name} +type: interface diff --git a/spec/rtems/sem/if/obtain.yml b/spec/rtems/sem/if/obtain.yml new file mode 100644 index 00000000..432908ef --- /dev/null +++ b/spec/rtems/sem/if/obtain.yml @@ -0,0 +1,38 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + - ${../../option/if/option:/name} ${.:/params[1]/name} + - ${../../type/if/interval:/name} ${.:/params[2]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_semaphore_obtain +notes: null +params: +- description: '%' + dir: null + name: id +- description: '%' + dir: null + name: option_set +- description: '%' + dir: null + name: timeout +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/sem/if/release.yml b/spec/rtems/sem/if/release.yml new file mode 100644 index 00000000..9f063909 --- /dev/null +++ b/spec/rtems/sem/if/release.yml @@ -0,0 +1,30 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_semaphore_release +notes: null +params: +- description: '%' + dir: null + name: id +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/sem/if/set-priority.yml b/spec/rtems/sem/if/set-priority.yml new file mode 100644 index 00000000..9e5b5916 --- /dev/null +++ b/spec/rtems/sem/if/set-priority.yml @@ -0,0 +1,42 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + - ${../../type/if/id:/name} ${.:/params[1]/name} + - ${../../task/if/priority:/name} ${.:/params[2]/name} + - ${../../task/if/priority:/name} *${.:/params[3]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_semaphore_set_priority +notes: null +params: +- description: '%' + dir: null + name: semaphore_id +- description: '%' + dir: null + name: scheduler_id +- description: '%' + dir: null + name: new_priority +- description: '%' + dir: null + name: old_priority +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/sem/req/ident.yml b/spec/rtems/sem/req/ident.yml new file mode 100644 index 00000000..dde8d114 --- /dev/null +++ b/spec/rtems/sem/req/ident.yml @@ -0,0 +1,15 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +functional-type: function +links: +- role: interface-function + uid: ../if/ident +rationale: null +references: [] +requirement-type: functional +text: | + The ${../if/ident:/name} directive shall identify an Classic API + semaphore class object by its name as specified by ${../req/ident}. +type: requirement diff --git a/spec/rtems/sem/val/ident.yml b/spec/rtems/sem/val/ident.yml new file mode 100644 index 00000000..70068b7f --- /dev/null +++ b/spec/rtems/sem/val/ident.yml @@ -0,0 +1,49 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +links: +- role: validation + uid: ../req/ident +test-actions: +- action: | + ${../../req/ident:/test-run}( + id_local_object, + ClassicSemIdentAction + ); + checks: [] + description: | + Run the generic object identification tests for Classic API semaphore class + objects defined by ${../../req/ident}. + links: [] +test-brief: Test the ${../if/ident:/name} directive. +test-description: null +test-epilogue: null +test-fixture: null +test-header: null +test-includes: [] +test-local-includes: +- tr-object-ident.h +test-prologue: | + rtems_status_code sc; + rtems_id id_local_object; + + sc = rtems_semaphore_create( + ClassicObjectIdentName, + 0, + RTEMS_DEFAULT_ATTRIBUTES, + 0, + &id_local_object + ); + T_assert_rsc_success( sc ); +test-support: | + static rtems_status_code ClassicSemIdentAction( + rtems_name name, + uint32_t node, + rtems_id *id + ) + { + return rtems_semaphore_ident( name, node, id ); + } +test-target: testsuites/validation/tc-sem-ident.c +type: test-case diff --git a/spec/rtems/signal/if/asr-entry.yml b/spec/rtems/signal/if/asr-entry.yml new file mode 100644 index 00000000..d46b452f --- /dev/null +++ b/spec/rtems/signal/if/asr-entry.yml @@ -0,0 +1,22 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: | + ${asr:/name} ( *${.:/name} )( + ${set:/name} + ) + variants: [] +description: null +enabled-by: true +interface-type: typedef +links: +- role: interface-placement + uid: header-2 +- role: interface-ingroup + uid: group +name: rtems_asr_entry +notes: null +type: interface diff --git a/spec/rtems/signal/if/asr.yml b/spec/rtems/signal/if/asr.yml new file mode 100644 index 00000000..c5fb3d3b --- /dev/null +++ b/spec/rtems/signal/if/asr.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: void ${.:/name} + variants: [] +description: null +enabled-by: true +interface-type: typedef +links: +- role: interface-placement + uid: header-2 +- role: interface-ingroup + uid: group +name: rtems_asr +notes: null +type: interface diff --git a/spec/rtems/signal/if/catch.yml b/spec/rtems/signal/if/catch.yml new file mode 100644 index 00000000..c4438ef9 --- /dev/null +++ b/spec/rtems/signal/if/catch.yml @@ -0,0 +1,34 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${asr-entry:/name} ${.:/params[0]/name} + - ${../../mode/if/mode:/name} ${.:/params[1]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_signal_catch +notes: null +params: +- description: '%' + dir: null + name: asr_handler +- description: '%' + dir: null + name: mode_set +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/signal/if/group.yml b/spec/rtems/signal/if/group.yml new file mode 100644 index 00000000..406fd923 --- /dev/null +++ b/spec/rtems/signal/if/group.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + The Signal Manager provides the capabilities required for asynchronous + communication. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +description: null +enabled-by: true +identifier: RTEMSAPIClassicSignal +interface-type: group +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: ../../if/group +name: Signal Manager +text: | + The Classic API shall provide an interface to the Signal Manager. +type: interface diff --git a/spec/rtems/signal/if/header-2.yml b/spec/rtems/signal/if/header-2.yml new file mode 100644 index 00000000..fc14aa08 --- /dev/null +++ b/spec/rtems/signal/if/header-2.yml @@ -0,0 +1,12 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: This header file defines the parts of the Signal Manager API. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +interface-type: header-file +links: +- role: interface-placement + uid: /if/domain +path: rtems/rtems/asr.h +prefix: cpukit/include +type: interface diff --git a/spec/rtems/signal/if/header.yml b/spec/rtems/signal/if/header.yml new file mode 100644 index 00000000..2a49eb95 --- /dev/null +++ b/spec/rtems/signal/if/header.yml @@ -0,0 +1,12 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: This header file defines the parts of the Signal Manager API. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +interface-type: header-file +links: +- role: interface-placement + uid: /if/domain +path: rtems/rtems/signal.h +prefix: cpukit/include +type: interface diff --git a/spec/rtems/signal/if/send.yml b/spec/rtems/signal/if/send.yml new file mode 100644 index 00000000..c35170c5 --- /dev/null +++ b/spec/rtems/signal/if/send.yml @@ -0,0 +1,34 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + - ${set:/name} ${.:/params[1]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_signal_send +notes: null +params: +- description: '%' + dir: null + name: id +- description: '%' + dir: null + name: signal_set +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/signal/if/set.yml b/spec/rtems/signal/if/set.yml new file mode 100644 index 00000000..dd75a012 --- /dev/null +++ b/spec/rtems/signal/if/set.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/c/if/uint32_t:/name} ${.:/name} + variants: [] +description: null +enabled-by: true +interface-type: typedef +links: +- role: interface-placement + uid: header-2 +- role: interface-ingroup + uid: group +name: rtems_signal_set +notes: null +type: interface diff --git a/spec/rtems/signal/if/signal-0.yml b/spec/rtems/signal/if/signal-0.yml new file mode 100644 index 00000000..8dc5cd78 --- /dev/null +++ b/spec/rtems/signal/if/signal-0.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the signal set associated with signal 0. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000001' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header-2 +- role: interface-ingroup + uid: group +name: RTEMS_SIGNAL_0 +notes: null +type: interface diff --git a/spec/rtems/signal/if/signal-1.yml b/spec/rtems/signal/if/signal-1.yml new file mode 100644 index 00000000..cf9a9271 --- /dev/null +++ b/spec/rtems/signal/if/signal-1.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the signal set associated with signal 1. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000002' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header-2 +- role: interface-ingroup + uid: group +name: RTEMS_SIGNAL_1 +notes: null +type: interface diff --git a/spec/rtems/signal/if/signal-10.yml b/spec/rtems/signal/if/signal-10.yml new file mode 100644 index 00000000..3cdb2757 --- /dev/null +++ b/spec/rtems/signal/if/signal-10.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the signal set associated with signal 10. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000400' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header-2 +- role: interface-ingroup + uid: group +name: RTEMS_SIGNAL_10 +notes: null +type: interface diff --git a/spec/rtems/signal/if/signal-11.yml b/spec/rtems/signal/if/signal-11.yml new file mode 100644 index 00000000..228c53f6 --- /dev/null +++ b/spec/rtems/signal/if/signal-11.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the signal set associated with signal 11. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000800' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header-2 +- role: interface-ingroup + uid: group +name: RTEMS_SIGNAL_11 +notes: null +type: interface diff --git a/spec/rtems/signal/if/signal-12.yml b/spec/rtems/signal/if/signal-12.yml new file mode 100644 index 00000000..9888b93b --- /dev/null +++ b/spec/rtems/signal/if/signal-12.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the signal set associated with signal 12. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00001000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header-2 +- role: interface-ingroup + uid: group +name: RTEMS_SIGNAL_12 +notes: null +type: interface diff --git a/spec/rtems/signal/if/signal-13.yml b/spec/rtems/signal/if/signal-13.yml new file mode 100644 index 00000000..d0f3b9fc --- /dev/null +++ b/spec/rtems/signal/if/signal-13.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the signal set associated with signal 13. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00002000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header-2 +- role: interface-ingroup + uid: group +name: RTEMS_SIGNAL_13 +notes: null +type: interface diff --git a/spec/rtems/signal/if/signal-14.yml b/spec/rtems/signal/if/signal-14.yml new file mode 100644 index 00000000..8e844e7d --- /dev/null +++ b/spec/rtems/signal/if/signal-14.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the signal set associated with signal 14. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00004000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header-2 +- role: interface-ingroup + uid: group +name: RTEMS_SIGNAL_14 +notes: null +type: interface diff --git a/spec/rtems/signal/if/signal-15.yml b/spec/rtems/signal/if/signal-15.yml new file mode 100644 index 00000000..2e0f2e01 --- /dev/null +++ b/spec/rtems/signal/if/signal-15.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the signal set associated with signal 15. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00008000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header-2 +- role: interface-ingroup + uid: group +name: RTEMS_SIGNAL_15 +notes: null +type: interface diff --git a/spec/rtems/signal/if/signal-16.yml b/spec/rtems/signal/if/signal-16.yml new file mode 100644 index 00000000..9a9db466 --- /dev/null +++ b/spec/rtems/signal/if/signal-16.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the signal set associated with signal 16. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00010000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header-2 +- role: interface-ingroup + uid: group +name: RTEMS_SIGNAL_16 +notes: null +type: interface diff --git a/spec/rtems/signal/if/signal-17.yml b/spec/rtems/signal/if/signal-17.yml new file mode 100644 index 00000000..f9bae87c --- /dev/null +++ b/spec/rtems/signal/if/signal-17.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the signal set associated with signal 17. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00020000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header-2 +- role: interface-ingroup + uid: group +name: RTEMS_SIGNAL_17 +notes: null +type: interface diff --git a/spec/rtems/signal/if/signal-18.yml b/spec/rtems/signal/if/signal-18.yml new file mode 100644 index 00000000..8bac5fb1 --- /dev/null +++ b/spec/rtems/signal/if/signal-18.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the signal set associated with signal 18. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00040000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header-2 +- role: interface-ingroup + uid: group +name: RTEMS_SIGNAL_18 +notes: null +type: interface diff --git a/spec/rtems/signal/if/signal-19.yml b/spec/rtems/signal/if/signal-19.yml new file mode 100644 index 00000000..523b1bf1 --- /dev/null +++ b/spec/rtems/signal/if/signal-19.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the signal set associated with signal 19. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00080000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header-2 +- role: interface-ingroup + uid: group +name: RTEMS_SIGNAL_19 +notes: null +type: interface diff --git a/spec/rtems/signal/if/signal-2.yml b/spec/rtems/signal/if/signal-2.yml new file mode 100644 index 00000000..2501a689 --- /dev/null +++ b/spec/rtems/signal/if/signal-2.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the signal set associated with signal 2. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000004' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header-2 +- role: interface-ingroup + uid: group +name: RTEMS_SIGNAL_2 +notes: null +type: interface diff --git a/spec/rtems/signal/if/signal-20.yml b/spec/rtems/signal/if/signal-20.yml new file mode 100644 index 00000000..3cec7d71 --- /dev/null +++ b/spec/rtems/signal/if/signal-20.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the signal set associated with signal 20. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00100000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header-2 +- role: interface-ingroup + uid: group +name: RTEMS_SIGNAL_20 +notes: null +type: interface diff --git a/spec/rtems/signal/if/signal-21.yml b/spec/rtems/signal/if/signal-21.yml new file mode 100644 index 00000000..696cb03d --- /dev/null +++ b/spec/rtems/signal/if/signal-21.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the signal set associated with signal 21. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00200000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header-2 +- role: interface-ingroup + uid: group +name: RTEMS_SIGNAL_21 +notes: null +type: interface diff --git a/spec/rtems/signal/if/signal-22.yml b/spec/rtems/signal/if/signal-22.yml new file mode 100644 index 00000000..1596a828 --- /dev/null +++ b/spec/rtems/signal/if/signal-22.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the signal set associated with signal 22. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00400000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header-2 +- role: interface-ingroup + uid: group +name: RTEMS_SIGNAL_22 +notes: null +type: interface diff --git a/spec/rtems/signal/if/signal-23.yml b/spec/rtems/signal/if/signal-23.yml new file mode 100644 index 00000000..fc90b4db --- /dev/null +++ b/spec/rtems/signal/if/signal-23.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the signal set associated with signal 23. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00800000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header-2 +- role: interface-ingroup + uid: group +name: RTEMS_SIGNAL_23 +notes: null +type: interface diff --git a/spec/rtems/signal/if/signal-24.yml b/spec/rtems/signal/if/signal-24.yml new file mode 100644 index 00000000..ab9da27e --- /dev/null +++ b/spec/rtems/signal/if/signal-24.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the signal set associated with signal 24. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x01000000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header-2 +- role: interface-ingroup + uid: group +name: RTEMS_SIGNAL_24 +notes: null +type: interface diff --git a/spec/rtems/signal/if/signal-25.yml b/spec/rtems/signal/if/signal-25.yml new file mode 100644 index 00000000..819c8084 --- /dev/null +++ b/spec/rtems/signal/if/signal-25.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the signal set associated with signal 25. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x02000000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header-2 +- role: interface-ingroup + uid: group +name: RTEMS_SIGNAL_25 +notes: null +type: interface diff --git a/spec/rtems/signal/if/signal-26.yml b/spec/rtems/signal/if/signal-26.yml new file mode 100644 index 00000000..6a1fb8d2 --- /dev/null +++ b/spec/rtems/signal/if/signal-26.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the signal set associated with signal 26. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x04000000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header-2 +- role: interface-ingroup + uid: group +name: RTEMS_SIGNAL_26 +notes: null +type: interface diff --git a/spec/rtems/signal/if/signal-27.yml b/spec/rtems/signal/if/signal-27.yml new file mode 100644 index 00000000..e26b4e2c --- /dev/null +++ b/spec/rtems/signal/if/signal-27.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the signal set associated with signal 27. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x08000000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header-2 +- role: interface-ingroup + uid: group +name: RTEMS_SIGNAL_27 +notes: null +type: interface diff --git a/spec/rtems/signal/if/signal-28.yml b/spec/rtems/signal/if/signal-28.yml new file mode 100644 index 00000000..409db75e --- /dev/null +++ b/spec/rtems/signal/if/signal-28.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the signal set associated with signal 28. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x10000000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header-2 +- role: interface-ingroup + uid: group +name: RTEMS_SIGNAL_28 +notes: null +type: interface diff --git a/spec/rtems/signal/if/signal-29.yml b/spec/rtems/signal/if/signal-29.yml new file mode 100644 index 00000000..342a6cb4 --- /dev/null +++ b/spec/rtems/signal/if/signal-29.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the signal set associated with signal 29. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x20000000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header-2 +- role: interface-ingroup + uid: group +name: RTEMS_SIGNAL_29 +notes: null +type: interface diff --git a/spec/rtems/signal/if/signal-3.yml b/spec/rtems/signal/if/signal-3.yml new file mode 100644 index 00000000..de04a32f --- /dev/null +++ b/spec/rtems/signal/if/signal-3.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the signal set associated with signal 3. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000008' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header-2 +- role: interface-ingroup + uid: group +name: RTEMS_SIGNAL_3 +notes: null +type: interface diff --git a/spec/rtems/signal/if/signal-30.yml b/spec/rtems/signal/if/signal-30.yml new file mode 100644 index 00000000..aeec2d14 --- /dev/null +++ b/spec/rtems/signal/if/signal-30.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the signal set associated with signal 30. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x40000000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header-2 +- role: interface-ingroup + uid: group +name: RTEMS_SIGNAL_30 +notes: null +type: interface diff --git a/spec/rtems/signal/if/signal-31.yml b/spec/rtems/signal/if/signal-31.yml new file mode 100644 index 00000000..9461f976 --- /dev/null +++ b/spec/rtems/signal/if/signal-31.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the signal set associated with signal 31. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x80000000' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header-2 +- role: interface-ingroup + uid: group +name: RTEMS_SIGNAL_31 +notes: null +type: interface diff --git a/spec/rtems/signal/if/signal-4.yml b/spec/rtems/signal/if/signal-4.yml new file mode 100644 index 00000000..20cc6878 --- /dev/null +++ b/spec/rtems/signal/if/signal-4.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the signal set associated with signal 4. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000010' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header-2 +- role: interface-ingroup + uid: group +name: RTEMS_SIGNAL_4 +notes: null +type: interface diff --git a/spec/rtems/signal/if/signal-5.yml b/spec/rtems/signal/if/signal-5.yml new file mode 100644 index 00000000..4079be3d --- /dev/null +++ b/spec/rtems/signal/if/signal-5.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the signal set associated with signal 5. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000020' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header-2 +- role: interface-ingroup + uid: group +name: RTEMS_SIGNAL_5 +notes: null +type: interface diff --git a/spec/rtems/signal/if/signal-6.yml b/spec/rtems/signal/if/signal-6.yml new file mode 100644 index 00000000..d19cb8c2 --- /dev/null +++ b/spec/rtems/signal/if/signal-6.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the signal set associated with signal 6. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000040' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header-2 +- role: interface-ingroup + uid: group +name: RTEMS_SIGNAL_6 +notes: null +type: interface diff --git a/spec/rtems/signal/if/signal-7.yml b/spec/rtems/signal/if/signal-7.yml new file mode 100644 index 00000000..650af40d --- /dev/null +++ b/spec/rtems/signal/if/signal-7.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the signal set associated with signal 7. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000080' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header-2 +- role: interface-ingroup + uid: group +name: RTEMS_SIGNAL_7 +notes: null +type: interface diff --git a/spec/rtems/signal/if/signal-8.yml b/spec/rtems/signal/if/signal-8.yml new file mode 100644 index 00000000..b18139e0 --- /dev/null +++ b/spec/rtems/signal/if/signal-8.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the signal set associated with signal 8. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000100' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header-2 +- role: interface-ingroup + uid: group +name: RTEMS_SIGNAL_8 +notes: null +type: interface diff --git a/spec/rtems/signal/if/signal-9.yml b/spec/rtems/signal/if/signal-9.yml new file mode 100644 index 00000000..5526d839 --- /dev/null +++ b/spec/rtems/signal/if/signal-9.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the bit in the signal set associated with signal 9. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x00000200' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header-2 +- role: interface-ingroup + uid: group +name: RTEMS_SIGNAL_9 +notes: null +type: interface diff --git a/spec/rtems/status/if/already-suspended.yml b/spec/rtems/status/if/already-suspended.yml new file mode 100644 index 00000000..30b0ae3a --- /dev/null +++ b/spec/rtems/status/if/already-suspended.yml @@ -0,0 +1,16 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This status code indicates that the thread was already suspended. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1989, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '15' + variants: [] +description: null +enabled-by: true +interface-type: enumerator +links: [] +name: RTEMS_ALREADY_SUSPENDED +notes: null +type: interface diff --git a/spec/rtems/status/if/called-from-isr.yml b/spec/rtems/status/if/called-from-isr.yml new file mode 100644 index 00000000..6092755a --- /dev/null +++ b/spec/rtems/status/if/called-from-isr.yml @@ -0,0 +1,17 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This status code indicates that the operation should not be called from this + execution environment. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1989, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '18' + variants: [] +description: null +enabled-by: true +interface-type: enumerator +links: [] +name: RTEMS_CALLED_FROM_ISR +notes: null +type: interface diff --git a/spec/rtems/status/if/code-to-errno.yml b/spec/rtems/status/if/code-to-errno.yml new file mode 100644 index 00000000..40547ff4 --- /dev/null +++ b/spec/rtems/status/if/code-to-errno.yml @@ -0,0 +1,74 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Maps the specified RTEMS status code to a POSIX error number. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: + body: null + params: + - ${code:/name} ${.:/params[0]/name} + return: int + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_status_code_to_errno +notes: null +params: +- description: is the status code to map. + dir: null + name: status_code +return: + return: null + return-values: + - description: | + The status code is ${successful:/name}. + value: '0' + - description: | + The status code is ${invalid-number:/name}. + value: EBADF + - description: | + The status code is ${resource-in-use:/name}. + value: EBUSY + - description: | + The status code is ${interrupted:/name}. + value: EINTR + - description: | + The status code is ${invalid-clock:/name}, + ${invalid-name:/name}, or ${invalid-node:/name}. + value: EINVAL + - description: | + The status code is ${already-suspended:/name}, + ${called-from-isr:/name}, + ${illegal-on-remote-object:/name}, + ${illegal-on-self:/name}, ${incorrect-state:/name}, + ${internal-error:/name}, ${invalid-address:/name}, + ${invalid-id:/name}, ${invalid-priority:/name}, + ${invalid-size:/name}, ${io-error:/name}, + ${mp-not-configured:/name}, ${not-defined:/name}, + ${object-was-deleted:/name}, ${proxy-blocking:/name}, + ${task-exitted:/name}, or ${too-many:/name}. + value: EIO + - description: | + The status code is ${unsatisfied:/name}. + value: ENODEV + - description: | + The status code is ${no-memory:/name}. + value: ENOMEM + - description: | + The status code is ${not-configured:/name} or + ${not-implemented:/name}. + value: ENOSYS + - description: | + The status code is ${not-owner-of-resource:/name}. + value: EPERM + - description: | + The status code is ${timeout:/name}. + value: ETIMEDOUT +type: interface diff --git a/spec/rtems/status/if/code.yml b/spec/rtems/status/if/code.yml new file mode 100644 index 00000000..36ac265f --- /dev/null +++ b/spec/rtems/status/if/code.yml @@ -0,0 +1,77 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This enumeration provides status codes for directives of the Classic API. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition-kind: typedef-only +description: null +enabled-by: true +interface-type: enum +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +- role: interface-enumerator + uid: successful +- role: interface-enumerator + uid: task-exitted +- role: interface-enumerator + uid: mp-not-configured +- role: interface-enumerator + uid: invalid-name +- role: interface-enumerator + uid: invalid-id +- role: interface-enumerator + uid: too-many +- role: interface-enumerator + uid: timeout +- role: interface-enumerator + uid: object-was-deleted +- role: interface-enumerator + uid: invalid-size +- role: interface-enumerator + uid: invalid-address +- role: interface-enumerator + uid: invalid-number +- role: interface-enumerator + uid: not-defined +- role: interface-enumerator + uid: resource-in-use +- role: interface-enumerator + uid: unsatisfied +- role: interface-enumerator + uid: incorrect-state +- role: interface-enumerator + uid: already-suspended +- role: interface-enumerator + uid: illegal-on-self +- role: interface-enumerator + uid: illegal-on-remote-object +- role: interface-enumerator + uid: called-from-isr +- role: interface-enumerator + uid: invalid-priority +- role: interface-enumerator + uid: invalid-clock +- role: interface-enumerator + uid: invalid-node +- role: interface-enumerator + uid: not-configured +- role: interface-enumerator + uid: not-owner-of-resource +- role: interface-enumerator + uid: not-implemented +- role: interface-enumerator + uid: internal-error +- role: interface-enumerator + uid: no-memory +- role: interface-enumerator + uid: io-error +- role: interface-enumerator + uid: interrupted +- role: interface-enumerator + uid: proxy-blocking +name: rtems_status_code +notes: null +type: interface diff --git a/spec/rtems/status/if/first.yml b/spec/rtems/status/if/first.yml new file mode 100644 index 00000000..5f704e9c --- /dev/null +++ b/spec/rtems/status/if/first.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This is the lowest valid value for a Classic API status code. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1989, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${successful:/name} + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_STATUS_CODES_FIRST +notes: null +type: interface diff --git a/spec/rtems/status/if/group.yml b/spec/rtems/status/if/group.yml new file mode 100644 index 00000000..04f0b518 --- /dev/null +++ b/spec/rtems/status/if/group.yml @@ -0,0 +1,18 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This group contains the Classic API status codes and support functions. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +description: null +enabled-by: true +identifier: RTEMSAPIClassicStatus +interface-type: group +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: ../../if/group +name: Directive Status Codes +text: | + The Classic API shall provide an interface to directive status codes. +type: interface diff --git a/spec/rtems/status/if/header.yml b/spec/rtems/status/if/header.yml new file mode 100644 index 00000000..f3ed7d78 --- /dev/null +++ b/spec/rtems/status/if/header.yml @@ -0,0 +1,12 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: This header file defines the status codes provided by API. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +interface-type: header-file +links: +- role: interface-placement + uid: /if/domain +path: rtems/rtems/status.h +prefix: cpukit/include +type: interface diff --git a/spec/rtems/status/if/illegal-on-remote-object.yml b/spec/rtems/status/if/illegal-on-remote-object.yml new file mode 100644 index 00000000..924c6e16 --- /dev/null +++ b/spec/rtems/status/if/illegal-on-remote-object.yml @@ -0,0 +1,16 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This status code indicates that the operation is illegal on a remote object. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1989, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '17' + variants: [] +description: null +enabled-by: true +interface-type: enumerator +links: [] +name: RTEMS_ILLEGAL_ON_REMOTE_OBJECT +notes: null +type: interface diff --git a/spec/rtems/status/if/illegal-on-self.yml b/spec/rtems/status/if/illegal-on-self.yml new file mode 100644 index 00000000..d7479333 --- /dev/null +++ b/spec/rtems/status/if/illegal-on-self.yml @@ -0,0 +1,17 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This status code indicates that the operation is illegal on the calling + thread. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1989, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '16' + variants: [] +description: null +enabled-by: true +interface-type: enumerator +links: [] +name: RTEMS_ILLEGAL_ON_SELF +notes: null +type: interface diff --git a/spec/rtems/status/if/incorrect-state.yml b/spec/rtems/status/if/incorrect-state.yml new file mode 100644 index 00000000..9c30f28b --- /dev/null +++ b/spec/rtems/status/if/incorrect-state.yml @@ -0,0 +1,17 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This status code indicates that an object is in wrong state for the requested + operation. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1989, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '14' + variants: [] +description: null +enabled-by: true +interface-type: enumerator +links: [] +name: RTEMS_INCORRECT_STATE +notes: null +type: interface diff --git a/spec/rtems/status/if/internal-error.yml b/spec/rtems/status/if/internal-error.yml new file mode 100644 index 00000000..fed91daa --- /dev/null +++ b/spec/rtems/status/if/internal-error.yml @@ -0,0 +1,16 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This status code indicates that an internal RTEMS inconsistency was detected. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1989, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '25' + variants: [] +description: null +enabled-by: true +interface-type: enumerator +links: [] +name: RTEMS_INTERNAL_ERROR +notes: null +type: interface diff --git a/spec/rtems/status/if/interrupted.yml b/spec/rtems/status/if/interrupted.yml new file mode 100644 index 00000000..c79fa7fb --- /dev/null +++ b/spec/rtems/status/if/interrupted.yml @@ -0,0 +1,17 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This status code is used internally to indicate a blocking device driver call + has been interrupted and should be reflected to the caller as interrupted. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2019 On-Line Applications Research Corporation (OAR) +definition: + default: '28' + variants: [] +description: null +enabled-by: true +interface-type: enumerator +links: [] +name: RTEMS_INTERRUPTED +notes: null +type: interface diff --git a/spec/rtems/status/if/invalid-address.yml b/spec/rtems/status/if/invalid-address.yml new file mode 100644 index 00000000..e6cb9212 --- /dev/null +++ b/spec/rtems/status/if/invalid-address.yml @@ -0,0 +1,16 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This status code indicates that the specified address is invalid. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1989, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '9' + variants: [] +description: null +enabled-by: true +interface-type: enumerator +links: [] +name: RTEMS_INVALID_ADDRESS +notes: null +type: interface diff --git a/spec/rtems/status/if/invalid-clock.yml b/spec/rtems/status/if/invalid-clock.yml new file mode 100644 index 00000000..6bcd7284 --- /dev/null +++ b/spec/rtems/status/if/invalid-clock.yml @@ -0,0 +1,16 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This status code indicates that the specified date/time was invalid. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1989, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '20' + variants: [] +description: null +enabled-by: true +interface-type: enumerator +links: [] +name: RTEMS_INVALID_CLOCK +notes: null +type: interface diff --git a/spec/rtems/status/if/invalid-id.yml b/spec/rtems/status/if/invalid-id.yml new file mode 100644 index 00000000..d51875ea --- /dev/null +++ b/spec/rtems/status/if/invalid-id.yml @@ -0,0 +1,16 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This status code indicates that the object identifier was invalid. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1989, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '4' + variants: [] +description: null +enabled-by: true +interface-type: enumerator +links: [] +name: RTEMS_INVALID_ID +notes: null +type: interface diff --git a/spec/rtems/status/if/invalid-name.yml b/spec/rtems/status/if/invalid-name.yml new file mode 100644 index 00000000..980951fb --- /dev/null +++ b/spec/rtems/status/if/invalid-name.yml @@ -0,0 +1,16 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This status code indicates that the object name was invalid. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1989, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '3' + variants: [] +description: null +enabled-by: true +interface-type: enumerator +links: [] +name: RTEMS_INVALID_NAME +notes: null +type: interface diff --git a/spec/rtems/status/if/invalid-node.yml b/spec/rtems/status/if/invalid-node.yml new file mode 100644 index 00000000..98bce397 --- /dev/null +++ b/spec/rtems/status/if/invalid-node.yml @@ -0,0 +1,16 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This status code indicates that the specified node identifier was invalid. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1989, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '21' + variants: [] +description: null +enabled-by: true +interface-type: enumerator +links: [] +name: RTEMS_INVALID_NODE +notes: null +type: interface diff --git a/spec/rtems/status/if/invalid-number.yml b/spec/rtems/status/if/invalid-number.yml new file mode 100644 index 00000000..f4c3bd00 --- /dev/null +++ b/spec/rtems/status/if/invalid-number.yml @@ -0,0 +1,16 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This status code indicates that the specified number was invalid. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1989, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '10' + variants: [] +description: null +enabled-by: true +interface-type: enumerator +links: [] +name: RTEMS_INVALID_NUMBER +notes: null +type: interface diff --git a/spec/rtems/status/if/invalid-priority.yml b/spec/rtems/status/if/invalid-priority.yml new file mode 100644 index 00000000..4a4dbcb5 --- /dev/null +++ b/spec/rtems/status/if/invalid-priority.yml @@ -0,0 +1,16 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This status code indicates that an invalid thread priority was provided. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1989, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '19' + variants: [] +description: null +enabled-by: true +interface-type: enumerator +links: [] +name: RTEMS_INVALID_PRIORITY +notes: null +type: interface diff --git a/spec/rtems/status/if/invalid-size.yml b/spec/rtems/status/if/invalid-size.yml new file mode 100644 index 00000000..fc42cae7 --- /dev/null +++ b/spec/rtems/status/if/invalid-size.yml @@ -0,0 +1,16 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This status code indicates that the specified size was invalid. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1989, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '8' + variants: [] +description: null +enabled-by: true +interface-type: enumerator +links: [] +name: RTEMS_INVALID_SIZE +notes: null +type: interface diff --git a/spec/rtems/status/if/io-error.yml b/spec/rtems/status/if/io-error.yml new file mode 100644 index 00000000..f75a11e6 --- /dev/null +++ b/spec/rtems/status/if/io-error.yml @@ -0,0 +1,16 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This status code indicates an driver IO error. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1989, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '27' + variants: [] +description: null +enabled-by: true +interface-type: enumerator +links: [] +name: RTEMS_IO_ERROR +notes: null +type: interface diff --git a/spec/rtems/status/if/is-equal.yml b/spec/rtems/status/if/is-equal.yml new file mode 100644 index 00000000..b3706501 --- /dev/null +++ b/spec/rtems/status/if/is-equal.yml @@ -0,0 +1,37 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Returns true, if the left hand side status code is equal to the right hand + side status code, otherwise returns false. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1989, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: | + return ${.:/params[0]/name} == ${.:/params[1]/name}; + params: + - ${code:/name} ${.:/params[0]/name} + - ${code:/name} ${.:/params[1]/name} + return: ${/c/if/bool:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_are_statuses_equal +notes: null +params: +- description: is the left hand side status code. + dir: null + name: left_status_code +- description: is the right hand side status code. + dir: null + name: right_status_code +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/status/if/is-successful.yml b/spec/rtems/status/if/is-successful.yml new file mode 100644 index 00000000..71dce793 --- /dev/null +++ b/spec/rtems/status/if/is-successful.yml @@ -0,0 +1,33 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Returns true, if the status code is ${successful:/name}, otherwise + returns false. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1989, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: | + return ${.:/params[0]/name} == ${successful:/name}; + params: + - ${code:/name} ${.:/params[0]/name} + return: ${/c/if/bool:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_is_status_successful +notes: null +params: +- description: is the status code. + dir: null + name: status_code +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/status/if/last.yml b/spec/rtems/status/if/last.yml new file mode 100644 index 00000000..fdcebffe --- /dev/null +++ b/spec/rtems/status/if/last.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This is the highest valid value for a Classic API status code. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1989, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${proxy-blocking:/name} + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_STATUS_CODES_LAST +notes: null +type: interface diff --git a/spec/rtems/status/if/mp-not-configured.yml b/spec/rtems/status/if/mp-not-configured.yml new file mode 100644 index 00000000..47f3c259 --- /dev/null +++ b/spec/rtems/status/if/mp-not-configured.yml @@ -0,0 +1,16 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This status code indicates that multiprocessing is not configured. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1989, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '2' + variants: [] +description: null +enabled-by: true +interface-type: enumerator +links: [] +name: RTEMS_MP_NOT_CONFIGURED +notes: null +type: interface diff --git a/spec/rtems/status/if/no-memory.yml b/spec/rtems/status/if/no-memory.yml new file mode 100644 index 00000000..00fbf207 --- /dev/null +++ b/spec/rtems/status/if/no-memory.yml @@ -0,0 +1,17 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This status code indicates that the directive attempted to allocate memory + but was unable to do so. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1989, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '26' + variants: [] +description: null +enabled-by: true +interface-type: enumerator +links: [] +name: RTEMS_NO_MEMORY +notes: null +type: interface diff --git a/spec/rtems/status/if/not-configured.yml b/spec/rtems/status/if/not-configured.yml new file mode 100644 index 00000000..4ab79cb9 --- /dev/null +++ b/spec/rtems/status/if/not-configured.yml @@ -0,0 +1,16 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This status code indicates that the directive was not configured. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1989, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '22' + variants: [] +description: null +enabled-by: true +interface-type: enumerator +links: [] +name: RTEMS_NOT_CONFIGURED +notes: null +type: interface diff --git a/spec/rtems/status/if/not-defined.yml b/spec/rtems/status/if/not-defined.yml new file mode 100644 index 00000000..8f3b93d6 --- /dev/null +++ b/spec/rtems/status/if/not-defined.yml @@ -0,0 +1,16 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This status code indicates that the item has not been initialized. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1989, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '11' + variants: [] +description: null +enabled-by: true +interface-type: enumerator +links: [] +name: RTEMS_NOT_DEFINED +notes: null +type: interface diff --git a/spec/rtems/status/if/not-implemented.yml b/spec/rtems/status/if/not-implemented.yml new file mode 100644 index 00000000..d344da20 --- /dev/null +++ b/spec/rtems/status/if/not-implemented.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This status code indicates the directive or requested portion of the + directive is not implemented. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1989, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '24' + variants: [] +description: | + This is a hint that you have stumbled across an opportunity to submit code to + the RTEMS Project. +enabled-by: true +interface-type: enumerator +links: [] +name: RTEMS_NOT_IMPLEMENTED +notes: null +type: interface diff --git a/spec/rtems/status/if/not-owner-of-resource.yml b/spec/rtems/status/if/not-owner-of-resource.yml new file mode 100644 index 00000000..bd0697c8 --- /dev/null +++ b/spec/rtems/status/if/not-owner-of-resource.yml @@ -0,0 +1,16 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This status code indicates that the caller is not the owner of the resource. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1989, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '23' + variants: [] +description: null +enabled-by: true +interface-type: enumerator +links: [] +name: RTEMS_NOT_OWNER_OF_RESOURCE +notes: null +type: interface diff --git a/spec/rtems/status/if/object-was-deleted.yml b/spec/rtems/status/if/object-was-deleted.yml new file mode 100644 index 00000000..56d3035a --- /dev/null +++ b/spec/rtems/status/if/object-was-deleted.yml @@ -0,0 +1,17 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This status code indicates the object was deleted while the thread was + blocked waiting. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1989, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '7' + variants: [] +description: null +enabled-by: true +interface-type: enumerator +links: [] +name: RTEMS_OBJECT_WAS_DELETED +notes: null +type: interface diff --git a/spec/rtems/status/if/proxy-blocking.yml b/spec/rtems/status/if/proxy-blocking.yml new file mode 100644 index 00000000..f588a6e9 --- /dev/null +++ b/spec/rtems/status/if/proxy-blocking.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This is the status is used internally to RTEMS when performing + operations on behalf of remote tasks. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1989, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '29' + variants: [] +description: | + This is referred to as proxying operations and this status indicates that the + operation could not be completed immediately and the proxy is blocking. +enabled-by: true +interface-type: enumerator +links: [] +name: RTEMS_PROXY_BLOCKING +notes: | + This status will not be returned to the user. +type: interface diff --git a/spec/rtems/status/if/resource-in-use.yml b/spec/rtems/status/if/resource-in-use.yml new file mode 100644 index 00000000..21d609ed --- /dev/null +++ b/spec/rtems/status/if/resource-in-use.yml @@ -0,0 +1,16 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This status code indicates that the object still has resources in use. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1989, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '12' + variants: [] +description: null +enabled-by: true +interface-type: enumerator +links: [] +name: RTEMS_RESOURCE_IN_USE +notes: null +type: interface diff --git a/spec/rtems/status/if/successful.yml b/spec/rtems/status/if/successful.yml new file mode 100644 index 00000000..93ccda45 --- /dev/null +++ b/spec/rtems/status/if/successful.yml @@ -0,0 +1,16 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This status code indicates successful completion. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1989, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0' + variants: [] +description: null +enabled-by: true +interface-type: enumerator +links: [] +name: RTEMS_SUCCESSFUL +notes: null +type: interface diff --git a/spec/rtems/status/if/task-exitted.yml b/spec/rtems/status/if/task-exitted.yml new file mode 100644 index 00000000..30e0df9c --- /dev/null +++ b/spec/rtems/status/if/task-exitted.yml @@ -0,0 +1,16 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This status code indicates that a thread exited. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1989, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '1' + variants: [] +description: null +enabled-by: true +interface-type: enumerator +links: [] +name: RTEMS_TASK_EXITTED +notes: null +type: interface diff --git a/spec/rtems/status/if/text.yml b/spec/rtems/status/if/text.yml new file mode 100644 index 00000000..6e0c9e49 --- /dev/null +++ b/spec/rtems/status/if/text.yml @@ -0,0 +1,32 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: Returns a text describing the specified status code. +copyrights: +- Copyright (C) 2014, 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: + body: null + params: + - ${code:/name} ${.:/params[0]/name} + return: const char * + variants: [] +description: | + The text for each status code is the enumerator constant. +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_status_text +notes: null +params: +- description: is the status code. + dir: null + name: status_code +return: + return: Otherwise, a text describing the status code. + return-values: + - description: The passed status code is invalid. + value: '"?"' +type: interface diff --git a/spec/rtems/status/if/timeout.yml b/spec/rtems/status/if/timeout.yml new file mode 100644 index 00000000..3693682e --- /dev/null +++ b/spec/rtems/status/if/timeout.yml @@ -0,0 +1,16 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This status code indicates that a blocking directive timed out. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1989, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '6' + variants: [] +description: null +enabled-by: true +interface-type: enumerator +links: [] +name: RTEMS_TIMEOUT +notes: null +type: interface diff --git a/spec/rtems/status/if/too-many.yml b/spec/rtems/status/if/too-many.yml new file mode 100644 index 00000000..ccdaa6f1 --- /dev/null +++ b/spec/rtems/status/if/too-many.yml @@ -0,0 +1,17 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This status code indicates you have attempted to create too many instances of + a particular object class. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1989, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '5' + variants: [] +description: null +enabled-by: true +interface-type: enumerator +links: [] +name: RTEMS_TOO_MANY +notes: null +type: interface diff --git a/spec/rtems/status/if/unsatisfied.yml b/spec/rtems/status/if/unsatisfied.yml new file mode 100644 index 00000000..95d2a3af --- /dev/null +++ b/spec/rtems/status/if/unsatisfied.yml @@ -0,0 +1,16 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This status code indicates that the request was not satisfied. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1989, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '13' + variants: [] +description: null +enabled-by: true +interface-type: enumerator +links: [] +name: RTEMS_UNSATISFIED +notes: null +type: interface diff --git a/spec/rtems/support/if/group.yml b/spec/rtems/support/if/group.yml new file mode 100644 index 00000000..eed5270e --- /dev/null +++ b/spec/rtems/support/if/group.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Items of this group should move to other groups. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +description: null +enabled-by: true +identifier: RTEMSAPIClassicSupport +interface-type: group +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: ../../if/group +name: Support Services +text: | + The Classic API should not provide this interface part. +type: interface diff --git a/spec/rtems/support/if/header.yml b/spec/rtems/support/if/header.yml new file mode 100644 index 00000000..2909f94c --- /dev/null +++ b/spec/rtems/support/if/header.yml @@ -0,0 +1,12 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: This header file defines support services of the API. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +interface-type: header-file +links: +- role: interface-placement + uid: /if/domain +path: rtems/rtems/support.h +prefix: cpukit/include +type: interface diff --git a/spec/rtems/support/if/is-name-valid.yml b/spec/rtems/support/if/is-name-valid.yml new file mode 100644 index 00000000..55cc5b55 --- /dev/null +++ b/spec/rtems/support/if/is-name-valid.yml @@ -0,0 +1,36 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Returns true, if the specified object name is valid, otherwise returns false. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1989, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: | + return ${.:/params[0]/name} != 0; + params: + - ${../../status/if/code:/name} ${.:/params[0]/name} + return: ${/c/if/bool:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_is_name_valid +notes: null +params: +- description: is the object name to check. + dir: null + name: name +return: + return: null + return-values: + - description: The specified object name is valid. + value: 'true' + - description: Otherwise. + value: 'false' +type: interface diff --git a/spec/rtems/support/if/microseconds-to-ticks.yml b/spec/rtems/support/if/microseconds-to-ticks.yml new file mode 100644 index 00000000..2a477bf2 --- /dev/null +++ b/spec/rtems/support/if/microseconds-to-ticks.yml @@ -0,0 +1,31 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Returns the number of clock ticks for the specified microseconds value. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: | + ( ( ${.:/params[0]/name} ) / ${../../config/if/get-microseconds-per-tick:/name}() ) + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_MICROSECONDS_TO_TICKS +notes: | + The number of clock ticks per second is defined by the + ${/acfg/if/microseconds-per-tick:/name} application configuration option. +params: +- description: is the microseconds value to convert to clock ticks. + dir: null + name: _us +return: + return: | + The number of clock ticks for the specified microseconds value is returned. + return-values: [] +type: interface diff --git a/spec/rtems/support/if/milliseconds-to-microseconds.yml b/spec/rtems/support/if/milliseconds-to-microseconds.yml new file mode 100644 index 00000000..893c4806 --- /dev/null +++ b/spec/rtems/support/if/milliseconds-to-microseconds.yml @@ -0,0 +1,29 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Returns the number of microseconds for the specified milliseconds value. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: | + ( ( ${.:/params[0]/name} ) * 1000UL ) + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_MILLISECONDS_TO_MICROSECONDS +notes: null +params: +- description: is the milliseconds value to convert to microseconds. + dir: null + name: _ms +return: + return: | + The number of microseconds for the specified milliseconds value is returned. + return-values: [] +type: interface diff --git a/spec/rtems/support/if/milliseconds-to-ticks.yml b/spec/rtems/support/if/milliseconds-to-ticks.yml new file mode 100644 index 00000000..6fa5b54f --- /dev/null +++ b/spec/rtems/support/if/milliseconds-to-ticks.yml @@ -0,0 +1,31 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Returns the number of clock ticks for the specified milliseconds value. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: | + ${microseconds-to-ticks:/name}( ${milliseconds-to-microseconds:/name}( ${.:/params[0]/name} ) ) + variants: [] +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_MILLISECONDS_TO_TICKS +notes: | + The number of clock ticks per second is defined by the + ${/acfg/if/microseconds-per-tick:/name} application configuration option. +params: +- description: is the milliseconds value to convert to clock ticks. + dir: null + name: _ms +return: + return: | + The number of clock ticks for the specified milliseconds value is returned. + return-values: [] +type: interface diff --git a/spec/rtems/support/if/name-to-characters.yml b/spec/rtems/support/if/name-to-characters.yml new file mode 100644 index 00000000..28b9f84e --- /dev/null +++ b/spec/rtems/support/if/name-to-characters.yml @@ -0,0 +1,51 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Breaks the object name into the four component characters. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: | + *${.:/params[1]/name} = (char) ( ${.:/params[0]/name} >> 24 ); + *${.:/params[2]/name} = (char) ( ${.:/params[0]/name} >> 16 ); + *${.:/params[3]/name} = (char) ( ${.:/params[0]/name} >> 8 ); + *${.:/params[4]/name} = (char) ${.:/params[0]/name}; + params: + - ${../../type/if/name:/name} ${.:/params[0]/name} + - char *${.:/params[1]/name} + - char *${.:/params[2]/name} + - char *${.:/params[3]/name} + - char *${.:/params[4]/name} + return: void + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_name_to_characters +notes: null +params: +- description: is the object name to break into four component characters. + dir: null + name: name +- description: is the first character of the object name. + dir: out + name: c1 +- description: is the second character of the object name. + dir: out + name: c2 +- description: is the third character of the object name. + dir: out + name: c3 +- description: is the fourth character of the object name. + dir: out + name: c4 +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/support/if/workspace-allocate.yml b/spec/rtems/support/if/workspace-allocate.yml new file mode 100644 index 00000000..8d2d750a --- /dev/null +++ b/spec/rtems/support/if/workspace-allocate.yml @@ -0,0 +1,34 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${/c/if/size_t:/name} ${.:/params[0]/name} + - void **${.:/params[1]/name} + return: ${/c/if/bool:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_workspace_allocate +notes: null +params: +- description: '%' + dir: null + name: bytes +- description: '%' + dir: null + name: pointer +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/support/if/workspace-free.yml b/spec/rtems/support/if/workspace-free.yml new file mode 100644 index 00000000..e505e997 --- /dev/null +++ b/spec/rtems/support/if/workspace-free.yml @@ -0,0 +1,30 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - void *${.:/params[0]/name} + return: ${/c/if/bool:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_workspace_free +notes: null +params: +- description: '%' + dir: null + name: pointer +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/support/if/workspace-get-information.yml b/spec/rtems/support/if/workspace-get-information.yml new file mode 100644 index 00000000..afde455c --- /dev/null +++ b/spec/rtems/support/if/workspace-get-information.yml @@ -0,0 +1,30 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${/score/heap/if/information-block:/name} *${.:/params[0]/name} + return: ${/c/if/bool:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_workspace_get_information +notes: null +params: +- description: '%' + dir: null + name: the_info +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/support/if/workspace-greedy-allocate-all-except-largest.yml b/spec/rtems/support/if/workspace-greedy-allocate-all-except-largest.yml new file mode 100644 index 00000000..6d03e677 --- /dev/null +++ b/spec/rtems/support/if/workspace-greedy-allocate-all-except-largest.yml @@ -0,0 +1,30 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${/c/if/uintptr_t:/name} *${.:/params[0]/name} + return: void * + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_workspace_greedy_allocate_all_except_largest +notes: null +params: +- description: '%' + dir: null + name: allocatable_size +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/support/if/workspace-greedy-allocate.yml b/spec/rtems/support/if/workspace-greedy-allocate.yml new file mode 100644 index 00000000..32182428 --- /dev/null +++ b/spec/rtems/support/if/workspace-greedy-allocate.yml @@ -0,0 +1,34 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - const ${/c/if/uintptr_t:/name} *${.:/params[0]/name} + - ${/c/if/size_t:/name} ${.:/params[1]/name} + return: void * + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_workspace_greedy_allocate +notes: null +params: +- description: '%' + dir: null + name: block_sizes +- description: '%' + dir: null + name: block_count +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/support/if/workspace-greedy-free.yml b/spec/rtems/support/if/workspace-greedy-free.yml new file mode 100644 index 00000000..49ff431c --- /dev/null +++ b/spec/rtems/support/if/workspace-greedy-free.yml @@ -0,0 +1,30 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - void *${.:/params[0]/name} + return: void + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_workspace_greedy_free +notes: null +params: +- description: '%' + dir: null + name: opaque +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/task/if/argument.yml b/spec/rtems/task/if/argument.yml new file mode 100644 index 00000000..86662e35 --- /dev/null +++ b/spec/rtems/task/if/argument.yml @@ -0,0 +1,21 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This type is used to represent task argument values. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: ${/score/cpu/if/uint32ptr:/name} ${.:/name} + variants: [] +description: null +enabled-by: true +interface-type: typedef +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_task_argument +notes: | + The type is an architecture-specific unsigned integer type which is large + enough to represent pointer values and 32-bit unsigned integers. +type: interface diff --git a/spec/rtems/task/if/config.yml b/spec/rtems/task/if/config.yml new file mode 100644 index 00000000..b2016fb3 --- /dev/null +++ b/spec/rtems/task/if/config.yml @@ -0,0 +1,109 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This structure defines the configuration of a task constructed by + ${construct:/name}. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: +- default: + brief: | + This member defines the name of the task. + definition: ${../../type/if/name:/name} ${.:name} + description: null + kind: member + name: name + variants: [] +- default: + brief: | + This member defines the initial priority of the task. + definition: ${priority:/name} ${.:name} + description: null + kind: member + name: initial_priority + variants: [] +- default: + brief: | + This member shall point to the task storage area begin. + definition: void *${.:name} + description: | + The task storage area will contain the task stack, the thread-local + storage, and the floating-point context on architectures with a separate + floating-point context. + + The task storage area begin address and size should be aligned by + ${storage-alignment:/name}. To avoid memory waste, use + ${../../basedefs/if/aligned:/name} and ${storage-alignment:/name} to enforce + the recommended alignment of a statically allocated task storage area. + kind: member + name: storage_area + variants: [] +- default: + brief: | + This member defines size of the task storage area in bytes. + definition: ${/c/if/size_t:/name} ${.:name} + description: | + Use the ${storage-size:/name} macro to determine the recommended task + storage area size. + kind: member + name: storage_size + variants: [] +- default: + brief: | + This member defines the maximum thread-local storage size supported by the + task storage area. + definition: ${/c/if/size_t:/name} ${.:name} + description: | + Use ${../../basedefs/if/align-up:/name} and ${storage-alignment:/name} to + adjust the size to meet the minimum alignment requirement of a + thread-local storage area used to construct a task. + + If the value is less than the actual thread-local storage size, then the + task construction by ${construct:/name} fails. + + If the is less than the task storage area size, then the task + construction by ${construct:/name} fails. + kind: member + name: maximum_thread_local_storage_size + variants: [] +- default: + brief: | + This member defines the optional handler to free the task storage area. + definition: void ( *${.:name} )( void * ) + description: | + It is called on exactly two mutually exclusive occasions. Firstly, when + the task construction aborts due to a failed task create extension, or + secondly, when the task is deleted. It is called from task context under + protection of the object allocator lock. It is allowed to call free() in + this handler. If handler is ${/c/if/null:/name}, then no action will + be performed. + kind: member + name: storage_free + variants: [] +- default: + brief: | + This member defines the initial modes of the task. + definition: ${../../mode/if/mode:/name} ${.:name} + description: null + kind: member + name: initial_modes + variants: [] +- default: + brief: | + This member defines the attributes of the task. + definition: ${../../attr/if/attribute:/name} ${.:name} + description: null + kind: member + name: attributes + variants: [] +definition-kind: typedef-only +description: null +enabled-by: true +interface-type: struct +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_task_config +notes: null +type: interface diff --git a/spec/rtems/task/if/configured-minimum-stack-size.yml b/spec/rtems/task/if/configured-minimum-stack-size.yml new file mode 100644 index 00000000..24696bc9 --- /dev/null +++ b/spec/rtems/task/if/configured-minimum-stack-size.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_CONFIGURED_MINIMUM_STACK_SIZE +notes: null +type: interface diff --git a/spec/rtems/task/if/construct.yml b/spec/rtems/task/if/construct.yml new file mode 100644 index 00000000..d5168070 --- /dev/null +++ b/spec/rtems/task/if/construct.yml @@ -0,0 +1,91 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Creates a task from the specified the task configuration. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: + body: null + params: + - const ${config:/name} *${.:/params[0]/name} + - ${../../type/if/id:/name} *${.:/params[1]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_task_construct +notes: | + In contrast to tasks created by ${create:/name}, the tasks constructed by + this directive use a user-provided task storage area. The task storage area + contains the task stack, the thread-local storage, and the floating-point + context on architectures with a separate floating-point context. + + It is not recommended to mix ${create:/name} and ${.:/name} in an + application. This directive is intended for applications which do not want + to use the RTEMS Workspace and instead statically allocate all operating + system resources. The stack space estimate done by <rtems/confdefs.h> + assumes that all tasks are created by ${create:/name}. The estimate can be + adjusted to take user-provided task storage areas into account through the + ${/acfg/if/min-tasks-with-user-provided-storage:/name} application + configuration option. +params: +- description: is the task configuration. + dir: null + name: config +- description: | + is the pointer to an object identifier variable. The identifier of the + constructed task object will be stored in this variable, in case of a + successful operation. + dir: out + name: id +return: + return: null + return-values: + - description: | + The requested operation was successful. + value: ${../../status/if/successful:/name} + - description: | + The ${.:/params[1]/name} parameter was ${/c/if/null:/name}. + value: ${../../status/if/invalid-address:/name} + - description: | + The task name was invalid. + value: ${../../status/if/invalid-name:/name} + - description: | + The initial task priority was invalid. + value: ${../../status/if/invalid-priority:/name} + - description: | + The thread-local storage size is greater than the maximum thread-local + storage size specified in the task configuration. The thread-local + storage size is determined by the thread-local variables used by the + application and ${/acfg/if/max-thread-local-storage-size:/name}. + value: ${../../status/if/invalid-size:/name} + - description: | + The task storage area was too small to provide a task stack of the + configured minimum size, see ${/acfg/if/min-task-stack-size:/name}. + The task storage area contains the task stack, the thread-local storage, + and the floating-point context on architectures with a separate + floating-point context. + value: ${../../status/if/invalid-size:/name} + - description: | + There was no inactive task object available to construct a task. + value: ${../../status/if/too-many:/name} + - description: | + In multiprocessing configurations, there was no inactive global object + available to construct a global task. + value: ${../../status/if/too-many:/name} + - description: | + One of the task create extensions failed during the task construction. + value: ${../../status/if/unsatisfied:/name} + - description: | + In SMP configurations, the non-preemption mode was not supported. + value: ${../../status/if/unsatisfied:/name} + - description: | + In SMP configurations, the interrupt level mode was not supported. + value: ${../../status/if/unsatisfied:/name} +type: interface diff --git a/spec/rtems/task/if/create.yml b/spec/rtems/task/if/create.yml new file mode 100644 index 00000000..7baea120 --- /dev/null +++ b/spec/rtems/task/if/create.yml @@ -0,0 +1,101 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Creates a task object. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/name:/name} ${.:/params[0]/name} + - ${priority:/name} ${.:/params[1]/name} + - ${/c/if/size_t:/name} ${.:/params[2]/name} + - ${../../mode/if/mode:/name} ${.:/params[3]/name} + - ${../../attr/if/attribute:/name} ${.:/params[4]/name} + - ${../../type/if/id:/name} *${.:/params[5]/name} + return: ${../../status/if/code:/name} + variants: [] +description: | + This directive creates a task which resides on the local node. It allocates + and initializes a TCB, a stack, and an optional floating point context area. + The mode parameter contains values which sets the task’s initial execution + mode. The RTEMS_FLOATING_POINT attribute should be specified if the created + task is to use a numeric coprocessor. For performance reasons, it is + recommended that tasks not using the numeric coprocessor should specify the + RTEMS_NO_FLOATING_POINT attribute. If the RTEMS_GLOBAL attribute is + specified, the task can be accessed from remote nodes. The task id, returned + in id, is used in other task related directives to access the task. When + created, a task is placed in the dormant state and can only be made ready to + execute using the directive rtems_task_start(). +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_task_create +notes: null +params: +- description: is the user-defined task name. + dir: null + name: name +- description: is the initial task priority. + dir: null + name: initial_priority +- description: is the task stack size in bytes. + dir: null + name: stack_size +- description: is the initial task mode. + dir: null + name: initial_modes +- description: is the task attribute set. + dir: null + name: attribute_set +- description: | + is the pointer to an object identifier variable. The object identifier of + the new task will be stored in this variable, in case of a successful + operation. + dir: out + name: id +return: + return: null + return-values: + - description: | + The requested operation was successful. + value: ${../../status/if/successful:/name} + - description: | + The ${.:/params[5]/name} parameter was ${/c/if/null:/name}. + value: ${../../status/if/invalid-address:/name} + - description: | + The task name was invalid. + value: ${../../status/if/invalid-name:/name} + - description: | + The initial task priority was invalid. + value: ${../../status/if/invalid-priority:/name} + - description: | + The multiprocessing support was not configured. + value: ${../../status/if/mp-not-configured:/name} + - description: | + There was no inactive task object available to create a new task. + value: ${../../status/if/too-many:/name} + - description: | + In multiprocessing configurations, there was no inactive global object + available to create a new global task. + value: ${../../status/if/too-many:/name} + - description: | + There was not enough memory to allocate the task storage area. The task + storage area contains the task stack, the thread-local storage, and the + floating point context. + value: ${../../status/if/unsatisfied:/name} + - description: | + One of the task create extensions failed to create the new task. + value: ${../../status/if/unsatisfied:/name} + - description: | + In SMP configurations, the non-preemption mode was not supported. + value: ${../../status/if/unsatisfied:/name} + - description: | + In SMP configurations, the interrupt level mode was not supported. + value: ${../../status/if/unsatisfied:/name} +type: interface diff --git a/spec/rtems/task/if/current-priority.yml b/spec/rtems/task/if/current-priority.yml new file mode 100644 index 00000000..9dac3e14 --- /dev/null +++ b/spec/rtems/task/if/current-priority.yml @@ -0,0 +1,21 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant is passed to {set-priority:/name}() when the caller wants to + obtain the current priority. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR) +definition: + default: '0' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_CURRENT_PRIORITY +notes: null +type: interface diff --git a/spec/rtems/task/if/delete.yml b/spec/rtems/task/if/delete.yml new file mode 100644 index 00000000..7700116a --- /dev/null +++ b/spec/rtems/task/if/delete.yml @@ -0,0 +1,30 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_task_delete +notes: null +params: +- description: '%' + dir: null + name: id +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/task/if/entry.yml b/spec/rtems/task/if/entry.yml new file mode 100644 index 00000000..66a3c4d2 --- /dev/null +++ b/spec/rtems/task/if/entry.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This type defines the entry point of an RTEMS task. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR) +definition: + default: ${task:/name} ( *${entry:/name} )( ${argument:/name} ) + variants: [] +description: null +enabled-by: true +interface-type: typedef +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_task_entry +notes: null +type: interface diff --git a/spec/rtems/task/if/exit.yml b/spec/rtems/task/if/exit.yml new file mode 100644 index 00000000..fbfe49b5 --- /dev/null +++ b/spec/rtems/task/if/exit.yml @@ -0,0 +1,26 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: [] + return: ${../../basedefs/if/no-return:/name} void + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_task_exit +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/task/if/get-affinity.yml b/spec/rtems/task/if/get-affinity.yml new file mode 100644 index 00000000..ab0a6a70 --- /dev/null +++ b/spec/rtems/task/if/get-affinity.yml @@ -0,0 +1,38 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + - ${/c/if/size_t:/name} ${.:/params[1]/name} + - ${/c/if/cpu_set_t:/name} *${.:/params[2]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_task_get_affinity +notes: null +params: +- description: '%' + dir: null + name: id +- description: '%' + dir: null + name: cpusetsize +- description: '%' + dir: null + name: cpuset +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/task/if/get-priority.yml b/spec/rtems/task/if/get-priority.yml new file mode 100644 index 00000000..e89e982d --- /dev/null +++ b/spec/rtems/task/if/get-priority.yml @@ -0,0 +1,38 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + - ${../../type/if/id:/name} ${.:/params[1]/name} + - ${priority:/name} *${.:/params[2]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_task_get_priority +notes: null +params: +- description: '%' + dir: null + name: task_id +- description: '%' + dir: null + name: scheduler_id +- description: '%' + dir: null + name: priority +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/task/if/get-scheduler.yml b/spec/rtems/task/if/get-scheduler.yml new file mode 100644 index 00000000..4dd97d97 --- /dev/null +++ b/spec/rtems/task/if/get-scheduler.yml @@ -0,0 +1,34 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + - ${../../type/if/id:/name} *${.:/params[1]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_task_get_scheduler +notes: null +params: +- description: '%' + dir: null + name: task_id +- description: '%' + dir: null + name: scheduler_id +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/task/if/group.yml b/spec/rtems/task/if/group.yml new file mode 100644 index 00000000..b9993172 --- /dev/null +++ b/spec/rtems/task/if/group.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + The Task Manager provides a comprehensive set of directives to create, + delete, and administer tasks. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +description: null +enabled-by: true +identifier: RTEMSAPIClassicTasks +interface-type: group +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: ../../if/group +name: Task Manager +text: | + The Classic API shall provide an interface to the Task Manager. +type: interface diff --git a/spec/rtems/task/if/header.yml b/spec/rtems/task/if/header.yml new file mode 100644 index 00000000..3cf3b456 --- /dev/null +++ b/spec/rtems/task/if/header.yml @@ -0,0 +1,12 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: This header file defines the main parts of the Tasks Manager API. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +interface-type: header-file +links: +- role: interface-placement + uid: /if/domain +path: rtems/rtems/tasks.h +prefix: cpukit/include +type: interface diff --git a/spec/rtems/task/if/ident.yml b/spec/rtems/task/if/ident.yml new file mode 100644 index 00000000..1bf657c8 --- /dev/null +++ b/spec/rtems/task/if/ident.yml @@ -0,0 +1,85 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Identifies a task object by the specified object name. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/name:/name} ${.:/params[0]/name} + - ${/c/if/uint32_t:/name} ${.:/params[1]/name} + - ${../../type/if/id:/name} *${.:/params[2]/name} + return: ${../../status/if/code:/name} + variants: [] +description: | + This directive obtains the task identifier associated with the task name + specified in ``${.:/params[0]/name}``. + + A task may obtain its own identifier by specifying ${self-define:/name} for + the name. + + The node to search is specified in ``${.:/params[1]/name}``. It shall be + + * a valid node number, + + * the constant ${../../object/if/search-all-nodes:/name} to search in all nodes, + + * the constant ${../../object/if/search-local-node:/name} to search in the local + node only, or + + * the constant ${../../object/if/search-other-nodes:/name} to search in all nodes + except the local node. +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_task_ident +notes: | + If the task name is not unique, then the task identifier will match the first + task with that name in the search order. However, this task identifier is + not guaranteed to correspond to the desired task. The task identifier is + used with other task related directives to access the task. + + If node is ${../../object/if/search-all-nodes:/name}, all nodes are searched with + the local node being searched first. All other nodes are searched with the + lowest numbered node searched first. + + If node is a valid node number which does not represent the local node, then + only the tasks exported by the designated node are searched. + + This directive does not generate activity on remote nodes. It accesses only + the local copy of the global object table. +params: +- description: is the object name to look up. + dir: null + name: name +- description: is the node or node set to search for a matching object. + dir: null + name: node +- description: | + is the pointer to an object identifier variable. The object identifier of + an object with the specified name will be stored in this variable, in case + of a successful operation. + dir: out + name: id +return: + return: null + return-values: + - description: | + The requested operation was successful. + value: ${../../status/if/successful:/name} + - description: | + The ${.:/params[2]/name} parameter was ${/c/if/null:/name}. + value: ${../../status/if/invalid-address:/name} + - description: | + There was no object with the specified name on the specified nodes. + value: ${../../status/if/invalid-name:/name} + - description: | + In multiprocessing configurations, the specified node was invalid. + value: ${../../status/if/invalid-node:/name} +type: interface diff --git a/spec/rtems/task/if/initialization-table.yml b/spec/rtems/task/if/initialization-table.yml new file mode 100644 index 00000000..71f463e0 --- /dev/null +++ b/spec/rtems/task/if/initialization-table.yml @@ -0,0 +1,67 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR) +definition: +- default: + brief: '%' + definition: ${../../type/if/name:/name} ${.:name} + description: '%' + kind: member + name: name + variants: [] +- default: + brief: '%' + definition: ${/c/if/size_t:/name} ${.:name} + description: '%' + kind: member + name: stack_size + variants: [] +- default: + brief: '%' + definition: ${priority:/name} ${.:name} + description: '%' + kind: member + name: initial_priority + variants: [] +- default: + brief: '%' + definition: ${../../attr/if/attribute:/name} ${.:name} + description: '%' + kind: member + name: attribute_set + variants: [] +- default: + brief: '%' + definition: ${entry:/name} ${.:name} + description: '%' + kind: member + name: entry_point + variants: [] +- default: + brief: '%' + definition: ${../../mode/if/mode:/name} ${.:name} + description: '%' + kind: member + name: mode_set + variants: [] +- default: + brief: '%' + definition: ${argument:/name} ${.:name} + description: '%' + kind: member + name: argument + variants: [] +definition-kind: typedef-only +description: null +enabled-by: true +interface-type: struct +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_initialization_tasks_table +notes: null +type: interface diff --git a/spec/rtems/task/if/is-suspended.yml b/spec/rtems/task/if/is-suspended.yml new file mode 100644 index 00000000..67f1d731 --- /dev/null +++ b/spec/rtems/task/if/is-suspended.yml @@ -0,0 +1,30 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_task_is_suspended +notes: null +params: +- description: '%' + dir: null + name: id +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/task/if/iterate.yml b/spec/rtems/task/if/iterate.yml new file mode 100644 index 00000000..a28c0042 --- /dev/null +++ b/spec/rtems/task/if/iterate.yml @@ -0,0 +1,34 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${visitor:/name} ${.:/params[0]/name} + - void *${.:/params[1]/name} + return: void + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_task_iterate +notes: null +params: +- description: '%' + dir: null + name: visitor +- description: '%' + dir: null + name: arg +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/task/if/maximum-priority.yml b/spec/rtems/task/if/maximum-priority.yml new file mode 100644 index 00000000..9f96e3f9 --- /dev/null +++ b/spec/rtems/task/if/maximum-priority.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/if/maximum-priority:/name}() + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_MAXIMUM_PRIORITY +notes: null +type: interface diff --git a/spec/rtems/task/if/minimum-priority.yml b/spec/rtems/task/if/minimum-priority.yml new file mode 100644 index 00000000..89511f09 --- /dev/null +++ b/spec/rtems/task/if/minimum-priority.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR) +definition: + default: '1' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_MINIMUM_PRIORITY +notes: null +type: interface diff --git a/spec/rtems/task/if/minimum-stack-size.yml b/spec/rtems/task/if/minimum-stack-size.yml new file mode 100644 index 00000000..216100da --- /dev/null +++ b/spec/rtems/task/if/minimum-stack-size.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/stack/if/minimum-size:/name} + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_MINIMUM_STACK_SIZE +notes: null +type: interface diff --git a/spec/rtems/task/if/mode.yml b/spec/rtems/task/if/mode.yml new file mode 100644 index 00000000..181d6866 --- /dev/null +++ b/spec/rtems/task/if/mode.yml @@ -0,0 +1,38 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../mode/if/mode:/name} ${.:/params[0]/name} + - ${../../mode/if/mode:/name} ${.:/params[1]/name} + - ${../../mode/if/mode:/name} *${.:/params[2]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_task_mode +notes: null +params: +- description: '%' + dir: null + name: mode_set +- description: '%' + dir: null + name: mask +- description: '%' + dir: null + name: previous_mode_set +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/task/if/no-priority.yml b/spec/rtems/task/if/no-priority.yml new file mode 100644 index 00000000..8b6f0668 --- /dev/null +++ b/spec/rtems/task/if/no-priority.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR) +definition: + default: ${current-priority:/name} + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_NO_PRIORITY +notes: null +type: interface diff --git a/spec/rtems/task/if/priority.yml b/spec/rtems/task/if/priority.yml new file mode 100644 index 00000000..2f1e7ef6 --- /dev/null +++ b/spec/rtems/task/if/priority.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR) +definition: + default: ${/c/if/uint32_t:/name} ${.:/name} + variants: [] +description: null +enabled-by: true +interface-type: typedef +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_task_priority +notes: null +type: interface diff --git a/spec/rtems/task/if/restart.yml b/spec/rtems/task/if/restart.yml new file mode 100644 index 00000000..08642b0d --- /dev/null +++ b/spec/rtems/task/if/restart.yml @@ -0,0 +1,34 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + - ${argument:/name} ${.:/params[1]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_task_restart +notes: null +params: +- description: '%' + dir: null + name: id +- description: '%' + dir: null + name: argument +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/task/if/resume.yml b/spec/rtems/task/if/resume.yml new file mode 100644 index 00000000..8b24c3e6 --- /dev/null +++ b/spec/rtems/task/if/resume.yml @@ -0,0 +1,30 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_task_resume +notes: null +params: +- description: '%' + dir: null + name: id +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/task/if/self-define.yml b/spec/rtems/task/if/self-define.yml new file mode 100644 index 00000000..0b6ad3d7 --- /dev/null +++ b/spec/rtems/task/if/self-define.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/object/if/id-of-self:/name} + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_SELF +notes: null +type: interface diff --git a/spec/rtems/task/if/self.yml b/spec/rtems/task/if/self.yml new file mode 100644 index 00000000..e213058c --- /dev/null +++ b/spec/rtems/task/if/self.yml @@ -0,0 +1,26 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: [] + return: ${../../type/if/id:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_task_self +notes: null +params: [] +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/task/if/set-affinity.yml b/spec/rtems/task/if/set-affinity.yml new file mode 100644 index 00000000..e97621db --- /dev/null +++ b/spec/rtems/task/if/set-affinity.yml @@ -0,0 +1,38 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + - ${/c/if/size_t:/name} ${.:/params[1]/name} + - const ${/c/if/cpu_set_t:/name} *${.:/params[2]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_task_set_affinity +notes: null +params: +- description: '%' + dir: null + name: id +- description: '%' + dir: null + name: cpusetsize +- description: '%' + dir: null + name: cpuset +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/task/if/set-priority.yml b/spec/rtems/task/if/set-priority.yml new file mode 100644 index 00000000..31504781 --- /dev/null +++ b/spec/rtems/task/if/set-priority.yml @@ -0,0 +1,38 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + - ${priority:/name} ${.:/params[1]/name} + - ${priority:/name} *${.:/params[2]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_task_set_priority +notes: null +params: +- description: '%' + dir: null + name: id +- description: '%' + dir: null + name: new_priority +- description: '%' + dir: null + name: old_priority +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/task/if/set-scheduler.yml b/spec/rtems/task/if/set-scheduler.yml new file mode 100644 index 00000000..cbfb45d2 --- /dev/null +++ b/spec/rtems/task/if/set-scheduler.yml @@ -0,0 +1,38 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + - ${../../type/if/id:/name} ${.:/params[1]/name} + - ${priority:/name} ${.:/params[2]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_task_set_scheduler +notes: null +params: +- description: '%' + dir: null + name: task_id +- description: '%' + dir: null + name: scheduler_id +- description: '%' + dir: null + name: priority +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/task/if/start.yml b/spec/rtems/task/if/start.yml new file mode 100644 index 00000000..54d757fc --- /dev/null +++ b/spec/rtems/task/if/start.yml @@ -0,0 +1,38 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + - ${entry:/name} ${.:/params[1]/name} + - ${argument:/name} ${.:/params[2]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_task_start +notes: null +params: +- description: '%' + dir: null + name: id +- description: '%' + dir: null + name: entry_point +- description: '%' + dir: null + name: argument +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/task/if/storage-alignment.yml b/spec/rtems/task/if/storage-alignment.yml new file mode 100644 index 00000000..d6ae3593 --- /dev/null +++ b/spec/rtems/task/if/storage-alignment.yml @@ -0,0 +1,22 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This constant defines the recommended alignment of a task storage area in + bytes. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: ${/score/cpu/if/heap-alignment:/name} + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_TASK_STORAGE_ALIGNMENT +notes: | + Use it with ${../../basedefs/if/aligned:/name} to define the alignment of a + statically allocated task storage area. +type: interface diff --git a/spec/rtems/task/if/storage-size.yml b/spec/rtems/task/if/storage-size.yml new file mode 100644 index 00000000..5bc137a8 --- /dev/null +++ b/spec/rtems/task/if/storage-size.yml @@ -0,0 +1,41 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Returns the recommended task storage area size for the specified size and task + attributes. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: | + ( ( ${.:/params[0]/name} ) + + ( ( ( ${.:/params[1]/name} ) & ${../../attr/if/floating-point:/name} ) != 0 ? + ${/score/context/if/fp-size:/name} : 0 ) ) + variants: + - definition: | + ( ( ${.:/params[0]/name} ) + ${/score/context/if/fp-size:/name} ) + enabled-by: + - ${/score/cpu/if/all-tasks-are-fp:/name} == ${../../basedefs/if/true:/name} +description: null +enabled-by: true +interface-type: macro +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_TASK_STORAGE_SIZE +notes: null +params: +- description: | + is the size dedicated to the task stack and thread-local storage in bytes. + dir: null + name: _size +- description: | + is the attribute set of the task using the storage area. + dir: null + name: _attributes +return: + return: | + The recommended task storage area size calculated from the input parameters + is returned. + return-values: [] +type: interface diff --git a/spec/rtems/task/if/suspend.yml b/spec/rtems/task/if/suspend.yml new file mode 100644 index 00000000..06d15212 --- /dev/null +++ b/spec/rtems/task/if/suspend.yml @@ -0,0 +1,30 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_task_suspend +notes: null +params: +- description: '%' + dir: null + name: id +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/task/if/task.yml b/spec/rtems/task/if/task.yml new file mode 100644 index 00000000..fabc40ac --- /dev/null +++ b/spec/rtems/task/if/task.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR) +definition: + default: void ${.:/name} + variants: [] +description: null +enabled-by: true +interface-type: typedef +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_task +notes: null +type: interface diff --git a/spec/rtems/task/if/tcb.yml b/spec/rtems/task/if/tcb.yml new file mode 100644 index 00000000..2da894cd --- /dev/null +++ b/spec/rtems/task/if/tcb.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR) +definition: + default: struct _Thread_Control ${.:/name} + variants: [] +description: null +enabled-by: true +interface-type: typedef +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_tcb +notes: null +type: interface diff --git a/spec/rtems/task/if/visitor.yml b/spec/rtems/task/if/visitor.yml new file mode 100644 index 00000000..3d5b3aac --- /dev/null +++ b/spec/rtems/task/if/visitor.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR) +definition: + default: ${/c/if/bool:/name}( *${.:/name} )( ${tcb:/name} *, void * ) + variants: [] +description: null +enabled-by: true +interface-type: typedef +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_task_visitor +notes: null +type: interface diff --git a/spec/rtems/task/if/wake-after.yml b/spec/rtems/task/if/wake-after.yml new file mode 100644 index 00000000..10a83a37 --- /dev/null +++ b/spec/rtems/task/if/wake-after.yml @@ -0,0 +1,30 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/interval:/name} ${.:/params[0]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_task_wake_after +notes: null +params: +- description: '%' + dir: null + name: ticks +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/task/if/wake-when.yml b/spec/rtems/task/if/wake-when.yml new file mode 100644 index 00000000..3eb88c61 --- /dev/null +++ b/spec/rtems/task/if/wake-when.yml @@ -0,0 +1,30 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/time-of-day:/name} *${.:/params[0]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_task_wake_when +notes: null +params: +- description: '%' + dir: null + name: time_buffer +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/task/if/yield-processor.yml b/spec/rtems/task/if/yield-processor.yml new file mode 100644 index 00000000..ab5aaaf9 --- /dev/null +++ b/spec/rtems/task/if/yield-processor.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2017 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/watchdog/if/no-timeout:/name} + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_YIELD_PROCESSOR +notes: null +type: interface diff --git a/spec/rtems/task/req/construct-errors.yml b/spec/rtems/task/req/construct-errors.yml new file mode 100644 index 00000000..e912671d --- /dev/null +++ b/spec/rtems/task/req/construct-errors.yml @@ -0,0 +1,499 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +functional-type: action +links: +- role: interface-function + uid: /rtems/task/if/construct +post-conditions: +- name: Status + states: + - name: Ok + test-code: | + T_rsc_success( ctx->status ); + T_eq_ptr( ctx->id, &ctx->id_value ); + T_ne_u32( ctx->id_value, 0xffffffff ); + + sc = rtems_task_delete( ctx->id_value ); + T_rsc_success( sc ); + text: | + The status shall be RTEMS_SUCCESSFUL. The value of the object identifier + referenced by the id parameter shall identify the constructed task. + - name: InvAddress + test-code: | + T_rsc( ctx->status, RTEMS_INVALID_ADDRESS ); + T_null( ctx->id ); + T_eq_u32( ctx->id_value, 0xffffffff ); + text: | + The status shall be RTEMS_INVALID_ADDRESS. + - name: InvName + test-code: | + T_rsc( ctx->status, RTEMS_INVALID_NAME ); + T_eq_u32( ctx->id_value, 0xffffffff ); + text: | + The status shall be RTEMS_INVALID_NAME. If the id parameter is not NULL, + then the value of the object identifier referenced by the id parameter + shall be unchanged. + - name: InvPrio + test-code: | + T_rsc( ctx->status, RTEMS_INVALID_PRIORITY ); + T_eq_u32( ctx->id_value, 0xffffffff ); + text: | + The status shall be RTEMS_INVALID_PRIORITY. If the id parameter is not + NULL, then the value of the object identifier referenced by the id + parameter shall be unchanged. + - name: InvSize + test-code: | + T_rsc( ctx->status, RTEMS_INVALID_SIZE ); + T_eq_u32( ctx->id_value, 0xffffffff ); + text: | + The status shall be RTEMS_INVALID_SIZE. If the id parameter is not NULL, + then the value of the object identifier referenced by the id parameter + shall be unchanged. + - name: TooMany + test-code: | + T_rsc( ctx->status, RTEMS_TOO_MANY ); + T_eq_u32( ctx->id_value, 0xffffffff ); + text: | + The status shall be RTEMS_TOO_MANY. If the id parameter is not NULL, + then the value of the object identifier referenced by the id parameter + shall be unchanged. + - name: Unsatisfied + test-code: | + T_rsc( ctx->status, RTEMS_UNSATISFIED ); + T_eq_u32( ctx->id_value, 0xffffffff ); + text: | + The status shall be RTEMS_UNSATISFIED. If the id parameter is not NULL, + then the value of the object identifier referenced by the id parameter + shall be unchanged. + test-epilogue: null + test-prologue: | + rtems_status_code sc; +pre-conditions: +- name: Id + states: + - name: Id + test-code: | + ctx->id = &ctx->id_value; + text: | + The id parameter shall reference an object identifier value. + - name: 'Null' + test-code: | + ctx->id = NULL; + text: | + The id parameter shall be NULL. + test-epilogue: null + test-prologue: null +- name: Name + states: + - name: Valid + test-code: | + ctx->config.name = rtems_build_name( 'N', 'A', 'M', 'E' ); + text: | + The name of the task configuration shall be valid. + - name: Inv + test-code: | + ctx->config.name = 0; + text: | + The name of the task configuration shall be invalid. + test-epilogue: null + test-prologue: null +- name: Prio + states: + - name: Valid + test-code: | + ctx->config.initial_priority = 254; + text: | + The initial priority of the task configuration shall be valid. + - name: Zero + test-code: | + ctx->config.initial_priority = 0; + text: | + The initial priority of the task configuration shall be zero. + - name: Inv + test-code: | + ctx->config.initial_priority = 0xffffffff; + text: | + The initial priority of the task configuration shall be invalid. + test-epilogue: null + test-prologue: null +- name: Tasks + states: + - name: Avail + test-code: | + /* Nothing to do */ + text: | + There shall be at least one inactive task object available. + - name: None + test-code: | + create_extension_status = ctx->create_extension_status; + ctx->create_extension_status = true; + + while ( true ) { + rtems_status_code sc; + rtems_id id; + + sc = rtems_task_construct( &valid_task_config, &id ); + + if ( sc == RTEMS_SUCCESSFUL ) { + Objects_Control *obj; + const Objects_Information *info; + + info = _Objects_Get_information_id( id ); + T_quiet_assert_not_null( info ); + obj = _Objects_Get_no_protection( id, info ); + T_quiet_assert_not_null( obj ); + _Chain_Append_unprotected( &ctx->tasks, &obj->Node ); + } else { + T_quiet_rsc( sc, RTEMS_TOO_MANY ); + break; + } + } + + ctx->create_extension_status = create_extension_status; + text: | + There shall be no inactive task object available. + test-epilogue: null + test-prologue: | + bool create_extension_status; +- name: TLS + states: + - name: Enough + test-code: | + ctx->config.maximum_thread_local_storage_size = MAX_TLS_SIZE; + text: | + The maximum thread-local storage size of the task configuration shall be + greater than or equal to the thread-local storage size. + - name: Small + test-code: | + ctx->config.maximum_thread_local_storage_size = 0; + text: | + The maximum thread-local storage size of the task configuration shall be + less than the thread-local storage size. + test-epilogue: null + test-prologue: null +- name: Stack + states: + - name: Enough + test-code: | + ctx->stack_size = RTEMS_MINIMUM_STACK_SIZE; + text: | + The task stack size of the task configuration shall be greater than or + equal to the configured minimum size. + - name: Small + test-code: | + ctx->stack_size = 0; + text: | + The task stack size of the task configuration shall be less than to the + configured minimum size. + test-epilogue: null + test-prologue: null +- name: Ext + states: + - name: Ok + test-code: | + ctx->create_extension_status = true; + text: | + None of the task create extensions shall fail. + - name: Err + test-code: | + ctx->create_extension_status = false; + text: | + At least one of the task create extensions shall fail. + test-epilogue: null + test-prologue: null +- name: Preempt + states: + - name: 'Yes' + test-code: | + ctx->config.initial_modes &= ~RTEMS_PREEMPT_MASK; + ctx->config.initial_modes |= RTEMS_PREEMPT; + text: | + The preemptible mode in the initial modes of the task configuration shall + be set to preemptible. + - name: 'No' + test-code: | + ctx->config.initial_modes &= ~RTEMS_PREEMPT_MASK; + ctx->config.initial_modes |= RTEMS_NO_PREEMPT; + text: | + The preemptible mode in the initial modes of the task configuration shall + be set to non-preemptible. + test-epilogue: null + test-prologue: null +rationale: null +references: [] +requirement-type: functional +skip-reasons: {} +test-action: | + ctx->config.storage_size = RTEMS_TASK_STORAGE_SIZE( + ctx->config.maximum_thread_local_storage_size + ctx->stack_size, + ctx->config.attributes + ); + ctx->status = rtems_task_construct( &ctx->config, ctx->id ); +test-brief: null +test-cleanup: | + Chain_Node *node; + + while ( ( node = _Chain_Get_unprotected( &ctx->tasks ) ) ) { + Objects_Control *obj; + rtems_status_code sc; + + obj = (Objects_Control *) node; + sc = rtems_task_delete( obj->id ); + T_quiet_rsc_success( sc ); + } +test-context: +- brief: null + description: null + member: rtems_status_code status +- brief: null + description: null + member: rtems_task_config config +- brief: null + description: null + member: rtems_id *id +- brief: null + description: null + member: rtems_id id_value +- brief: null + description: null + member: bool create_extension_status +- brief: null + description: null + member: size_t stack_size +- brief: null + description: null + member: rtems_id extension_id +- brief: null + description: null + member: Chain_Control tasks +test-context-support: null +test-description: null +test-header: null +test-includes: +- rtems.h +- rtems/score/chainimpl.h +- rtems/score/objectimpl.h +- string.h +test-local-includes: [] +test-prepare: | + ctx->id_value = 0xffffffff; + memset( &ctx->config, 0, sizeof( ctx->config ) ); +test-setup: + brief: null + code: | + rtems_status_code sc; + int var; + + var = tls_variable; + RTEMS_OBFUSCATE_VARIABLE( var ); + tls_variable = var; + + sc = rtems_extension_create( + rtems_build_name( 'T', 'C', 'F', 'C' ), + &extensions, + &ctx->extension_id + ); + T_rsc_success( sc ); + + _Chain_Initialize_empty( &ctx->tasks ); + description: null +test-stop: null +test-support: | + static _Thread_local int tls_variable; + + #define MAX_TLS_SIZE RTEMS_ALIGN_UP( 128, RTEMS_TASK_STORAGE_ALIGNMENT ) + + RTEMS_ALIGNED( RTEMS_TASK_STORAGE_ALIGNMENT ) static char task_storage[ + RTEMS_TASK_STORAGE_SIZE( + MAX_TLS_SIZE + RTEMS_MINIMUM_STACK_SIZE, + RTEMS_FLOATING_POINT + ) + ]; + + static const rtems_task_config valid_task_config = { + .name = rtems_build_name( 'T', 'A', 'S', 'K' ), + .initial_priority = 1, + .storage_area = task_storage, + .storage_size = sizeof( task_storage ), + .maximum_thread_local_storage_size = MAX_TLS_SIZE, + .initial_modes = RTEMS_DEFAULT_MODES, + .attributes = RTEMS_DEFAULT_MODES + }; + + static bool ThreadCreate( rtems_tcb *executing, rtems_tcb *created ) + { + (void) executing; + (void) created; + + return RtemsTaskReqConstructErrors_Instance.create_extension_status; + } + + static const rtems_extensions_table extensions = { + .thread_create = ThreadCreate + }; +test-target: testsuites/validation/tc-task-construct-errors.c +test-teardown: + brief: null + code: | + rtems_status_code sc; + + sc = rtems_extension_delete( ctx->extension_id ); + T_rsc_success( sc ); + description: null +text: ${.:text-template} +transition-map: +- enabled-by: true + post-conditions: + Status: Ok + pre-conditions: + Id: + - Id + Name: + - Valid + Prio: + - Valid + Tasks: + - Avail + TLS: + - Enough + Stack: + - Enough + Ext: + - Ok + Preempt: all +- enabled-by: true + post-conditions: + Status: InvAddress + pre-conditions: + Id: + - 'Null' + Name: all + Prio: all + Tasks: all + TLS: all + Stack: all + Ext: all + Preempt: all +- enabled-by: true + post-conditions: + Status: InvName + pre-conditions: + Id: + - Id + Name: + - Inv + Prio: all + Tasks: all + TLS: all + Stack: all + Ext: all + Preempt: all +- enabled-by: true + post-conditions: + Status: InvPrio + pre-conditions: + Id: + - Id + Name: + - Valid + Prio: + - Zero + - Inv + Tasks: all + TLS: all + Stack: all + Ext: all + Preempt: all +- enabled-by: true + post-conditions: + Status: TooMany + pre-conditions: + Id: + - Id + Name: + - Valid + Prio: + - Valid + Tasks: + - None + TLS: all + Stack: all + Ext: all + Preempt: all +- enabled-by: true + post-conditions: + Status: InvSize + pre-conditions: + Id: + - Id + Name: + - Valid + Prio: + - Valid + Tasks: + - Avail + TLS: + - Small + Stack: all + Ext: all + Preempt: all +- enabled-by: true + post-conditions: + Status: InvSize + pre-conditions: + Id: + - Id + Name: + - Valid + Prio: + - Valid + Tasks: + - Avail + TLS: + - Enough + Stack: + - Small + Ext: all + Preempt: all +- enabled-by: true + post-conditions: + Status: Unsatisfied + pre-conditions: + Id: + - Id + Name: + - Valid + Prio: + - Valid + Tasks: + - Avail + TLS: + - Enough + Stack: + - Enough + Ext: + - Err + Preempt: all +- enabled-by: RTEMS_SMP + post-conditions: + Status: Unsatisfied + pre-conditions: + Id: + - Id + Name: + - Valid + Prio: + - Valid + Tasks: + - Avail + TLS: + - Enough + Stack: + - Enough + Ext: + - Ok + Preempt: + - 'No' +type: requirement diff --git a/spec/rtems/task/req/ident.yml b/spec/rtems/task/req/ident.yml new file mode 100644 index 00000000..0fbfd0dc --- /dev/null +++ b/spec/rtems/task/req/ident.yml @@ -0,0 +1,123 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +functional-type: action +links: +- role: interface-function + uid: /rtems/task/if/ident +post-conditions: +- name: Post + states: + - name: OkAndSelfId + test-code: | + T_rsc(ctx->status, RTEMS_SUCCESSFUL); + T_eq_ptr(ctx->id, &ctx->id_value); + T_eq_u32(ctx->id_value, rtems_task_self()); + text: | + The status shall be RTEMS_SUCCESSFUL. The value of the object identifier + referenced by the id parameter shall be the identifier of the executing + thread. + - name: Generic + test-code: | + /* Checks performed by ${../req/ident:/test-run}() */ + text: | + The post-condition status shall be specified by ${../req/ident}. + test-epilogue: null + test-prologue: null +pre-conditions: +- name: Pre + states: + - name: Self + test-code: | + ctx->id_value = 0xffffffff; + ctx->id = &ctx->id_value; + text: | + The name parameter shall be RTEMS_SELF. + - name: Generic + test-code: | + ctx->id = NULL; + /* Preparation performed by ${../req/ident:/test-run}() */ + text: | + The pre-condition status shall be specified by ${../req/ident}. + test-epilogue: null + test-prologue: null +rationale: null +references: [] +requirement-type: functional +skip-reasons: {} +test-action: | + if ( ctx->id != NULL ) { + ctx->status = rtems_task_ident( RTEMS_SELF, 0xdeadbeef, ctx->id ); + } else { + ${../req/ident:/test-run}( + ctx->id_local_object, + ClassicTaskIdentAction + ); + } +test-brief: null +test-cleanup: null +test-context: +- brief: null + description: null + member: rtems_status_code status +- brief: null + description: null + member: rtems_id *id +- brief: null + description: null + member: rtems_id id_value +- brief: null + description: null + member: rtems_id id_local_object +test-context-support: null +test-description: null +test-header: null +test-includes: [] +test-local-includes: +- tr-object-ident.h +test-prepare: null +test-setup: + brief: null + code: | + static char task_storage[ RTEMS_MINIMUM_STACK_SIZE ]; + static const rtems_task_config task_config = { + .name = ClassicObjectIdentName, + .initial_priority = 1, + .storage_area = task_storage, + .storage_size = sizeof( task_storage ), + .initial_modes = RTEMS_DEFAULT_MODES, + .attributes = RTEMS_DEFAULT_ATTRIBUTES + }; + rtems_status_code sc; + + sc = rtems_task_build( &task_config, &ctx->id_local_object ); + T_assert_rsc_success( sc ); + description: null +test-stop: null +test-support: | + static rtems_status_code ClassicTaskIdentAction( + rtems_name name, + uint32_t node, + rtems_id *id + ) + { + return rtems_task_ident( name, node, id ); + } +test-target: testsuites/validation/tc-task-ident.c +test-teardown: null +text: ${.:text-template} +transition-map: +- enabled-by: true + post-conditions: + Post: OkAndSelfId + pre-conditions: + Pre: + - Self +- enabled-by: true + post-conditions: + Post: Generic + pre-conditions: + Pre: + - Generic +type: requirement diff --git a/spec/rtems/timer/if/cancel.yml b/spec/rtems/timer/if/cancel.yml new file mode 100644 index 00000000..0d34be46 --- /dev/null +++ b/spec/rtems/timer/if/cancel.yml @@ -0,0 +1,30 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_timer_cancel +notes: null +params: +- description: '%' + dir: null + name: id +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/timer/if/class-bit-not-dormant.yml b/spec/rtems/timer/if/class-bit-not-dormant.yml new file mode 100644 index 00000000..9c955b73 --- /dev/null +++ b/spec/rtems/timer/if/class-bit-not-dormant.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x4' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: TIMER_CLASS_BIT_NOT_DORMANT +notes: null +type: interface diff --git a/spec/rtems/timer/if/class-bit-on-task.yml b/spec/rtems/timer/if/class-bit-on-task.yml new file mode 100644 index 00000000..04a206eb --- /dev/null +++ b/spec/rtems/timer/if/class-bit-on-task.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x2' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: TIMER_CLASS_BIT_ON_TASK +notes: null +type: interface diff --git a/spec/rtems/timer/if/class-bit-time-of-day.yml b/spec/rtems/timer/if/class-bit-time-of-day.yml new file mode 100644 index 00000000..9bd0d9d0 --- /dev/null +++ b/spec/rtems/timer/if/class-bit-time-of-day.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: '0x1' + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: TIMER_CLASS_BIT_TIME_OF_DAY +notes: null +type: interface diff --git a/spec/rtems/timer/if/classes.yml b/spec/rtems/timer/if/classes.yml new file mode 100644 index 00000000..15339559 --- /dev/null +++ b/spec/rtems/timer/if/classes.yml @@ -0,0 +1,27 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition-kind: typedef-only +description: null +enabled-by: true +interface-type: enum +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +- role: interface-enumerator + uid: dormant +- role: interface-enumerator + uid: interval +- role: interface-enumerator + uid: interval-on-task +- role: interface-enumerator + uid: time-of-day +- role: interface-enumerator + uid: time-of-day-on-task +name: Timer_Classes +notes: null +type: interface diff --git a/spec/rtems/timer/if/create.yml b/spec/rtems/timer/if/create.yml new file mode 100644 index 00000000..eefb8ea9 --- /dev/null +++ b/spec/rtems/timer/if/create.yml @@ -0,0 +1,34 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/name:/name} ${.:/params[0]/name} + - ${../../type/if/id:/name} *${.:/params[1]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_timer_create +notes: null +params: +- description: '%' + dir: null + name: name +- description: '%' + dir: null + name: id +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/timer/if/delete.yml b/spec/rtems/timer/if/delete.yml new file mode 100644 index 00000000..e8cbeda8 --- /dev/null +++ b/spec/rtems/timer/if/delete.yml @@ -0,0 +1,30 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_timer_delete +notes: null +params: +- description: '%' + dir: null + name: id +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/timer/if/dormant.yml b/spec/rtems/timer/if/dormant.yml new file mode 100644 index 00000000..332c48d7 --- /dev/null +++ b/spec/rtems/timer/if/dormant.yml @@ -0,0 +1,15 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: null + variants: [] +description: null +enabled-by: true +interface-type: enumerator +links: [] +name: TIMER_DORMANT +notes: null +type: interface diff --git a/spec/rtems/timer/if/fire-after.yml b/spec/rtems/timer/if/fire-after.yml new file mode 100644 index 00000000..fba01068 --- /dev/null +++ b/spec/rtems/timer/if/fire-after.yml @@ -0,0 +1,42 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + - ${../../type/if/interval:/name} ${.:/params[1]/name} + - ${service-routine-entry:/name} ${.:/params[2]/name} + - void *${.:/params[3]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_timer_fire_after +notes: null +params: +- description: '%' + dir: null + name: id +- description: '%' + dir: null + name: ticks +- description: '%' + dir: null + name: routine +- description: '%' + dir: null + name: user_data +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/timer/if/fire-when.yml b/spec/rtems/timer/if/fire-when.yml new file mode 100644 index 00000000..d654ba60 --- /dev/null +++ b/spec/rtems/timer/if/fire-when.yml @@ -0,0 +1,42 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + - ${../../type/if/time-of-day:/name} *${.:/params[1]/name} + - ${service-routine-entry:/name} ${.:/params[2]/name} + - void *${.:/params[3]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_timer_fire_when +notes: null +params: +- description: '%' + dir: null + name: id +- description: '%' + dir: null + name: wall_time +- description: '%' + dir: null + name: routine +- description: '%' + dir: null + name: user_data +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/timer/if/get-information.yml b/spec/rtems/timer/if/get-information.yml new file mode 100644 index 00000000..8568c490 --- /dev/null +++ b/spec/rtems/timer/if/get-information.yml @@ -0,0 +1,34 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + - ${information:/name} *${.:/params[1]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_timer_get_information +notes: null +params: +- description: '%' + dir: null + name: id +- description: '%' + dir: null + name: the_info +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/timer/if/group.yml b/spec/rtems/timer/if/group.yml new file mode 100644 index 00000000..b805e1f9 --- /dev/null +++ b/spec/rtems/timer/if/group.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + The Timer Manager provides support for timer facilities. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +description: null +enabled-by: true +identifier: RTEMSAPIClassicTimer +interface-type: group +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: ../../if/group +name: Timer Manager +text: | + The Classic API shall provide an interface to the Timer Manager. +type: interface diff --git a/spec/rtems/timer/if/header.yml b/spec/rtems/timer/if/header.yml new file mode 100644 index 00000000..ed157f2e --- /dev/null +++ b/spec/rtems/timer/if/header.yml @@ -0,0 +1,12 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: This header file defines the Timer Manager API. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +interface-type: header-file +links: +- role: interface-placement + uid: /if/domain +path: rtems/rtems/timer.h +prefix: cpukit/include +type: interface diff --git a/spec/rtems/timer/if/ident.yml b/spec/rtems/timer/if/ident.yml new file mode 100644 index 00000000..5796c890 --- /dev/null +++ b/spec/rtems/timer/if/ident.yml @@ -0,0 +1,59 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Identifies a timer object by the specified object name. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/name:/name} ${.:/params[0]/name} + - ${../../type/if/id:/name} *${.:/params[1]/name} + return: ${../../status/if/code:/name} + variants: [] +description: | + This directive obtains the timer identifier associated with the timer name + specified in ``${.:/params[0]/name}``. +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_timer_ident +notes: | + If the timer name is not unique, then the timer identifier will match the + first timer with that name in the search order. However, this timer + identifier is not guaranteed to correspond to the desired timer. The timer + identifier is used with other timer related directives to access the timer. + + The objects are searched from lowest to the highest index. Only the local + node is searched. +params: +- description: is the object name to look up. + dir: null + name: name +- description: | + is the pointer to an object identifier variable. The object identifier of + an object with the specified name will be stored in this variable, in case + of a successful operation. + dir: out + name: id +return: + return: null + return-values: + - description: | + The requested operation was successful. + value: ${../../status/if/successful:/name} + - description: | + The ${.:/params[1]/name} parameter was ${/c/if/null:/name}. + value: ${../../status/if/invalid-address:/name} + - description: | + The ${.:/params[0]/name} parameter was 0. + value: ${../../status/if/invalid-name:/name} + - description: | + There was no object with the specified name on the local node. + value: ${../../status/if/invalid-name:/name} +type: interface diff --git a/spec/rtems/timer/if/information.yml b/spec/rtems/timer/if/information.yml new file mode 100644 index 00000000..69db1665 --- /dev/null +++ b/spec/rtems/timer/if/information.yml @@ -0,0 +1,50 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: +- default: + brief: | + This member is + definition: ${classes:/name} ${.:name} + description: '%' + kind: member + name: the_class + variants: [] +- default: + brief: | + This member is + definition: ${/score/watchdog/if/interval:/name} ${.:name} + description: '%' + kind: member + name: initial + variants: [] +- default: + brief: | + This member is + definition: ${/score/watchdog/if/interval:/name} ${.:name} + description: '%' + kind: member + name: start_time + variants: [] +- default: + brief: | + This member is + definition: ${/score/watchdog/if/interval:/name} ${.:name} + description: '%' + kind: member + name: stop_time + variants: [] +definition-kind: typedef-only +description: null +enabled-by: true +interface-type: struct +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_timer_information +notes: null +type: interface diff --git a/spec/rtems/timer/if/initiate-server.yml b/spec/rtems/timer/if/initiate-server.yml new file mode 100644 index 00000000..3d5512de --- /dev/null +++ b/spec/rtems/timer/if/initiate-server.yml @@ -0,0 +1,38 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../task/if/priority:/name} ${.:/params[0]/name} + - ${/c/if/size_t:/name} ${.:/params[1]/name} + - ${../../attr/if/attribute:/name} ${.:/params[2]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_timer_initiate_server +notes: null +params: +- description: '%' + dir: null + name: priority +- description: '%' + dir: null + name: stack_size +- description: '%' + dir: null + name: attribute_set +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/timer/if/interval-on-task.yml b/spec/rtems/timer/if/interval-on-task.yml new file mode 100644 index 00000000..ca246210 --- /dev/null +++ b/spec/rtems/timer/if/interval-on-task.yml @@ -0,0 +1,17 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: | + ${class-bit-not-dormant:/name} | + ${class-bit-on-task:/name} + variants: [] +description: null +enabled-by: true +interface-type: enumerator +links: [] +name: TIMER_INTERVAL_ON_TASK +notes: null +type: interface diff --git a/spec/rtems/timer/if/interval.yml b/spec/rtems/timer/if/interval.yml new file mode 100644 index 00000000..1d6507c8 --- /dev/null +++ b/spec/rtems/timer/if/interval.yml @@ -0,0 +1,15 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${class-bit-not-dormant:/name} + variants: [] +description: null +enabled-by: true +interface-type: enumerator +links: [] +name: TIMER_INTERVAL +notes: null +type: interface diff --git a/spec/rtems/timer/if/reset.yml b/spec/rtems/timer/if/reset.yml new file mode 100644 index 00000000..1abd2c17 --- /dev/null +++ b/spec/rtems/timer/if/reset.yml @@ -0,0 +1,30 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_timer_reset +notes: null +params: +- description: '%' + dir: null + name: id +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/timer/if/server-default-priority.yml b/spec/rtems/timer/if/server-default-priority.yml new file mode 100644 index 00000000..896d0db6 --- /dev/null +++ b/spec/rtems/timer/if/server-default-priority.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ( (${../../task/if/priority:/name}) -1 ) + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_TIMER_SERVER_DEFAULT_PRIORITY +notes: null +type: interface diff --git a/spec/rtems/timer/if/server-fire-after.yml b/spec/rtems/timer/if/server-fire-after.yml new file mode 100644 index 00000000..20f6704c --- /dev/null +++ b/spec/rtems/timer/if/server-fire-after.yml @@ -0,0 +1,42 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + - ${../../type/if/interval:/name} ${.:/params[1]/name} + - ${service-routine-entry:/name} ${.:/params[2]/name} + - void *${.:/params[3]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_timer_server_fire_after +notes: null +params: +- description: '%' + dir: null + name: id +- description: '%' + dir: null + name: ticks +- description: '%' + dir: null + name: routine +- description: '%' + dir: null + name: user_data +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/timer/if/server-fire-when.yml b/spec/rtems/timer/if/server-fire-when.yml new file mode 100644 index 00000000..fd7b20cd --- /dev/null +++ b/spec/rtems/timer/if/server-fire-when.yml @@ -0,0 +1,42 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + - ${../../type/if/time-of-day:/name} *${.:/params[1]/name} + - ${service-routine-entry:/name} ${.:/params[2]/name} + - void *${.:/params[3]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_timer_server_fire_when +notes: null +params: +- description: '%' + dir: null + name: id +- description: '%' + dir: null + name: wall_time +- description: '%' + dir: null + name: routine +- description: '%' + dir: null + name: user_data +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/timer/if/service-routine-entry.yml b/spec/rtems/timer/if/service-routine-entry.yml new file mode 100644 index 00000000..d8f767e1 --- /dev/null +++ b/spec/rtems/timer/if/service-routine-entry.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: | + ${service-routine:/name} ( *${.:/name} )( ${../../type/if/id:/name}, void * ) + variants: [] +description: null +enabled-by: true +interface-type: typedef +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_timer_service_routine_entry +notes: null +type: interface diff --git a/spec/rtems/timer/if/service-routine.yml b/spec/rtems/timer/if/service-routine.yml new file mode 100644 index 00000000..61e6db56 --- /dev/null +++ b/spec/rtems/timer/if/service-routine.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: void ${.:/name} + variants: [] +description: null +enabled-by: true +interface-type: typedef +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_timer_service_routine +notes: null +type: interface diff --git a/spec/rtems/timer/if/time-of-day-on-task.yml b/spec/rtems/timer/if/time-of-day-on-task.yml new file mode 100644 index 00000000..37340cae --- /dev/null +++ b/spec/rtems/timer/if/time-of-day-on-task.yml @@ -0,0 +1,18 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: | + ${class-bit-not-dormant:/name} | + ${class-bit-time-of-day:/name} | + ${class-bit-on-task:/name} + variants: [] +description: null +enabled-by: true +interface-type: enumerator +links: [] +name: TIMER_TIME_OF_DAY_ON_TASK +notes: null +type: interface diff --git a/spec/rtems/timer/if/time-of-day.yml b/spec/rtems/timer/if/time-of-day.yml new file mode 100644 index 00000000..e0d81840 --- /dev/null +++ b/spec/rtems/timer/if/time-of-day.yml @@ -0,0 +1,17 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: | + ${class-bit-not-dormant:/name} | + ${class-bit-time-of-day:/name} + variants: [] +description: null +enabled-by: true +interface-type: enumerator +links: [] +name: TIMER_TIME_OF_DAY +notes: null +type: interface diff --git a/spec/rtems/timer/req/ident.yml b/spec/rtems/timer/req/ident.yml new file mode 100644 index 00000000..6acdaec8 --- /dev/null +++ b/spec/rtems/timer/req/ident.yml @@ -0,0 +1,15 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +functional-type: function +links: +- role: interface-function + uid: ../if/ident +rationale: null +references: [] +requirement-type: functional +text: | + The ${../if/ident:/name} directive shall identify an Classic API + timer class object by its name as specified by ${../req/ident-local}. +type: requirement diff --git a/spec/rtems/timer/val/ident.yml b/spec/rtems/timer/val/ident.yml new file mode 100644 index 00000000..dd174cd1 --- /dev/null +++ b/spec/rtems/timer/val/ident.yml @@ -0,0 +1,45 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +links: +- role: validation + uid: ../req/ident +test-actions: +- action: | + ${../../req/ident-local:/test-run}( + id_local_object, + ClassicTimerIdentAction + ); + checks: [] + description: | + Run the generic object identification tests for Classic API timer class + objects defined by ${../../req/ident-local}. + links: [] +test-brief: Test the ${../if/ident:/name} directive. +test-description: null +test-epilogue: null +test-fixture: null +test-header: null +test-includes: [] +test-local-includes: +- tr-object-ident-local.h +test-prologue: | + rtems_status_code sc; + rtems_id id_local_object; + + sc = rtems_timer_create( + ClassicObjectLocalIdentName, + &id_local_object + ); + T_assert_rsc_success( sc ); +test-support: | + static rtems_status_code ClassicTimerIdentAction( + rtems_name name, + rtems_id *id + ) + { + return rtems_timer_ident( name, id ); + } +test-target: testsuites/validation/tc-timer-ident.c +type: test-case diff --git a/spec/rtems/type/if/group.yml b/spec/rtems/type/if/group.yml new file mode 100644 index 00000000..3565268c --- /dev/null +++ b/spec/rtems/type/if/group.yml @@ -0,0 +1,18 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This group contains basic types of the Classic API. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +description: null +enabled-by: true +identifier: RTEMSAPIClassicTypes +interface-type: group +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: ../../if/group +name: Basic Types +text: | + The Classic API shall provide an interface to basic types. +type: interface diff --git a/spec/rtems/type/if/header.yml b/spec/rtems/type/if/header.yml new file mode 100644 index 00000000..c7427c74 --- /dev/null +++ b/spec/rtems/type/if/header.yml @@ -0,0 +1,27 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: This header file defines types provided by the API. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +interface-type: header-file +links: +- enabled-by: true + role: interface-include + uid: /c/if/sys-cpuset +- enabled-by: true + role: interface-include + uid: /c/if/sys-impl-timespec +- enabled-by: true + role: interface-include + uid: /c/if/sys-impl-timeval +- enabled-by: true + role: interface-include + uid: ../../mode/if/header +- enabled-by: RTEMS_MULTIPROCESSING + role: interface-include + uid: /score/mpci/if/header +- role: interface-placement + uid: /if/domain +path: rtems/rtems/types.h +prefix: cpukit/include +type: interface diff --git a/spec/rtems/type/if/id-none.yml b/spec/rtems/type/if/id-none.yml new file mode 100644 index 00000000..30f7e94e --- /dev/null +++ b/spec/rtems/type/if/id-none.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This is an invalid object identifier. +copyrights: +- Copyright (C) 2009, 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: ${/score/object/if/id-none:/name} + variants: [] +description: | + No object can have this identifier. +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_ID_NONE +notes: null +type: interface diff --git a/spec/rtems/type/if/id.yml b/spec/rtems/type/if/id.yml new file mode 100644 index 00000000..f342a3d7 --- /dev/null +++ b/spec/rtems/type/if/id.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Values of this type identify an object. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: ${/score/object/if/id:/name} ${.:/name} + variants: [] +description: null +enabled-by: true +interface-type: typedef +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_id +notes: null +type: interface diff --git a/spec/rtems/type/if/interval.yml b/spec/rtems/type/if/interval.yml new file mode 100644 index 00000000..2b334adb --- /dev/null +++ b/spec/rtems/type/if/interval.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This type is used to represent clock tick intervals. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: ${/score/watchdog/if/interval:/name} ${.:/name} + variants: [] +description: null +enabled-by: true +interface-type: typedef +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_interval +notes: null +type: interface diff --git a/spec/rtems/type/if/minimum-packet-size.yml b/spec/rtems/type/if/minimum-packet-size.yml new file mode 100644 index 00000000..5e1d9db1 --- /dev/null +++ b/spec/rtems/type/if/minimum-packet-size.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/mpci/if/packet-minimum-size:/name} + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_MINIMUM_PACKET_SIZE +notes: null +type: interface diff --git a/spec/rtems/type/if/minimun-hetero-conversion.yml b/spec/rtems/type/if/minimun-hetero-conversion.yml new file mode 100644 index 00000000..6803a410 --- /dev/null +++ b/spec/rtems/type/if/minimun-hetero-conversion.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/mpci/if/packet-minimum-hetero-conversion:/name} + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_MINIMUN_HETERO_CONVERSION +notes: null +type: interface diff --git a/spec/rtems/type/if/mp-packet-classes.yml b/spec/rtems/type/if/mp-packet-classes.yml new file mode 100644 index 00000000..7ec13fd9 --- /dev/null +++ b/spec/rtems/type/if/mp-packet-classes.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This enumerated type defines the packet classes. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2006 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/mpci/if/packet-classes:/name} ${.:/name} + variants: [] +description: null +enabled-by: RTEMS_MULTIPROCESSING +interface-type: typedef +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_mp_packet_classes +notes: null +type: interface diff --git a/spec/rtems/type/if/mpci-entry.yml b/spec/rtems/type/if/mpci-entry.yml new file mode 100644 index 00000000..79c8119e --- /dev/null +++ b/spec/rtems/type/if/mpci-entry.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Return type of every MPCI handler routine. +copyrights: +- Copyright (C) 2009, 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2008 On-Line Applications Research Corporation (OAR) +definition: + default: MPCI_Entry rtems_mpci_entry + variants: [] +description: null +enabled-by: RTEMS_MULTIPROCESSING +interface-type: typedef +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_mpci_entry +notes: null +type: interface diff --git a/spec/rtems/type/if/mpci-get-packet-entry.yml b/spec/rtems/type/if/mpci-get-packet-entry.yml new file mode 100644 index 00000000..d99a623b --- /dev/null +++ b/spec/rtems/type/if/mpci-get-packet-entry.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This type defines the prototype for the get packet entry point in an MPCI. +copyrights: +- Copyright (C) 2009, 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2006 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/mpci/if/get-packet-entry:/name} ${.:/name} + variants: [] +description: null +enabled-by: RTEMS_MULTIPROCESSING +interface-type: typedef +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_mpci_get_packet_entry +notes: null +type: interface diff --git a/spec/rtems/type/if/mpci-initialization-entry.yml b/spec/rtems/type/if/mpci-initialization-entry.yml new file mode 100644 index 00000000..f7ee9800 --- /dev/null +++ b/spec/rtems/type/if/mpci-initialization-entry.yml @@ -0,0 +1,21 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This type defines the prototype for the initialization entry point in an + MPCI. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2006 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/mpci/if/initialization-entry:/name} ${.:/name} + variants: [] +description: null +enabled-by: RTEMS_MULTIPROCESSING +interface-type: typedef +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_mpci_initialization_entry +notes: null +type: interface diff --git a/spec/rtems/type/if/mpci-receive-packet-entry.yml b/spec/rtems/type/if/mpci-receive-packet-entry.yml new file mode 100644 index 00000000..45f72515 --- /dev/null +++ b/spec/rtems/type/if/mpci-receive-packet-entry.yml @@ -0,0 +1,21 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This type defines the prototype for the receive packet entry point in an + MPCI. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2006 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/mpci/if/receive-entry:/name} ${.:/name} + variants: [] +description: null +enabled-by: RTEMS_MULTIPROCESSING +interface-type: typedef +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_mpci_receive_packet_entry +notes: null +type: interface diff --git a/spec/rtems/type/if/mpci-return-packet-entry.yml b/spec/rtems/type/if/mpci-return-packet-entry.yml new file mode 100644 index 00000000..028f7f36 --- /dev/null +++ b/spec/rtems/type/if/mpci-return-packet-entry.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This type defines the prototype for the return packet entry point in an MPCI. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 2006 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/mpci/if/return-packet-entry:/name} ${.:/name} + variants: [] +description: null +enabled-by: RTEMS_MULTIPROCESSING +interface-type: typedef +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_mpci_return_packet_entry +notes: null +type: interface diff --git a/spec/rtems/type/if/mpci-send-packet-entry.yml b/spec/rtems/type/if/mpci-send-packet-entry.yml new file mode 100644 index 00000000..56b8db12 --- /dev/null +++ b/spec/rtems/type/if/mpci-send-packet-entry.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This type defines the prototype for the send packet entry point in an MPCI. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: ${/score/mpci/if/send-entry:/name} ${.:/name} + variants: [] +description: null +enabled-by: RTEMS_MULTIPROCESSING +interface-type: typedef +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_mpci_send_packet_entry +notes: null +type: interface diff --git a/spec/rtems/type/if/mpci-table.yml b/spec/rtems/type/if/mpci-table.yml new file mode 100644 index 00000000..3828d040 --- /dev/null +++ b/spec/rtems/type/if/mpci-table.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This type defines the MPCI control. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: ${/score/mpci/if/control:/name} ${.:/name} + variants: [] +description: null +enabled-by: RTEMS_MULTIPROCESSING +interface-type: typedef +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_mpci_table +notes: null +type: interface diff --git a/spec/rtems/type/if/multiprocessing-table.yml b/spec/rtems/type/if/multiprocessing-table.yml new file mode 100644 index 00000000..b22cba4a --- /dev/null +++ b/spec/rtems/type/if/multiprocessing-table.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This type defines the MPCI configuration table. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: ${/score/mpci/if/configuration-type:/name} ${.:/name} + variants: [] +description: null +enabled-by: RTEMS_MULTIPROCESSING +interface-type: typedef +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_multiprocessing_table +notes: null +type: interface diff --git a/spec/rtems/type/if/name.yml b/spec/rtems/type/if/name.yml new file mode 100644 index 00000000..e55d9ee2 --- /dev/null +++ b/spec/rtems/type/if/name.yml @@ -0,0 +1,22 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This type is used to represent an Classic API object name. +copyrights: +- Copyright (C) 2009, 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: ${/c/if/uint32_t:/name} rtems_name + variants: [] +description: | + It is an unsigned 32-bit integer which can be treated as a numeric value or + initialized using rtems_build_name() to encode four ASCII characters. A + value of zero may have a special meaning in some directives. +enabled-by: true +interface-type: typedef +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_name +notes: null +type: interface diff --git a/spec/rtems/type/if/no-timeout.yml b/spec/rtems/type/if/no-timeout.yml new file mode 100644 index 00000000..9e5ff7bf --- /dev/null +++ b/spec/rtems/type/if/no-timeout.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: | + ( (${interval:/name}) ${/score/watchdog/if/no-timeout:/name} ) + variants: [] +description: null +enabled-by: true +interface-type: define +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: RTEMS_NO_TIMEOUT +notes: null +type: interface diff --git a/spec/rtems/type/if/packet-prefix.yml b/spec/rtems/type/if/packet-prefix.yml new file mode 100644 index 00000000..a58591bc --- /dev/null +++ b/spec/rtems/type/if/packet-prefix.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This type defines the prefix found at the beginning of each MPCI packet sent + between nodes. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: + default: ${/score/mpci/if/packet-prefix:/name} ${.:/name} + variants: [] +description: null +enabled-by: RTEMS_MULTIPROCESSING +interface-type: typedef +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_packet_prefix +notes: null +type: interface diff --git a/spec/rtems/type/if/time-of-day.yml b/spec/rtems/type/if/time-of-day.yml new file mode 100644 index 00000000..5fb8f8c0 --- /dev/null +++ b/spec/rtems/type/if/time-of-day.yml @@ -0,0 +1,75 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + This type is used to represent the calendar time in the Classic API. +copyrights: +- Copyright (C) 2009, 2020 embedded brains GmbH (http://www.embedded-brains.de) +definition: +- default: + brief: | + This member represents the year A.D. + definition: ${/c/if/uint32_t:/name} ${.:name} + description: null + kind: member + name: year + variants: [] +- default: + brief: | + This member represents the month of the year with values from 1 to 12. + definition: ${/c/if/uint32_t:/name} ${.:name} + description: null + kind: member + name: month + variants: [] +- default: + brief: | + This member represents the day of the month with values from 1 to 31. + definition: ${/c/if/uint32_t:/name} ${.:name} + description: null + kind: member + name: day + variants: [] +- default: + brief: | + This member represents the hour of the day with values from 0 to 23. + definition: ${/c/if/uint32_t:/name} ${.:name} + description: null + kind: member + name: hour + variants: [] +- default: + brief: | + This member represents the minute of the hour with values from 0 to 59. + definition: ${/c/if/uint32_t:/name} ${.:name} + description: null + kind: member + name: minute + variants: [] +- default: + brief: | + This member represents the second of the minute with values from 0 to 59. + definition: ${/c/if/uint32_t:/name} ${.:name} + description: null + kind: member + name: second + variants: [] +- default: + brief: | + This member represents the clock tick of the second with values from 0 to + rtems_clock_get_ticks_per_second() minus one. + definition: ${/c/if/uint32_t:/name} ${.:name} + description: null + kind: member + name: ticks + variants: [] +definition-kind: typedef-only +description: null +enabled-by: true +interface-type: struct +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_time_of_day +notes: null +type: interface diff --git a/spec/rtems/userext/if/create.yml b/spec/rtems/userext/if/create.yml new file mode 100644 index 00000000..eba97468 --- /dev/null +++ b/spec/rtems/userext/if/create.yml @@ -0,0 +1,38 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/name:/name} ${.:/params[0]/name} + - const ${table:/name} *${.:/params[1]/name} + - ${../../type/if/id:/name} *${.:/params[2]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_extension_create +notes: null +params: +- description: '%' + dir: null + name: name +- description: '%' + dir: null + name: extension_table +- description: '%' + dir: null + name: id +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/userext/if/delete.yml b/spec/rtems/userext/if/delete.yml new file mode 100644 index 00000000..0cf4ebe6 --- /dev/null +++ b/spec/rtems/userext/if/delete.yml @@ -0,0 +1,30 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/id:/name} ${.:/params[0]/name} + return: ${../../status/if/code:/name} + variants: [] +description: null +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_extension_delete +notes: null +params: +- description: '%' + dir: null + name: id +return: + return: null + return-values: [] +type: interface diff --git a/spec/rtems/userext/if/fatal-code.yml b/spec/rtems/userext/if/fatal-code.yml new file mode 100644 index 00000000..73154766 --- /dev/null +++ b/spec/rtems/userext/if/fatal-code.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/interr/if/code:/name} ${.:/name} + variants: [] +description: null +enabled-by: true +interface-type: typedef +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_fatal_code +notes: null +type: interface diff --git a/spec/rtems/userext/if/fatal-source.yml b/spec/rtems/userext/if/fatal-source.yml new file mode 100644 index 00000000..de9b7d50 --- /dev/null +++ b/spec/rtems/userext/if/fatal-source.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/interr/if/source:/name} ${.:/name} + variants: [] +description: null +enabled-by: true +interface-type: typedef +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_fatal_source +notes: null +type: interface diff --git a/spec/rtems/userext/if/fatal.yml b/spec/rtems/userext/if/fatal.yml new file mode 100644 index 00000000..2a96440d --- /dev/null +++ b/spec/rtems/userext/if/fatal.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/userext/if/fatal:/name} ${.:/name} + variants: [] +description: null +enabled-by: true +interface-type: typedef +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_fatal_extension +notes: null +type: interface diff --git a/spec/rtems/userext/if/group.yml b/spec/rtems/userext/if/group.yml new file mode 100644 index 00000000..7b984f0f --- /dev/null +++ b/spec/rtems/userext/if/group.yml @@ -0,0 +1,21 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + The User Extensions Manager allows the application developer to augment the + executive by allowing them to supply extension routines which are invoked at + critical system events. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +description: null +enabled-by: true +identifier: RTEMSAPIClassicUserext +interface-type: group +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: ../../if/group +name: User Extensions Manager +text: | + The Classic API shall provide an interface to the User Extensions Manager. +type: interface diff --git a/spec/rtems/userext/if/header.yml b/spec/rtems/userext/if/header.yml new file mode 100644 index 00000000..dcbfeddf --- /dev/null +++ b/spec/rtems/userext/if/header.yml @@ -0,0 +1,12 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: This header file defines the User Extensions Manager API. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +interface-type: header-file +links: +- role: interface-placement + uid: /if/domain +path: rtems/extension.h +prefix: cpukit/include +type: interface diff --git a/spec/rtems/userext/if/ident.yml b/spec/rtems/userext/if/ident.yml new file mode 100644 index 00000000..1aba865c --- /dev/null +++ b/spec/rtems/userext/if/ident.yml @@ -0,0 +1,60 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: | + Identifies an extension set object by the specified object name. +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: + body: null + params: + - ${../../type/if/name:/name} ${.:/params[0]/name} + - ${../../type/if/id:/name} *${.:/params[1]/name} + return: ${../../status/if/code:/name} + variants: [] +description: | + This directive obtains the extension set identifier associated with the + extension set name specified in ``${.:/params[0]/name}``. +enabled-by: true +interface-type: function +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_extension_ident +notes: | + If the extension set name is not unique, then the extension set identifier + will match the first extension set with that name in the search order. + However, this extension set identifier is not guaranteed to correspond to the + desired extension set. The extension set identifier is used with other + extension related directives to access the extension set. + + The objects are searched from lowest to the highest index. Only the local + node is searched. +params: +- description: is the object name to look up. + dir: null + name: name +- description: | + is the pointer to an object identifier variable. The object identifier of + an object with the specified name will be stored in this variable, in case + of a successful operation. + dir: out + name: id +return: + return: null + return-values: + - description: | + The requested operation was successful. + value: ${../../status/if/successful:/name} + - description: | + The ${.:/params[1]/name} parameter was ${/c/if/null:/name}. + value: ${../../status/if/invalid-address:/name} + - description: | + The ${.:/params[0]/name} parameter was 0. + value: ${../../status/if/invalid-name:/name} + - description: | + There was no object with the specified name on the local node. + value: ${../../status/if/invalid-name:/name} +type: interface diff --git a/spec/rtems/userext/if/table.yml b/spec/rtems/userext/if/table.yml new file mode 100644 index 00000000..e66455b3 --- /dev/null +++ b/spec/rtems/userext/if/table.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/userext/if/table:/name} ${.:/name} + variants: [] +description: null +enabled-by: true +interface-type: typedef +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_extensions_table +notes: null +type: interface diff --git a/spec/rtems/userext/if/task-begin.yml b/spec/rtems/userext/if/task-begin.yml new file mode 100644 index 00000000..9b5edb09 --- /dev/null +++ b/spec/rtems/userext/if/task-begin.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/userext/if/thread-begin:/name} ${.:/name} + variants: [] +description: null +enabled-by: true +interface-type: typedef +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_task_begin_extension +notes: null +type: interface diff --git a/spec/rtems/userext/if/task-create.yml b/spec/rtems/userext/if/task-create.yml new file mode 100644 index 00000000..047b5419 --- /dev/null +++ b/spec/rtems/userext/if/task-create.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/userext/if/thread-create:/name} ${.:/name} + variants: [] +description: null +enabled-by: true +interface-type: typedef +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_task_create_extension +notes: null +type: interface diff --git a/spec/rtems/userext/if/task-delete.yml b/spec/rtems/userext/if/task-delete.yml new file mode 100644 index 00000000..ab271633 --- /dev/null +++ b/spec/rtems/userext/if/task-delete.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/userext/if/thread-delete:/name} ${.:/name} + variants: [] +description: null +enabled-by: true +interface-type: typedef +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_task_delete_extension +notes: null +type: interface diff --git a/spec/rtems/userext/if/task-exitted.yml b/spec/rtems/userext/if/task-exitted.yml new file mode 100644 index 00000000..53e60024 --- /dev/null +++ b/spec/rtems/userext/if/task-exitted.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/userext/if/thread-exitted:/name} ${.:/name} + variants: [] +description: null +enabled-by: true +interface-type: typedef +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_task_exitted_extension +notes: null +type: interface diff --git a/spec/rtems/userext/if/task-restart.yml b/spec/rtems/userext/if/task-restart.yml new file mode 100644 index 00000000..22cd9686 --- /dev/null +++ b/spec/rtems/userext/if/task-restart.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/userext/if/thread-restart:/name} ${.:/name} + variants: [] +description: null +enabled-by: true +interface-type: typedef +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_task_restart_extension +notes: null +type: interface diff --git a/spec/rtems/userext/if/task-start.yml b/spec/rtems/userext/if/task-start.yml new file mode 100644 index 00000000..789098e0 --- /dev/null +++ b/spec/rtems/userext/if/task-start.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/userext/if/thread-start:/name} ${.:/name} + variants: [] +description: null +enabled-by: true +interface-type: typedef +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_task_start_extension +notes: null +type: interface diff --git a/spec/rtems/userext/if/task-switch.yml b/spec/rtems/userext/if/task-switch.yml new file mode 100644 index 00000000..c52d72d4 --- /dev/null +++ b/spec/rtems/userext/if/task-switch.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/userext/if/thread-switch:/name} ${.:/name} + variants: [] +description: null +enabled-by: true +interface-type: typedef +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_task_switch_extension +notes: null +type: interface diff --git a/spec/rtems/userext/if/task-terminate.yml b/spec/rtems/userext/if/task-terminate.yml new file mode 100644 index 00000000..5537ec5f --- /dev/null +++ b/spec/rtems/userext/if/task-terminate.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +brief: '%' +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +- Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) +definition: + default: ${/score/userext/if/thread-terminate:/name} ${.:/name} + variants: [] +description: null +enabled-by: true +interface-type: typedef +links: +- role: interface-placement + uid: header +- role: interface-ingroup + uid: group +name: rtems_task_terminate_extension +notes: null +type: interface diff --git a/spec/rtems/userext/req/ident.yml b/spec/rtems/userext/req/ident.yml new file mode 100644 index 00000000..272af224 --- /dev/null +++ b/spec/rtems/userext/req/ident.yml @@ -0,0 +1,15 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +functional-type: function +links: +- role: interface-function + uid: ../if/ident +rationale: null +references: [] +requirement-type: functional +text: | + The ${../if/ident:/name} directive shall identify an Classic API + user extension class object by its name as specified by ${../req/ident-local}. +type: requirement diff --git a/spec/rtems/userext/val/ident.yml b/spec/rtems/userext/val/ident.yml new file mode 100644 index 00000000..e25374ed --- /dev/null +++ b/spec/rtems/userext/val/ident.yml @@ -0,0 +1,47 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +links: +- role: validation + uid: ../req/ident +test-actions: +- action: | + ${../../req/ident-local:/test-run}( + id_local_object, + ClassicUserExtIdentAction + ); + checks: [] + description: | + Run the generic object identification tests for Classic API user extension + class objects defined by ${../../req/ident-local}. + links: [] +test-brief: Test the ${../if/ident:/name} directive. +test-description: null +test-epilogue: null +test-fixture: null +test-header: null +test-includes: [] +test-local-includes: +- tr-object-ident-local.h +test-prologue: | + static const rtems_extensions_table table; + rtems_status_code sc; + rtems_id id_local_object; + + sc = rtems_extension_create( + ClassicObjectLocalIdentName, + &table, + &id_local_object + ); + T_assert_rsc_success( sc ); +test-support: | + static rtems_status_code ClassicUserExtIdentAction( + rtems_name name, + rtems_id *id + ) + { + return rtems_extension_ident( name, id ); + } +test-target: testsuites/validation/tc-userext-ident.c +type: test-case |