summaryrefslogtreecommitdiffstats
path: root/spec/rtems
diff options
context:
space:
mode:
Diffstat (limited to 'spec/rtems')
-rw-r--r--spec/rtems/attr/if/application-task.yml21
-rw-r--r--spec/rtems/attr/if/attribute.yml21
-rw-r--r--spec/rtems/attr/if/barrier-automatic-release.yml21
-rw-r--r--spec/rtems/attr/if/barrier-manual-release.yml21
-rw-r--r--spec/rtems/attr/if/binary-semaphore.yml21
-rw-r--r--spec/rtems/attr/if/counting-semaphore.yml21
-rw-r--r--spec/rtems/attr/if/default.yml20
-rw-r--r--spec/rtems/attr/if/fifo.yml21
-rw-r--r--spec/rtems/attr/if/floating-point.yml23
-rw-r--r--spec/rtems/attr/if/global.yml20
-rw-r--r--spec/rtems/attr/if/group.yml18
-rw-r--r--spec/rtems/attr/if/header.yml12
-rw-r--r--spec/rtems/attr/if/inherit-priority.yml22
-rw-r--r--spec/rtems/attr/if/local.yml20
-rw-r--r--spec/rtems/attr/if/multiprocessor-resource-sharing.yml21
-rw-r--r--spec/rtems/attr/if/no-floating-point.yml23
-rw-r--r--spec/rtems/attr/if/no-inherit-priority.yml21
-rw-r--r--spec/rtems/attr/if/no-multiprocessor-resource-sharing.yml21
-rw-r--r--spec/rtems/attr/if/no-priority-ceiling.yml21
-rw-r--r--spec/rtems/attr/if/priority-ceiling.yml22
-rw-r--r--spec/rtems/attr/if/priority.yml21
-rw-r--r--spec/rtems/attr/if/semaphore-class.yml21
-rw-r--r--spec/rtems/attr/if/simple-binary-semaphore.yml21
-rw-r--r--spec/rtems/attr/if/system-task.yml21
-rw-r--r--spec/rtems/attr/req/bit-set.yml15
-rw-r--r--spec/rtems/attr/req/default.yml14
-rw-r--r--spec/rtems/attr/req/semaphore-class.yml16
-rw-r--r--spec/rtems/attr/req/unique.yml14
-rw-r--r--spec/rtems/attr/val/attr.yml278
-rw-r--r--spec/rtems/barrier/if/create.yml42
-rw-r--r--spec/rtems/barrier/if/delete.yml30
-rw-r--r--spec/rtems/barrier/if/group.yml20
-rw-r--r--spec/rtems/barrier/if/header.yml12
-rw-r--r--spec/rtems/barrier/if/ident.yml60
-rw-r--r--spec/rtems/barrier/if/release.yml34
-rw-r--r--spec/rtems/barrier/if/wait.yml34
-rw-r--r--spec/rtems/barrier/req/ident.yml15
-rw-r--r--spec/rtems/barrier/val/ident.yml47
-rw-r--r--spec/rtems/basedefs/if/alias.yml31
-rw-r--r--spec/rtems/basedefs/if/align-down.yml35
-rw-r--r--spec/rtems/basedefs/if/align-up.yml35
-rw-r--r--spec/rtems/basedefs/if/aligned.yml32
-rw-r--r--spec/rtems/basedefs/if/alloc-align.yml32
-rw-r--r--spec/rtems/basedefs/if/alloc-size-2.yml36
-rw-r--r--spec/rtems/basedefs/if/alloc-size.yml32
-rw-r--r--spec/rtems/basedefs/if/array-size.yml28
-rw-r--r--spec/rtems/basedefs/if/compiler-deprecated-attribute.yml20
-rw-r--r--spec/rtems/basedefs/if/compiler-memory-barrier.yml28
-rw-r--r--spec/rtems/basedefs/if/compiler-no-return-attribute.yml20
-rw-r--r--spec/rtems/basedefs/if/compiler-packed-attribute.yml20
-rw-r--r--spec/rtems/basedefs/if/compiler-pure-attribute.yml20
-rw-r--r--spec/rtems/basedefs/if/compiler-used-attribute.yml20
-rw-r--r--spec/rtems/basedefs/if/concat.yml32
-rw-r--r--spec/rtems/basedefs/if/const.yml25
-rw-r--r--spec/rtems/basedefs/if/container-of.yml37
-rw-r--r--spec/rtems/basedefs/if/declare-global-symbol.yml29
-rw-r--r--spec/rtems/basedefs/if/deconst.yml33
-rw-r--r--spec/rtems/basedefs/if/define-global-symbol.yml44
-rw-r--r--spec/rtems/basedefs/if/deprecated.yml24
-rw-r--r--spec/rtems/basedefs/if/dequalify-depthx.yml50
-rw-r--r--spec/rtems/basedefs/if/dequalify.yml33
-rw-r--r--spec/rtems/basedefs/if/devolatile.yml33
-rw-r--r--spec/rtems/basedefs/if/expand.yml27
-rw-r--r--spec/rtems/basedefs/if/false.yml19
-rw-r--r--spec/rtems/basedefs/if/group.yml19
-rw-r--r--spec/rtems/basedefs/if/have-member-same-type.yml48
-rw-r--r--spec/rtems/basedefs/if/header.yml29
-rw-r--r--spec/rtems/basedefs/if/inline-routine.yml23
-rw-r--r--spec/rtems/basedefs/if/malloclike.yml24
-rw-r--r--spec/rtems/basedefs/if/no-inline.yml23
-rw-r--r--spec/rtems/basedefs/if/no-return.yml24
-rw-r--r--spec/rtems/basedefs/if/obfuscate-variable.yml34
-rw-r--r--spec/rtems/basedefs/if/packed.yml24
-rw-r--r--spec/rtems/basedefs/if/predict-false.yml33
-rw-r--r--spec/rtems/basedefs/if/predict-true.yml33
-rw-r--r--spec/rtems/basedefs/if/printflike.yml37
-rw-r--r--spec/rtems/basedefs/if/pure.yml25
-rw-r--r--spec/rtems/basedefs/if/return-address.yml27
-rw-r--r--spec/rtems/basedefs/if/section.yml32
-rw-r--r--spec/rtems/basedefs/if/static-assert.yml41
-rw-r--r--spec/rtems/basedefs/if/string.yml28
-rw-r--r--spec/rtems/basedefs/if/symbol-name.yml33
-rw-r--r--spec/rtems/basedefs/if/true.yml19
-rw-r--r--spec/rtems/basedefs/if/typeof-refx.yml37
-rw-r--r--spec/rtems/basedefs/if/unreachable.yml29
-rw-r--r--spec/rtems/basedefs/if/unused.yml24
-rw-r--r--spec/rtems/basedefs/if/used.yml23
-rw-r--r--spec/rtems/basedefs/if/warn-unused-result.yml24
-rw-r--r--spec/rtems/basedefs/if/weak-alias.yml32
-rw-r--r--spec/rtems/basedefs/if/weak.yml26
-rw-r--r--spec/rtems/basedefs/if/xconcat.yml34
-rw-r--r--spec/rtems/basedefs/if/xstring.yml28
-rw-r--r--spec/rtems/basedefs/if/zero-length-array.yml25
-rw-r--r--spec/rtems/cache/if/aligned-malloc.yml30
-rw-r--r--spec/rtems/cache/if/coherent-add-area.yml34
-rw-r--r--spec/rtems/cache/if/coherent-allocate.yml38
-rw-r--r--spec/rtems/cache/if/coherent-free.yml30
-rw-r--r--spec/rtems/cache/if/disable-data.yml26
-rw-r--r--spec/rtems/cache/if/disable-instruction.yml26
-rw-r--r--spec/rtems/cache/if/enable-data.yml26
-rw-r--r--spec/rtems/cache/if/enable-instruction.yml26
-rw-r--r--spec/rtems/cache/if/flush-entire-data.yml26
-rw-r--r--spec/rtems/cache/if/flush-multiple-data-lines.yml34
-rw-r--r--spec/rtems/cache/if/freeze-data.yml26
-rw-r--r--spec/rtems/cache/if/freeze-instruction.yml26
-rw-r--r--spec/rtems/cache/if/get-data-line-size.yml26
-rw-r--r--spec/rtems/cache/if/get-data-size.yml30
-rw-r--r--spec/rtems/cache/if/get-instruction-line-size.yml26
-rw-r--r--spec/rtems/cache/if/get-instruction-size.yml30
-rw-r--r--spec/rtems/cache/if/get-maximal-line-size.yml26
-rw-r--r--spec/rtems/cache/if/group.yml19
-rw-r--r--spec/rtems/cache/if/header.yml12
-rw-r--r--spec/rtems/cache/if/instruction-sync-after-code-change.yml34
-rw-r--r--spec/rtems/cache/if/invalidate-entire-data.yml26
-rw-r--r--spec/rtems/cache/if/invalidate-entire-instruction.yml26
-rw-r--r--spec/rtems/cache/if/invalidate-multiple-data-lines.yml34
-rw-r--r--spec/rtems/cache/if/invalidate-multiple-instruction-lines.yml34
-rw-r--r--spec/rtems/cache/if/unfreeze-data.yml26
-rw-r--r--spec/rtems/cache/if/unfreeze-instruction.yml26
-rw-r--r--spec/rtems/clock/if/get-seconds-since-epoch.yml30
-rw-r--r--spec/rtems/clock/if/get-ticks-per-second.yml23
-rw-r--r--spec/rtems/clock/if/get-ticks-since-boot.yml23
-rw-r--r--spec/rtems/clock/if/get-tod-timeval.yml30
-rw-r--r--spec/rtems/clock/if/get-tod.yml30
-rw-r--r--spec/rtems/clock/if/get-uptime-nanoseconds.yml26
-rw-r--r--spec/rtems/clock/if/get-uptime-seconds.yml26
-rw-r--r--spec/rtems/clock/if/get-uptime-timeval.yml30
-rw-r--r--spec/rtems/clock/if/get-uptime.yml30
-rw-r--r--spec/rtems/clock/if/group.yml20
-rw-r--r--spec/rtems/clock/if/header.yml12
-rw-r--r--spec/rtems/clock/if/set.yml30
-rw-r--r--spec/rtems/clock/if/tick-before.yml40
-rw-r--r--spec/rtems/clock/if/tick-later-usec.yml41
-rw-r--r--spec/rtems/clock/if/tick-later.yml32
-rw-r--r--spec/rtems/clock/if/tick.yml26
-rw-r--r--spec/rtems/config/if/api-table.yml128
-rw-r--r--spec/rtems/config/if/get-api-configuration.yml26
-rw-r--r--spec/rtems/config/if/get-copyright-notice.yml26
-rw-r--r--spec/rtems/config/if/get-do-zero-of-workspace.yml24
-rw-r--r--spec/rtems/config/if/get-idle-task-stack-size.yml23
-rw-r--r--spec/rtems/config/if/get-idle-task.yml23
-rw-r--r--spec/rtems/config/if/get-interrupt-stack-size.yml23
-rw-r--r--spec/rtems/config/if/get-maximum-barriers.yml27
-rw-r--r--spec/rtems/config/if/get-maximum-extensions.yml27
-rw-r--r--spec/rtems/config/if/get-maximum-message-queues.yml27
-rw-r--r--spec/rtems/config/if/get-maximum-partitions.yml27
-rw-r--r--spec/rtems/config/if/get-maximum-periods.yml27
-rw-r--r--spec/rtems/config/if/get-maximum-ports.yml27
-rw-r--r--spec/rtems/config/if/get-maximum-processors.yml29
-rw-r--r--spec/rtems/config/if/get-maximum-regions.yml27
-rw-r--r--spec/rtems/config/if/get-maximum-semaphores.yml27
-rw-r--r--spec/rtems/config/if/get-maximum-tasks.yml27
-rw-r--r--spec/rtems/config/if/get-maximum-timers.yml27
-rw-r--r--spec/rtems/config/if/get-microseconds-per-tick.yml23
-rw-r--r--spec/rtems/config/if/get-milliseconds-per-tick.yml23
-rw-r--r--spec/rtems/config/if/get-nanoseconds-per-tick.yml23
-rw-r--r--spec/rtems/config/if/get-number-of-initial-extensions.yml23
-rw-r--r--spec/rtems/config/if/get-stack-allocate-hook.yml23
-rw-r--r--spec/rtems/config/if/get-stack-allocate-init-hook.yml23
-rw-r--r--spec/rtems/config/if/get-stack-allocator-avoids-work-space.yml24
-rw-r--r--spec/rtems/config/if/get-stack-free-hook.yml23
-rw-r--r--spec/rtems/config/if/get-stack-space-size.yml27
-rw-r--r--spec/rtems/config/if/get-ticks-per-timeslice.yml23
-rw-r--r--spec/rtems/config/if/get-unified-work-area.yml24
-rw-r--r--spec/rtems/config/if/get-user-extension-table.yml24
-rw-r--r--spec/rtems/config/if/get-user-multiprocessing-table.yml26
-rw-r--r--spec/rtems/config/if/get-version-string.yml26
-rw-r--r--spec/rtems/config/if/get-work-space-size.yml26
-rw-r--r--spec/rtems/config/if/group.yml19
-rw-r--r--spec/rtems/config/if/has-hardware-fp.yml19
-rw-r--r--spec/rtems/config/if/header-2.yml14
-rw-r--r--spec/rtems/config/if/header.yml23
-rw-r--r--spec/rtems/config/if/resource-is-unlimited.yml26
-rw-r--r--spec/rtems/config/if/resource-maximum-per-allocation.yml26
-rw-r--r--spec/rtems/config/if/resource-unlimited.yml26
-rw-r--r--spec/rtems/config/if/stack-allocate-hook.yml19
-rw-r--r--spec/rtems/config/if/stack-allocate-init-hook.yml19
-rw-r--r--spec/rtems/config/if/stack-free-hook.yml19
-rw-r--r--spec/rtems/config/if/unlimited-objects.yml19
-rw-r--r--spec/rtems/dpmem/if/create.yml46
-rw-r--r--spec/rtems/dpmem/if/delete.yml30
-rw-r--r--spec/rtems/dpmem/if/external-to-internal.yml38
-rw-r--r--spec/rtems/dpmem/if/group.yml21
-rw-r--r--spec/rtems/dpmem/if/header.yml12
-rw-r--r--spec/rtems/dpmem/if/ident.yml59
-rw-r--r--spec/rtems/dpmem/if/internal-to-external.yml38
-rw-r--r--spec/rtems/event/if/all-events.yml22
-rw-r--r--spec/rtems/event/if/event-0.yml20
-rw-r--r--spec/rtems/event/if/event-1.yml20
-rw-r--r--spec/rtems/event/if/event-10.yml20
-rw-r--r--spec/rtems/event/if/event-11.yml20
-rw-r--r--spec/rtems/event/if/event-12.yml20
-rw-r--r--spec/rtems/event/if/event-13.yml20
-rw-r--r--spec/rtems/event/if/event-14.yml20
-rw-r--r--spec/rtems/event/if/event-15.yml20
-rw-r--r--spec/rtems/event/if/event-16.yml20
-rw-r--r--spec/rtems/event/if/event-17.yml20
-rw-r--r--spec/rtems/event/if/event-18.yml20
-rw-r--r--spec/rtems/event/if/event-19.yml20
-rw-r--r--spec/rtems/event/if/event-2.yml20
-rw-r--r--spec/rtems/event/if/event-20.yml20
-rw-r--r--spec/rtems/event/if/event-21.yml20
-rw-r--r--spec/rtems/event/if/event-22.yml20
-rw-r--r--spec/rtems/event/if/event-23.yml20
-rw-r--r--spec/rtems/event/if/event-24.yml20
-rw-r--r--spec/rtems/event/if/event-25.yml20
-rw-r--r--spec/rtems/event/if/event-26.yml20
-rw-r--r--spec/rtems/event/if/event-27.yml20
-rw-r--r--spec/rtems/event/if/event-28.yml20
-rw-r--r--spec/rtems/event/if/event-29.yml20
-rw-r--r--spec/rtems/event/if/event-3.yml20
-rw-r--r--spec/rtems/event/if/event-30.yml20
-rw-r--r--spec/rtems/event/if/event-31.yml20
-rw-r--r--spec/rtems/event/if/event-4.yml20
-rw-r--r--spec/rtems/event/if/event-5.yml20
-rw-r--r--spec/rtems/event/if/event-6.yml20
-rw-r--r--spec/rtems/event/if/event-7.yml20
-rw-r--r--spec/rtems/event/if/event-8.yml20
-rw-r--r--spec/rtems/event/if/event-9.yml20
-rw-r--r--spec/rtems/event/if/group.yml20
-rw-r--r--spec/rtems/event/if/header.yml12
-rw-r--r--spec/rtems/event/if/pending-events.yml20
-rw-r--r--spec/rtems/event/if/receive.yml122
-rw-r--r--spec/rtems/event/if/send.yml74
-rw-r--r--spec/rtems/event/if/set.yml21
-rw-r--r--spec/rtems/event/if/system-network-close.yml18
-rw-r--r--spec/rtems/event/if/system-network-sbwait.yml18
-rw-r--r--spec/rtems/event/if/system-network-sosleep.yml18
-rw-r--r--spec/rtems/event/if/system-receive.yml49
-rw-r--r--spec/rtems/event/if/system-send.yml33
-rw-r--r--spec/rtems/event/if/system-server-resume.yml19
-rw-r--r--spec/rtems/event/if/system-server.yml19
-rw-r--r--spec/rtems/event/if/system-transient.yml20
-rw-r--r--spec/rtems/event/if/transient-clear.yml32
-rw-r--r--spec/rtems/event/if/transient-receive.yml40
-rw-r--r--spec/rtems/event/if/transient-send.yml29
-rw-r--r--spec/rtems/event/req/event-constant.yml391
-rw-r--r--spec/rtems/event/req/events.yml96
-rw-r--r--spec/rtems/event/req/receive.yml15
-rw-r--r--spec/rtems/event/req/send-receive.yml1001
-rw-r--r--spec/rtems/event/req/send.yml15
-rw-r--r--spec/rtems/event/req/system-receive.yml15
-rw-r--r--spec/rtems/event/req/system-send.yml15
-rw-r--r--spec/rtems/event/val/send-receive.yml65
-rw-r--r--spec/rtems/event/val/system-send-receive.yml71
-rw-r--r--spec/rtems/fatal/if/assert-context.yml50
-rw-r--r--spec/rtems/fatal/if/error-occurred.yml30
-rw-r--r--spec/rtems/fatal/if/exception-frame-print.yml31
-rw-r--r--spec/rtems/fatal/if/exception-frame.yml19
-rw-r--r--spec/rtems/fatal/if/fatal.yml35
-rw-r--r--spec/rtems/fatal/if/group.yml21
-rw-r--r--spec/rtems/fatal/if/header.yml12
-rw-r--r--spec/rtems/fatal/if/internal-error-text.yml30
-rw-r--r--spec/rtems/fatal/if/panic.yml35
-rw-r--r--spec/rtems/fatal/if/source-text.yml30
-rw-r--r--spec/rtems/if/group.yml18
-rw-r--r--spec/rtems/if/header.yml87
-rw-r--r--spec/rtems/init/if/group.yml20
-rw-r--r--spec/rtems/init/if/header.yml12
-rw-r--r--spec/rtems/init/if/initialize-executive.yml32
-rw-r--r--spec/rtems/init/if/shutdown-executive.yml35
-rw-r--r--spec/rtems/intr/if/catch.yml38
-rw-r--r--spec/rtems/intr/if/cause.yml26
-rw-r--r--spec/rtems/intr/if/clear.yml26
-rw-r--r--spec/rtems/intr/if/disable.yml27
-rw-r--r--spec/rtems/intr/if/enable.yml27
-rw-r--r--spec/rtems/intr/if/flash.yml27
-rw-r--r--spec/rtems/intr/if/group.yml24
-rw-r--r--spec/rtems/intr/if/header.yml12
-rw-r--r--spec/rtems/intr/if/is-in-progress.yml23
-rw-r--r--spec/rtems/intr/if/isr-entry.yml23
-rw-r--r--spec/rtems/intr/if/isr.yml19
-rw-r--r--spec/rtems/intr/if/level.yml19
-rw-r--r--spec/rtems/intr/if/local-disable.yml26
-rw-r--r--spec/rtems/intr/if/local-enable.yml26
-rw-r--r--spec/rtems/intr/if/lock-acquire-isr.yml35
-rw-r--r--spec/rtems/intr/if/lock-acquire.yml30
-rw-r--r--spec/rtems/intr/if/lock-context.yml19
-rw-r--r--spec/rtems/intr/if/lock-declare.yml30
-rw-r--r--spec/rtems/intr/if/lock-define.yml33
-rw-r--r--spec/rtems/intr/if/lock-destroy.yml26
-rw-r--r--spec/rtems/intr/if/lock-initialize.yml30
-rw-r--r--spec/rtems/intr/if/lock-initializer.yml26
-rw-r--r--spec/rtems/intr/if/lock-isr-disable.yml26
-rw-r--r--spec/rtems/intr/if/lock-member.yml26
-rw-r--r--spec/rtems/intr/if/lock-reference.yml30
-rw-r--r--spec/rtems/intr/if/lock-release-isr.yml35
-rw-r--r--spec/rtems/intr/if/lock-release.yml30
-rw-r--r--spec/rtems/intr/if/lock.yml19
-rw-r--r--spec/rtems/intr/if/vector-number.yml19
-rw-r--r--spec/rtems/io/if/close.yml38
-rw-r--r--spec/rtems/io/if/control.yml38
-rw-r--r--spec/rtems/io/if/device-driver-entry.yml24
-rw-r--r--spec/rtems/io/if/device-driver.yml19
-rw-r--r--spec/rtems/io/if/device-major-number.yml19
-rw-r--r--spec/rtems/io/if/device-minor-number.yml19
-rw-r--r--spec/rtems/io/if/driver-address-table.yml66
-rw-r--r--spec/rtems/io/if/driver-error.yml38
-rw-r--r--spec/rtems/io/if/getchark.yml9
-rw-r--r--spec/rtems/io/if/group.yml21
-rw-r--r--spec/rtems/io/if/header.yml12
-rw-r--r--spec/rtems/io/if/initialize.yml38
-rw-r--r--spec/rtems/io/if/mount.yml9
-rw-r--r--spec/rtems/io/if/open.yml38
-rw-r--r--spec/rtems/io/if/printer.yml13
-rw-r--r--spec/rtems/io/if/printk.yml9
-rw-r--r--spec/rtems/io/if/putc.yml9
-rw-r--r--spec/rtems/io/if/read.yml38
-rw-r--r--spec/rtems/io/if/register-driver.yml38
-rw-r--r--spec/rtems/io/if/register-name.yml38
-rw-r--r--spec/rtems/io/if/unmount.yml9
-rw-r--r--spec/rtems/io/if/unregister-driver.yml30
-rw-r--r--spec/rtems/io/if/write.yml38
-rw-r--r--spec/rtems/message/if/broadcast.yml42
-rw-r--r--spec/rtems/message/if/create.yml46
-rw-r--r--spec/rtems/message/if/delete.yml30
-rw-r--r--spec/rtems/message/if/flush.yml34
-rw-r--r--spec/rtems/message/if/get-number-pending.yml34
-rw-r--r--spec/rtems/message/if/group.yml20
-rw-r--r--spec/rtems/message/if/header.yml12
-rw-r--r--spec/rtems/message/if/ident.yml86
-rw-r--r--spec/rtems/message/if/receive.yml46
-rw-r--r--spec/rtems/message/if/send.yml38
-rw-r--r--spec/rtems/message/if/urgent.yml38
-rw-r--r--spec/rtems/message/req/ident.yml15
-rw-r--r--spec/rtems/message/val/ident.yml49
-rw-r--r--spec/rtems/mode/if/all-mode-masks.yml19
-rw-r--r--spec/rtems/mode/if/asr-mask.yml20
-rw-r--r--spec/rtems/mode/if/asr.yml20
-rw-r--r--spec/rtems/mode/if/current-mode.yml21
-rw-r--r--spec/rtems/mode/if/default.yml20
-rw-r--r--spec/rtems/mode/if/group.yml18
-rw-r--r--spec/rtems/mode/if/header.yml12
-rw-r--r--spec/rtems/mode/if/interrupt-level-body.yml35
-rw-r--r--spec/rtems/mode/if/interrupt-level.yml30
-rw-r--r--spec/rtems/mode/if/interrupt-mask-variable.yml19
-rw-r--r--spec/rtems/mode/if/interrupt-mask.yml20
-rw-r--r--spec/rtems/mode/if/mode.yml20
-rw-r--r--spec/rtems/mode/if/no-asr.yml20
-rw-r--r--spec/rtems/mode/if/no-preempt.yml20
-rw-r--r--spec/rtems/mode/if/no-timeslice.yml20
-rw-r--r--spec/rtems/mode/if/preempt-mask.yml20
-rw-r--r--spec/rtems/mode/if/preempt.yml20
-rw-r--r--spec/rtems/mode/if/timeslice-mask.yml20
-rw-r--r--spec/rtems/mode/if/timeslice.yml20
-rw-r--r--spec/rtems/mode/req/bit-set.yml15
-rw-r--r--spec/rtems/mode/req/default.yml14
-rw-r--r--spec/rtems/mode/req/masks-all.yml15
-rw-r--r--spec/rtems/mode/req/masks-unique.yml14
-rw-r--r--spec/rtems/mode/req/masks.yml15
-rw-r--r--spec/rtems/mode/req/unique.yml14
-rw-r--r--spec/rtems/mode/val/modes.yml242
-rw-r--r--spec/rtems/mp/if/announce.yml25
-rw-r--r--spec/rtems/mp/if/group.yml20
-rw-r--r--spec/rtems/mp/if/header.yml12
-rw-r--r--spec/rtems/object/if/api-class-information.yml58
-rw-r--r--spec/rtems/object/if/api-maximum-class.yml30
-rw-r--r--spec/rtems/object/if/api-minimum-class.yml30
-rw-r--r--spec/rtems/object/if/build-id.yml36
-rw-r--r--spec/rtems/object/if/build-name.yml36
-rw-r--r--spec/rtems/object/if/get-api-class-name.yml34
-rw-r--r--spec/rtems/object/if/get-api-name.yml30
-rw-r--r--spec/rtems/object/if/get-class-information.yml38
-rw-r--r--spec/rtems/object/if/get-classic-name.yml34
-rw-r--r--spec/rtems/object/if/get-local-node.yml27
-rw-r--r--spec/rtems/object/if/get-name.yml38
-rw-r--r--spec/rtems/object/if/group.yml22
-rw-r--r--spec/rtems/object/if/header.yml12
-rw-r--r--spec/rtems/object/if/id-api-maximum-class.yml30
-rw-r--r--spec/rtems/object/if/id-api-maximum.yml23
-rw-r--r--spec/rtems/object/if/id-api-minimum.yml23
-rw-r--r--spec/rtems/object/if/id-final-index.yml19
-rw-r--r--spec/rtems/object/if/id-final.yml19
-rw-r--r--spec/rtems/object/if/id-get-api.yml26
-rw-r--r--spec/rtems/object/if/id-get-class.yml26
-rw-r--r--spec/rtems/object/if/id-get-index.yml26
-rw-r--r--spec/rtems/object/if/id-get-node.yml26
-rw-r--r--spec/rtems/object/if/id-initial-index.yml19
-rw-r--r--spec/rtems/object/if/id-initial.yml33
-rw-r--r--spec/rtems/object/if/search-all-nodes.yml19
-rw-r--r--spec/rtems/object/if/search-local-node.yml19
-rw-r--r--spec/rtems/object/if/search-other-nodes.yml19
-rw-r--r--spec/rtems/object/if/set-name.yml34
-rw-r--r--spec/rtems/object/if/who-am-i.yml19
-rw-r--r--spec/rtems/option/if/default.yml20
-rw-r--r--spec/rtems/option/if/event-all.yml21
-rw-r--r--spec/rtems/option/if/event-any.yml21
-rw-r--r--spec/rtems/option/if/group.yml18
-rw-r--r--spec/rtems/option/if/header.yml12
-rw-r--r--spec/rtems/option/if/no-wait.yml22
-rw-r--r--spec/rtems/option/if/option.yml20
-rw-r--r--spec/rtems/option/if/wait.yml20
-rw-r--r--spec/rtems/option/req/bit-set.yml15
-rw-r--r--spec/rtems/option/req/default.yml14
-rw-r--r--spec/rtems/option/req/unique.yml14
-rw-r--r--spec/rtems/option/val/options.yml117
-rw-r--r--spec/rtems/part/if/create.yml50
-rw-r--r--spec/rtems/part/if/delete.yml30
-rw-r--r--spec/rtems/part/if/get-buffer.yml34
-rw-r--r--spec/rtems/part/if/group.yml20
-rw-r--r--spec/rtems/part/if/header.yml12
-rw-r--r--spec/rtems/part/if/ident.yml86
-rw-r--r--spec/rtems/part/if/return-buffer.yml34
-rw-r--r--spec/rtems/part/req/ident.yml15
-rw-r--r--spec/rtems/part/val/ident.yml51
-rw-r--r--spec/rtems/ratemon/if/active.yml15
-rw-r--r--spec/rtems/ratemon/if/cancel.yml30
-rw-r--r--spec/rtems/ratemon/if/create.yml34
-rw-r--r--spec/rtems/ratemon/if/delete.yml30
-rw-r--r--spec/rtems/ratemon/if/expired.yml15
-rw-r--r--spec/rtems/ratemon/if/get-statistics.yml34
-rw-r--r--spec/rtems/ratemon/if/get-status.yml34
-rw-r--r--spec/rtems/ratemon/if/group.yml22
-rw-r--r--spec/rtems/ratemon/if/header.yml12
-rw-r--r--spec/rtems/ratemon/if/ident.yml60
-rw-r--r--spec/rtems/ratemon/if/inactive.yml15
-rw-r--r--spec/rtems/ratemon/if/period-states.yml23
-rw-r--r--spec/rtems/ratemon/if/period-statistics.yml82
-rw-r--r--spec/rtems/ratemon/if/period-status-define.yml21
-rw-r--r--spec/rtems/ratemon/if/period-status.yml58
-rw-r--r--spec/rtems/ratemon/if/period.yml34
-rw-r--r--spec/rtems/ratemon/if/printer.yml11
-rw-r--r--spec/rtems/ratemon/if/report-statistics-with-plugin.yml30
-rw-r--r--spec/rtems/ratemon/if/report-statistics.yml26
-rw-r--r--spec/rtems/ratemon/if/reset-all-statistics.yml26
-rw-r--r--spec/rtems/ratemon/if/reset-statistics.yml30
-rw-r--r--spec/rtems/ratemon/req/ident.yml15
-rw-r--r--spec/rtems/ratemon/val/ident.yml45
-rw-r--r--spec/rtems/region/if/create.yml50
-rw-r--r--spec/rtems/region/if/delete.yml30
-rw-r--r--spec/rtems/region/if/extend.yml38
-rw-r--r--spec/rtems/region/if/get-free-information.yml34
-rw-r--r--spec/rtems/region/if/get-information.yml34
-rw-r--r--spec/rtems/region/if/get-segment-size.yml38
-rw-r--r--spec/rtems/region/if/get-segment.yml46
-rw-r--r--spec/rtems/region/if/group.yml20
-rw-r--r--spec/rtems/region/if/header.yml12
-rw-r--r--spec/rtems/region/if/ident.yml59
-rw-r--r--spec/rtems/region/if/resize-segment.yml42
-rw-r--r--spec/rtems/region/if/return-segment.yml34
-rw-r--r--spec/rtems/req/ident-local.yml165
-rw-r--r--spec/rtems/req/ident.yml257
-rw-r--r--spec/rtems/scheduler/if/add-processor.yml52
-rw-r--r--spec/rtems/scheduler/if/get-maximum-priority.yml46
-rw-r--r--spec/rtems/scheduler/if/get-processor-maximum.yml33
-rw-r--r--spec/rtems/scheduler/if/get-processor-set.yml58
-rw-r--r--spec/rtems/scheduler/if/get-processor.yml35
-rw-r--r--spec/rtems/scheduler/if/ident-by-processor-set.yml63
-rw-r--r--spec/rtems/scheduler/if/ident-by-processor.yml51
-rw-r--r--spec/rtems/scheduler/if/ident.yml47
-rw-r--r--spec/rtems/scheduler/if/map-priority-from-posix.yml53
-rw-r--r--spec/rtems/scheduler/if/map-priority-to-posix.yml53
-rw-r--r--spec/rtems/scheduler/if/remove-processor.yml52
-rw-r--r--spec/rtems/sem/if/create.yml183
-rw-r--r--spec/rtems/sem/if/delete.yml30
-rw-r--r--spec/rtems/sem/if/flush.yml30
-rw-r--r--spec/rtems/sem/if/group.yml19
-rw-r--r--spec/rtems/sem/if/header.yml12
-rw-r--r--spec/rtems/sem/if/ident.yml86
-rw-r--r--spec/rtems/sem/if/obtain.yml38
-rw-r--r--spec/rtems/sem/if/release.yml30
-rw-r--r--spec/rtems/sem/if/set-priority.yml42
-rw-r--r--spec/rtems/sem/req/ident.yml15
-rw-r--r--spec/rtems/sem/val/ident.yml49
-rw-r--r--spec/rtems/signal/if/asr-entry.yml22
-rw-r--r--spec/rtems/signal/if/asr.yml19
-rw-r--r--spec/rtems/signal/if/catch.yml34
-rw-r--r--spec/rtems/signal/if/group.yml20
-rw-r--r--spec/rtems/signal/if/header-2.yml12
-rw-r--r--spec/rtems/signal/if/header.yml12
-rw-r--r--spec/rtems/signal/if/send.yml34
-rw-r--r--spec/rtems/signal/if/set.yml19
-rw-r--r--spec/rtems/signal/if/signal-0.yml20
-rw-r--r--spec/rtems/signal/if/signal-1.yml20
-rw-r--r--spec/rtems/signal/if/signal-10.yml20
-rw-r--r--spec/rtems/signal/if/signal-11.yml20
-rw-r--r--spec/rtems/signal/if/signal-12.yml20
-rw-r--r--spec/rtems/signal/if/signal-13.yml20
-rw-r--r--spec/rtems/signal/if/signal-14.yml20
-rw-r--r--spec/rtems/signal/if/signal-15.yml20
-rw-r--r--spec/rtems/signal/if/signal-16.yml20
-rw-r--r--spec/rtems/signal/if/signal-17.yml20
-rw-r--r--spec/rtems/signal/if/signal-18.yml20
-rw-r--r--spec/rtems/signal/if/signal-19.yml20
-rw-r--r--spec/rtems/signal/if/signal-2.yml20
-rw-r--r--spec/rtems/signal/if/signal-20.yml20
-rw-r--r--spec/rtems/signal/if/signal-21.yml20
-rw-r--r--spec/rtems/signal/if/signal-22.yml20
-rw-r--r--spec/rtems/signal/if/signal-23.yml20
-rw-r--r--spec/rtems/signal/if/signal-24.yml20
-rw-r--r--spec/rtems/signal/if/signal-25.yml20
-rw-r--r--spec/rtems/signal/if/signal-26.yml20
-rw-r--r--spec/rtems/signal/if/signal-27.yml20
-rw-r--r--spec/rtems/signal/if/signal-28.yml20
-rw-r--r--spec/rtems/signal/if/signal-29.yml20
-rw-r--r--spec/rtems/signal/if/signal-3.yml20
-rw-r--r--spec/rtems/signal/if/signal-30.yml20
-rw-r--r--spec/rtems/signal/if/signal-31.yml20
-rw-r--r--spec/rtems/signal/if/signal-4.yml20
-rw-r--r--spec/rtems/signal/if/signal-5.yml20
-rw-r--r--spec/rtems/signal/if/signal-6.yml20
-rw-r--r--spec/rtems/signal/if/signal-7.yml20
-rw-r--r--spec/rtems/signal/if/signal-8.yml20
-rw-r--r--spec/rtems/signal/if/signal-9.yml20
-rw-r--r--spec/rtems/status/if/already-suspended.yml16
-rw-r--r--spec/rtems/status/if/called-from-isr.yml17
-rw-r--r--spec/rtems/status/if/code-to-errno.yml74
-rw-r--r--spec/rtems/status/if/code.yml77
-rw-r--r--spec/rtems/status/if/first.yml20
-rw-r--r--spec/rtems/status/if/group.yml18
-rw-r--r--spec/rtems/status/if/header.yml12
-rw-r--r--spec/rtems/status/if/illegal-on-remote-object.yml16
-rw-r--r--spec/rtems/status/if/illegal-on-self.yml17
-rw-r--r--spec/rtems/status/if/incorrect-state.yml17
-rw-r--r--spec/rtems/status/if/internal-error.yml16
-rw-r--r--spec/rtems/status/if/interrupted.yml17
-rw-r--r--spec/rtems/status/if/invalid-address.yml16
-rw-r--r--spec/rtems/status/if/invalid-clock.yml16
-rw-r--r--spec/rtems/status/if/invalid-id.yml16
-rw-r--r--spec/rtems/status/if/invalid-name.yml16
-rw-r--r--spec/rtems/status/if/invalid-node.yml16
-rw-r--r--spec/rtems/status/if/invalid-number.yml16
-rw-r--r--spec/rtems/status/if/invalid-priority.yml16
-rw-r--r--spec/rtems/status/if/invalid-size.yml16
-rw-r--r--spec/rtems/status/if/io-error.yml16
-rw-r--r--spec/rtems/status/if/is-equal.yml37
-rw-r--r--spec/rtems/status/if/is-successful.yml33
-rw-r--r--spec/rtems/status/if/last.yml20
-rw-r--r--spec/rtems/status/if/mp-not-configured.yml16
-rw-r--r--spec/rtems/status/if/no-memory.yml17
-rw-r--r--spec/rtems/status/if/not-configured.yml16
-rw-r--r--spec/rtems/status/if/not-defined.yml16
-rw-r--r--spec/rtems/status/if/not-implemented.yml19
-rw-r--r--spec/rtems/status/if/not-owner-of-resource.yml16
-rw-r--r--spec/rtems/status/if/object-was-deleted.yml17
-rw-r--r--spec/rtems/status/if/proxy-blocking.yml20
-rw-r--r--spec/rtems/status/if/resource-in-use.yml16
-rw-r--r--spec/rtems/status/if/successful.yml16
-rw-r--r--spec/rtems/status/if/task-exitted.yml16
-rw-r--r--spec/rtems/status/if/text.yml32
-rw-r--r--spec/rtems/status/if/timeout.yml16
-rw-r--r--spec/rtems/status/if/too-many.yml17
-rw-r--r--spec/rtems/status/if/unsatisfied.yml16
-rw-r--r--spec/rtems/support/if/group.yml19
-rw-r--r--spec/rtems/support/if/header.yml12
-rw-r--r--spec/rtems/support/if/is-name-valid.yml36
-rw-r--r--spec/rtems/support/if/microseconds-to-ticks.yml31
-rw-r--r--spec/rtems/support/if/milliseconds-to-microseconds.yml29
-rw-r--r--spec/rtems/support/if/milliseconds-to-ticks.yml31
-rw-r--r--spec/rtems/support/if/name-to-characters.yml51
-rw-r--r--spec/rtems/support/if/workspace-allocate.yml34
-rw-r--r--spec/rtems/support/if/workspace-free.yml30
-rw-r--r--spec/rtems/support/if/workspace-get-information.yml30
-rw-r--r--spec/rtems/support/if/workspace-greedy-allocate-all-except-largest.yml30
-rw-r--r--spec/rtems/support/if/workspace-greedy-allocate.yml34
-rw-r--r--spec/rtems/support/if/workspace-greedy-free.yml30
-rw-r--r--spec/rtems/task/if/argument.yml21
-rw-r--r--spec/rtems/task/if/config.yml109
-rw-r--r--spec/rtems/task/if/configured-minimum-stack-size.yml19
-rw-r--r--spec/rtems/task/if/construct.yml91
-rw-r--r--spec/rtems/task/if/create.yml101
-rw-r--r--spec/rtems/task/if/current-priority.yml21
-rw-r--r--spec/rtems/task/if/delete.yml30
-rw-r--r--spec/rtems/task/if/entry.yml20
-rw-r--r--spec/rtems/task/if/exit.yml26
-rw-r--r--spec/rtems/task/if/get-affinity.yml38
-rw-r--r--spec/rtems/task/if/get-priority.yml38
-rw-r--r--spec/rtems/task/if/get-scheduler.yml34
-rw-r--r--spec/rtems/task/if/group.yml20
-rw-r--r--spec/rtems/task/if/header.yml12
-rw-r--r--spec/rtems/task/if/ident.yml85
-rw-r--r--spec/rtems/task/if/initialization-table.yml67
-rw-r--r--spec/rtems/task/if/is-suspended.yml30
-rw-r--r--spec/rtems/task/if/iterate.yml34
-rw-r--r--spec/rtems/task/if/maximum-priority.yml19
-rw-r--r--spec/rtems/task/if/minimum-priority.yml19
-rw-r--r--spec/rtems/task/if/minimum-stack-size.yml19
-rw-r--r--spec/rtems/task/if/mode.yml38
-rw-r--r--spec/rtems/task/if/no-priority.yml19
-rw-r--r--spec/rtems/task/if/priority.yml19
-rw-r--r--spec/rtems/task/if/restart.yml34
-rw-r--r--spec/rtems/task/if/resume.yml30
-rw-r--r--spec/rtems/task/if/self-define.yml19
-rw-r--r--spec/rtems/task/if/self.yml26
-rw-r--r--spec/rtems/task/if/set-affinity.yml38
-rw-r--r--spec/rtems/task/if/set-priority.yml38
-rw-r--r--spec/rtems/task/if/set-scheduler.yml38
-rw-r--r--spec/rtems/task/if/start.yml38
-rw-r--r--spec/rtems/task/if/storage-alignment.yml22
-rw-r--r--spec/rtems/task/if/storage-size.yml41
-rw-r--r--spec/rtems/task/if/suspend.yml30
-rw-r--r--spec/rtems/task/if/task.yml19
-rw-r--r--spec/rtems/task/if/tcb.yml19
-rw-r--r--spec/rtems/task/if/visitor.yml19
-rw-r--r--spec/rtems/task/if/wake-after.yml30
-rw-r--r--spec/rtems/task/if/wake-when.yml30
-rw-r--r--spec/rtems/task/if/yield-processor.yml19
-rw-r--r--spec/rtems/task/req/construct-errors.yml499
-rw-r--r--spec/rtems/task/req/ident.yml123
-rw-r--r--spec/rtems/timer/if/cancel.yml30
-rw-r--r--spec/rtems/timer/if/class-bit-not-dormant.yml19
-rw-r--r--spec/rtems/timer/if/class-bit-on-task.yml19
-rw-r--r--spec/rtems/timer/if/class-bit-time-of-day.yml19
-rw-r--r--spec/rtems/timer/if/classes.yml27
-rw-r--r--spec/rtems/timer/if/create.yml34
-rw-r--r--spec/rtems/timer/if/delete.yml30
-rw-r--r--spec/rtems/timer/if/dormant.yml15
-rw-r--r--spec/rtems/timer/if/fire-after.yml42
-rw-r--r--spec/rtems/timer/if/fire-when.yml42
-rw-r--r--spec/rtems/timer/if/get-information.yml34
-rw-r--r--spec/rtems/timer/if/group.yml19
-rw-r--r--spec/rtems/timer/if/header.yml12
-rw-r--r--spec/rtems/timer/if/ident.yml59
-rw-r--r--spec/rtems/timer/if/information.yml50
-rw-r--r--spec/rtems/timer/if/initiate-server.yml38
-rw-r--r--spec/rtems/timer/if/interval-on-task.yml17
-rw-r--r--spec/rtems/timer/if/interval.yml15
-rw-r--r--spec/rtems/timer/if/reset.yml30
-rw-r--r--spec/rtems/timer/if/server-default-priority.yml19
-rw-r--r--spec/rtems/timer/if/server-fire-after.yml42
-rw-r--r--spec/rtems/timer/if/server-fire-when.yml42
-rw-r--r--spec/rtems/timer/if/service-routine-entry.yml20
-rw-r--r--spec/rtems/timer/if/service-routine.yml19
-rw-r--r--spec/rtems/timer/if/time-of-day-on-task.yml18
-rw-r--r--spec/rtems/timer/if/time-of-day.yml17
-rw-r--r--spec/rtems/timer/req/ident.yml15
-rw-r--r--spec/rtems/timer/val/ident.yml45
-rw-r--r--spec/rtems/type/if/group.yml18
-rw-r--r--spec/rtems/type/if/header.yml27
-rw-r--r--spec/rtems/type/if/id-none.yml20
-rw-r--r--spec/rtems/type/if/id.yml19
-rw-r--r--spec/rtems/type/if/interval.yml19
-rw-r--r--spec/rtems/type/if/minimum-packet-size.yml19
-rw-r--r--spec/rtems/type/if/minimun-hetero-conversion.yml19
-rw-r--r--spec/rtems/type/if/mp-packet-classes.yml20
-rw-r--r--spec/rtems/type/if/mpci-entry.yml20
-rw-r--r--spec/rtems/type/if/mpci-get-packet-entry.yml20
-rw-r--r--spec/rtems/type/if/mpci-initialization-entry.yml21
-rw-r--r--spec/rtems/type/if/mpci-receive-packet-entry.yml21
-rw-r--r--spec/rtems/type/if/mpci-return-packet-entry.yml20
-rw-r--r--spec/rtems/type/if/mpci-send-packet-entry.yml19
-rw-r--r--spec/rtems/type/if/mpci-table.yml19
-rw-r--r--spec/rtems/type/if/multiprocessing-table.yml19
-rw-r--r--spec/rtems/type/if/name.yml22
-rw-r--r--spec/rtems/type/if/no-timeout.yml20
-rw-r--r--spec/rtems/type/if/packet-prefix.yml20
-rw-r--r--spec/rtems/type/if/time-of-day.yml75
-rw-r--r--spec/rtems/userext/if/create.yml38
-rw-r--r--spec/rtems/userext/if/delete.yml30
-rw-r--r--spec/rtems/userext/if/fatal-code.yml19
-rw-r--r--spec/rtems/userext/if/fatal-source.yml19
-rw-r--r--spec/rtems/userext/if/fatal.yml19
-rw-r--r--spec/rtems/userext/if/group.yml21
-rw-r--r--spec/rtems/userext/if/header.yml12
-rw-r--r--spec/rtems/userext/if/ident.yml60
-rw-r--r--spec/rtems/userext/if/table.yml19
-rw-r--r--spec/rtems/userext/if/task-begin.yml19
-rw-r--r--spec/rtems/userext/if/task-create.yml19
-rw-r--r--spec/rtems/userext/if/task-delete.yml19
-rw-r--r--spec/rtems/userext/if/task-exitted.yml19
-rw-r--r--spec/rtems/userext/if/task-restart.yml19
-rw-r--r--spec/rtems/userext/if/task-start.yml19
-rw-r--r--spec/rtems/userext/if/task-switch.yml19
-rw-r--r--spec/rtems/userext/if/task-terminate.yml19
-rw-r--r--spec/rtems/userext/req/ident.yml15
-rw-r--r--spec/rtems/userext/val/ident.yml47
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