diff options
Diffstat (limited to 'c-user/user-extensions/directives.rst')
-rw-r--r-- | c-user/user-extensions/directives.rst | 143 |
1 files changed, 143 insertions, 0 deletions
diff --git a/c-user/user-extensions/directives.rst b/c-user/user-extensions/directives.rst new file mode 100644 index 0000000..5c6a0eb --- /dev/null +++ b/c-user/user-extensions/directives.rst @@ -0,0 +1,143 @@ +.. SPDX-License-Identifier: CC-BY-SA-4.0 + +.. Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) + +Directives +========== + +This section details the user extension manager's directives. A subsection is +dedicated to each of this manager's directives and describes the calling +sequence, related constants, usage, and status codes. + +.. raw:: latex + + \clearpage + +.. index:: create an extension set +.. index:: rtems_extension_create + +.. _rtems_extension_create: + +EXTENSION_CREATE - Create a extension set +----------------------------------------- + +CALLING SEQUENCE: + .. code-block:: c + + rtems_status_code rtems_extension_create( + rtems_name name, + const rtems_extensions_table *table, + rtems_id *id + ); + +DIRECTIVE STATUS CODES: + .. list-table:: + :class: rtems-table + + * - ``RTEMS_SUCCESSFUL`` + - extension set created successfully + * - ``RTEMS_INVALID_ADDRESS`` + - ``table`` or ``id`` are NULL + * - ``RTEMS_INVALID_NAME`` + - invalid extension set name + * - ``RTEMS_TOO_MANY`` + - too many extension sets created + +DESCRIPTION: + + This directive creates an extension set object and initializes it using the + specified extension set table. The assigned extension set identifier is + returned in :c:data:`id`. This identifier is used to access the extension + set with other user extension manager directives. For control and + maintenance of the extension set, RTEMS allocates an Extension Set Control + Block (ESCB) from the local ESCB free pool and initializes it. The + user-specified :c:data:`name` is assigned to the ESCB and may be used to + identify the extension set via + :ref:`rtems_extension_ident() <rtems_extension_ident>`. The extension set + specified by :c:data:`table` is copied to the ESCB. + +NOTES: + This directive may cause the calling task to be preempted due to an + obtain and release of the object allocator mutex. + +.. raw:: latex + + \clearpage + +.. index:: get ID of an extension set +.. index:: obtain ID of an extension set +.. index:: rtems_extension_ident + +.. _rtems_extension_ident: + +EXTENSION_IDENT - Get ID of a extension set +------------------------------------------- + +CALLING SEQUENCE: + .. code-block:: c + + rtems_status_code rtems_extension_ident( + rtems_name name, + rtems_id *id + ); + +DIRECTIVE STATUS CODES: + .. list-table:: + :class: rtems-table + + * - ``RTEMS_SUCCESSFUL`` + - extension set identified successfully + * - ``RTEMS_INVALID_NAME`` + - extension set name not found + +DESCRIPTION: + This directive obtains the extension set identifier associated with the + extension set :c:data:`name` to be acquired and returns it in :c:data:`id`. + If the extension set name is not unique, then the extension set identifier + will match one of the extension sets with that name. However, this + extension set identifier is not guaranteed to correspond to the desired + extension set. The extension set identifier is used to access this + extension set in other extension set related directives. + +NOTES: + This directive will not cause the running task to be preempted. + +.. raw:: latex + + \clearpage + +.. index:: delete an extension set +.. index:: rtems_extension_delete + +.. _rtems_extension_delete: + +EXTENSION_DELETE - Delete a extension set +----------------------------------------- + +CALLING SEQUENCE: + .. code-block:: c + + rtems_status_code rtems_extension_delete( + rtems_id id + ); + +DIRECTIVE STATUS CODES: + .. list-table:: + :class: rtems-table + + * - ``RTEMS_SUCCESSFUL`` + - extension set deleted successfully + * - ``RTEMS_INVALID_ID`` + - invalid extension set id + +DESCRIPTION: + This directive deletes the extension set specified by :c:data:`id`. If the + extension set is running, it is automatically canceled. The ESCB for the + deleted extension set is reclaimed by RTEMS. + +NOTES: + This directive may cause the calling task to be preempted due to an + obtain and release of the object allocator mutex. + + A extension set can be deleted by a task other than the task which created + the extension set. |