summaryrefslogtreecommitdiffstats
path: root/spec/rtems/userext
diff options
context:
space:
mode:
Diffstat (limited to 'spec/rtems/userext')
-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
19 files changed, 451 insertions, 0 deletions
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