summaryrefslogtreecommitdiffstats
path: root/doc/itron3.0/semaphore.t
diff options
context:
space:
mode:
Diffstat (limited to 'doc/itron3.0/semaphore.t')
-rw-r--r--doc/itron3.0/semaphore.t642
1 files changed, 0 insertions, 642 deletions
diff --git a/doc/itron3.0/semaphore.t b/doc/itron3.0/semaphore.t
deleted file mode 100644
index 380e72d07e..0000000000
--- a/doc/itron3.0/semaphore.t
+++ /dev/null
@@ -1,642 +0,0 @@
-@c
-@c COPYRIGHT (c) 1988-2002.
-@c On-Line Applications Research Corporation (OAR).
-@c All rights reserved.
-@c
-@c This is the chapter from the RTEMS ITRON User's Guide that
-@c documents the services provided by the semaphore
-@c manager.
-@c
-@c $Id$
-@c
-
-@chapter Semaphore Manager
-
-@section Introduction
-
-The semaphore manager provides functions to allocate, delete, and
-control counting semaphores. This manager is based on the
-ITRON 3.0 standard.
-
-The services provided by the semaphore manager are:
-
-@itemize @bullet
-@item @code{cre_sem} - Create Semaphore
-@item @code{del_sem} - Delete Semaphore
-@item @code{sig_sem} - Signal Semaphore
-@item @code{wai_sem} - Wait on Semaphore
-@item @code{preq_sem} - Poll and Request Semaphore
-@item @code{twai_sem} - Wait on Semaphore with Timeout
-@item @code{ref_sem} - Reference Semaphore Status
-@end itemize
-
-@section Background
-
-@subsection Theory
-
-Semaphores are used for synchronization and mutual exclusion by indicating
-the availability and number of resources. The task (the task which is
-returning resources) notifying other tasks of an event increases the number
-of resources held by the semaphore by one. The task (the task which
-will obtain resources) waiting for the event decreases the number of
-resources held by the semaphore by one. If the number of resources held by a
-semaphore is insufficient (namely 0), the task requiring resources will
-wait until the next time resources are returned to the semaphore. If there is
-more than one task waiting for a semaphore, the tasks will be placed in the
-queue.
-
-
-@subsection T_CSEM Structure
-
-The T_CSEM structure is used to define the characteristics of a semaphore
-and passed an as argument to the @code{cre_sem} service. The structure
-is defined as follows:
-
-@example
-@group
-/*
- * Create Semaphore (cre_sem) Structure
- */
-
-typedef struct t_csem @{
- VP exinf; /* extended information */
- ATR sematr; /* semaphore attributes */
- /* Following is the extended function for [level X]. */
- INT isemcnt; /* initial semaphore count */
- INT maxsem; /* maximum semaphore count */
- /* additional implementation dependent information may be included */
-@} T_CSEM;
-
-/*
- * sematr - Semaphore Attribute Values
- */
-
-#define TA_TFIFO 0x00 /* waiting tasks are handled by FIFO */
-#define TA_TPRI 0x01 /* waiting tasks are handled by priority */
-
-@end group
-@end example
-
-where the meaning of each field is:
-
-@table @b
-@item exinf
-is for any extended information that the implementation may define.
-This implementation does not use this field.
-
-@item sematr
-is the attributes for this semaphore. The only attributed
-which can be specified is whether tasks wait in FIFO (@code{TA_TFIFO})
-or priority (@code{TA_TPRI}) order.
-
-@item isemcnt
-is the initial count of the semaphore.
-
-@item maxsem
-is the maximum count the semaphore may have. It places an upper
-limit on the value taken by the semaphore.
-
-@end table
-
-@subsection Building a Semaphore Attribute Set
-
-In general, an attribute set is built by a bitwise OR
-of the desired attribute components. The following table lists
-the set of valid semaphore attributes:
-
-@itemize @bullet
-@item @code{TA_TFIFO} - tasks wait by FIFO
-
-@item @code{TA_TPRI} - tasks wait by priority
-
-@end itemize
-
-Attribute values are specifically designed to be
-mutually exclusive, therefore bitwise OR and addition operations
-are equivalent as long as each attribute appears exactly once in
-the component list.
-
-@subsection T_RSEM Structure
-
-The T_RSEM structure is filled in by the @code{ref_sem} service with
-status and state information on a semaphore. The structure
-is defined as follows:
-
-@example
-@group
-/*
- * Reference Semaphore (ref_sem) Structure
- */
-
-typedef struct t_rsem @{
- VP exinf; /* extended information */
- BOOL_ID wtsk; /* indicates whether there is a waiting task */
- INT semcnt; /* current semaphore count */
- /* additional implementation dependent information may be included */
-@} T_RSEM;
-@end group
-@end example
-
-@table @b
-
-@item exinf
-is for any extended information that the implementation may define.
-This implementation does not use this field.
-
-@item wtsk
-is TRUE when there is one or more task waiting on the semaphore.
-It is FALSE if no tasks are currently waiting. The meaning of this
-field is allowed to vary between ITRON implementations. It may have
-the ID of a waiting task, the number of tasks waiting, or a boolean
-indication that one or more tasks are waiting.
-
-@item semcnt
-is the current semaphore count.
-
-@end table
-
-The information in this table is very volatile and should be used
-with caution in an application.
-
-@section Operations
-
-@subsection Using as a Binary Semaphore
-
-Creating a semaphore with a limit on the count of 1 effectively
-restricts the semaphore to being a binary semaphore. When the
-binary semaphore is available, the count is 1. When the binary
-semaphore is unavailable, the count is 0.
-
-Since this does not result in a true binary semaphore, advanced
-binary features like the Priority Inheritance and Priority
-Ceiling Protocols are not available.
-
-@section System Calls
-
-This section details the semaphore manager's services.
-A subsection is dedicated to each of this manager's services
-and describes the calling sequence, related constants, usage,
-and status codes.
-
-
-@c
-@c cre_sem
-@c
-
-@page
-@subsection cre_sem - Create Semaphore
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-ER cre_sem(
- ID semid,
- T_CSEM *pk_csem
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@code{E_OK} - Normal Completion
-
-@code{E_ID} - Invalid ID number (semid was invalid or could not be used)
-
-@code{E_NOMEM} - Insufficient memory (Memory for control block cannot be
-allocated)
-
-@code{E_OACV} - Object access violation (A semid less than -4 was
-specified from a user task.)
-
-@code{E_RSATR} - Reserved attribute (sematr was invalid or could not be
-used)
-
-@code{E_OBJ} - Invalid object state (a semaphore of the same ID already
-exists)
-
-@code{E_PAR} - Parameter error (pk_csem is invalid and/or isemcnt or
-maxsem is negative or invalid)
-
-@code{EN_OBJNO} - An object number which could not be accessed on the
-target node is specified.
-
-@code{EN_CTXID} - Specified an object on another node when the system call
-was issued from a task in dispatch disabled state or from a task-
-independent portion
-
-@code{EN_PAR} - A value outside the range supported by the target node
-and/or transmission packet format was specified as a parameter (a value
-outside supported range was specified for exinf, sematr, isemcnt and/or
-maxsem)
-
-@subheading DESCRIPTION:
-
-This routine creates a semaphore that resides on the local node. The
-semaphore is initialized based on the attributes specified in the
-@code{pk_csem} structure. The initial and maximum counts of the
-semaphore are set based on the @code{isemcnt} and @code{maxsem} fields
-in this structure.
-
-Specifying @code{TA_TPRI} in the @code{sematr} field of the
-semaphore attributes structure causes tasks
-waiting for a semaphore to be serviced according to task
-priority. When @code{TA_TFIFO} is selected, tasks are serviced in First
-In-First Out order.
-
-@subheading NOTES:
-
-Multiprocessing is not supported. Thus none of the "EN_" status codes
-will be returned.
-
-All memory is preallocated for RTEMS ITRON objects. Thus, no dynamic
-memory allocation is performed by @code{cre_sem} and the @code{E_NOMEM}
-error can not be returned.
-
-This directive will not cause the running task to be preempted.
-
-The following semaphore attribute constants are
-defined by RTEMS:
-
-@itemize @bullet
-@item @code{TA_TFIFO} - tasks wait by FIFO
-
-@item @code{TA_TPRI} - tasks wait by priority
-
-@end itemize
-
-@c
-@c del_sem
-@c
-
-@page
-@subsection del_sem - Delete Semaphore
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-ER del_sem(
- ID semid
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@code{E_OK} - Normal Completion
-
-@code{E_ID} - Invalid ID number (semid was invalid or could not be used)
-
-@code{E_NOEXS} - Object does not exist (the semaphore specified by semid
-does not exist)
-
-@code{E_OACV} - Object access violation (A semid less than -4 was
-specified from a user task. This is implementation dependent.)
-
-@code{EN_OBJNO} - An object number which could not be accessed on the
-target node is specified.
-
-@code{EN_CTXID} - Specified an object on another node when the system call
-was issued from a task in dispatch disabled state or from a
-task-independent portion
-
-@subheading DESCRIPTION:
-
-This routine deletes the semaphore specified by @code{semid}.
-All tasks blocked waiting to acquire the semaphore will be
-readied and returned a status code which indicates that the
-semaphore was deleted. The control block for this semaphore
-is reclaimed by RTEMS.
-
-
-@subheading NOTES:
-
-Multiprocessing is not supported. Thus none of the "EN_" status codes
-will be returned.
-
-The calling task will be preempted if it is enabled
-by the task's execution mode and a higher priority local task is
-waiting on the deleted semaphore. The calling task will NOT be
-preempted if all of the tasks that are waiting on the semaphore
-are remote tasks.
-
-The calling task does not have to be the task that
-created the semaphore. Any local task that knows the semaphore
-id can delete the semaphore.
-
-
-@c
-@c sig_sem
-@c
-
-@page
-@subsection sig_sem - Signal Semaphore
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-ER sig_sem(
- ID semid
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@code{E_OK} - Normal Completion
-
-@code{E_ID} - Invalid ID number (semid was invalid or could not be used)
-
-@code{E_NOEXS} - Object does not exist (the semaphore specified by semid
-does not exist)
-
-@code{E_OACV} - Object access violation (A semid less than -4 was
-specified from a user task. This is implementation dependent.)
-
-@code{E_QOVR} - Queuing or nesting overflow (the queuing count given by
-semcnt went over the maximum allowed)
-
-@code{EN_OBJNO} - An object number which could not be accessed on the
-target node is specified.
-
-@code{EN_CTXID} - Specified an object on another node when the system call
-was issued from a task in dispatch disabled state or from a
-task-independent portion
-
-@subheading DESCRIPTION:
-
-@subheading NOTES:
-
-Multiprocessing is not supported. Thus none of the "EN_" status codes
-will be returned.
-
-@c
-@c wai_sem
-@c
-
-@page
-@subsection wai_sem - Wait on Semaphore
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-ER wai_sem(
- ID semid
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@code{E_OK} - Normal Completion
-
-@code{E_ID} - Invalid ID number (semid was invalid or could not be used)
-
-@code{E_NOEXS} - Object does not exist (the semaphore specified by semid
-does not exist)
-
-@code{E_OACV} - Object access violation (A semid less than -4 was
-specified from a user task. This is implementation dependent.)
-
-@code{E_DLT} - The object being waited for was deleted (the specified
-semaphore was deleted while waiting)
-
-@code{E_RLWAI} - Wait state was forcibly released (rel_wai was received
-while waiting)
-
-@code{E_CTX} - Context error (issued from task-independent portions or a
-task in dispatch disabled state)
-
-@code{EN_OBJNO} - An object number which could not be accessed on the
-target node is specified.
-
-@code{EN_PAR} - A value outside the range supported by the target node
-and/or transmission packet format was specified as a parameter (a value
-outside supported range was specified for tmout)
-
-@subheading DESCRIPTION:
-
-This routine attempts to acquire the semaphore specified by @code{semid}.
-If the semaphore is available (i.e. positive semaphore count), then the
-semaphore count is decremented and the calling task returns immediately.
-Otherwise the calling tasking is blocked until the semaphore is released
-by a subsequent invocation of @code{sig_sem}.
-
-@subheading NOTES:
-
-Multiprocessing is not supported. Thus none of the "EN_" status codes
-will be returned.
-
-If the semaphore is not available, then the calling task will be blocked.
-
-@c
-@c preq_sem
-@c
-
-@page
-@subsection preq_sem - Poll and Request Semaphore
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-ER preq_sem(
- ID semid
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@code{E_OK} - Normal Completion
-
-@code{E_ID} - Invalid ID number (semid was invalid or could not be used)
-
-@code{E_NOEXS} - Object does not exist (the semaphore specified by semid
-does not exist)
-
-@code{E_OACV} - Object access violation (A semid less than -4 was
-specified from a user task. This is implementation dependent.)
-
-@code{E_TMOUT} - Polling failure or timeout exceeded
-
-@code{E_CTX} - Context error (issued from task-independent portions or a
-task in dispatch disabled state)
-
-@code{EN_OBJNO} - An object number which could not be accessed on the
-target node is specified.
-
-@code{EN_PAR} - A value outside the range supported by the target node
-and/or transmission packet format was specified as a parameter (a value
-outside supported range was specified for tmout)
-
-@subheading DESCRIPTION:
-
-This routine attempts to acquire the semaphore specified by @code{semid}.
-If the semaphore is available (i.e. positive semaphore count), then the
-semaphore count is decremented and the calling task returns immediately.
-Otherwise, the @code{E_TMOUT} error is returned to the calling task to
-indicate the semaphore is unavailable.
-
-@subheading NOTES:
-
-Multiprocessing is not supported. Thus none of the "EN_" status codes
-will be returned.
-
-This routine will not cause the running task to be preempted.
-
-@c
-@c twai_sem
-@c
-
-@page
-@subsection twai_sem - Wait on Semaphore with Timeout
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-ER twai_sem(
- ID semid,
- TMO tmout
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@code{E_OK} - Normal Completion
-
-@code{E_ID} - Invalid ID number (semid was invalid or could not be used)
-
-@code{E_NOEXS} - Object does not exist (the semaphore specified by semid
-does not exist)
-
-@code{E_OACV} - Object access violation (A semid less than -4 was
-specified from a user task. This is implementation dependent.)
-
-@code{E_PAR} - Parameter error (tmout is -2 or less)
-
-@code{E_DLT} - The object being waited for was deleted (the specified
-semaphore was deleted while waiting)
-
-@code{E_RLWAI} - Wait state was forcibly released (rel_wai was received
-while waiting)
-
-@code{E_TMOUT} - Polling failure or timeout exceeded
-
-@code{E_CTX} - Context error (issued from task-independent portions or a
-task in dispatch disabled state)
-
-@code{EN_OBJNO} - An object number which could not be accessed on the
-target node is specified.
-
-@code{EN_PAR} - A value outside the range supported by the target node
-and/or transmission packet format was specified as a parameter (a value
-outside supported range was specified for tmout)
-
-@subheading DESCRIPTION:
-
-This routine attempts to acquire the semaphore specified by @code{semid}.
-If the semaphore is available (i.e. positive semaphore count), then the
-semaphore count is decremented and the calling task returns immediately.
-Otherwise the calling tasking is blocked until the semaphore is released
-by a subsequent invocation of @code{sig_sem} or the timeout period specified
-by @code{tmout} milliseconds is exceeded. If the timeout period is exceeded,
-then the @code{E_TMOUT} error is returned.
-
-By specifiying @code{tmout} as @code{TMO_FEVR}, this routine has the same
-behavior as @code{wai_sem}. Similarly, by specifiying @code{tmout} as
-@code{TMO_POL}, this routine has the same behavior as @code{preq_sem}.
-
-@subheading NOTES:
-
-Multiprocessing is not supported. Thus none of the "EN_" status codes
-will be returned.
-
-This routine may cause the calling task to block.
-
-A clock tick is required to support the timeout functionality of
-this routine.
-
-@c
-@c ref_sem
-@c
-
-@page
-@subsection ref_sem - Reference Semaphore Status
-
-@subheading CALLING SEQUENCE:
-
-@ifset is-C
-@example
-ER ref_sem(
- T_RSEM *pk_rsem,
- ID semid
-);
-@end example
-@end ifset
-
-@ifset is-Ada
-@end ifset
-
-@subheading STATUS CODES:
-
-@code{E_OK} - Normal Completion
-
-@code{E_ID} - Invalid ID number (semid was invalid or could not be used)
-
-@code{E_NOEXS} - Object does not exist (the semaphore specified by semid
-does not exist)
-
-@code{E_OACV} - Object access violation (A semid less than -4 was
-specified from a user task. This is implementation dependent.)
-
-@code{E_PAR} - Parameter error (the packet address for the return
-parameters could not be used)
-
-@code{EN_OBJNO} - An object number which could not be accessed on the
-target node is specified.
-
-@code{EN_CTXID} - Specified an object on another node when the system call
-was issued from a task in dispatch disabled state or from a
-task-independent portion
-
-@code{EN_RPAR} - A value outside the range supported by the requesting
-node and/or transmission packet format was returned as a parameter (a
-value outside supported range was specified for exinf, wtsk or semcnt)
-
-@subheading DESCRIPTION:
-
-This routine returns status information on the semaphore specified
-by @code{semid}. The @code{pk_rsem} structure is filled in by
-this service call.
-
-@subheading NOTES:
-
-Multiprocessing is not supported. Thus none of the "EN_" status codes
-will be returned.
-
-This routine will not cause the running task to be preempted.
-