|
|
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
|
<html>
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
</head>
|
|
<body>
|
|
<h1><strong>Requirements</strong>
|
|
</h1>
|
|
<h2><strong>ARINC APEX</strong>
|
|
The primary objective of this Specification is to define a general-purpose APEX (APplication/EXecutive) interface between the Operating System (O/S) of an avionics computer resource and the application software. Included within this specification, are the interface requirements between the application software and the O/S and the list of services which allow the application software to control the scheduling, communication, and status information of its internal processing elements.
|
|
</h2>
|
|
<h3><strong>Buffer Services</strong>
|
|
A buffer is a communication object used by processes of a same partition to send or receive messages. In buffers, the messages are queued in FIFO order. The buffer message size is variable, but a maximum size value is given at buffer creation. A buffer must be created during the initialization mode before it can be used. A name is given at buffer creation, this name is local to the partition and is not an attribute of the partition configuration table.
|
|
</h3>
|
|
<h4><strong>CREATE_BUFFER</strong>
|
|
The CREATE_BUFFER service request is used to create a message buffer with a maximum number of maximum size messages. A BUFFER_ID is assigned by the O/S and returned to the calling process. Processes can create as many buffers as the pre-allocated memory space will support. The QUEUING_DISCIPLINE input parameter indicates the process queuing policy (FIFO or priority order) associated with that buffer.
|
|
</h4>
|
|
<p><strong>CREATE_BUFFER.01</strong>
|
|
RETURN_CODE := INVALID_CONFIG
|
|
</p>
|
|
<p><strong>CREATE_BUFFER.02</strong>
|
|
RETURN_CODE := NO_ACTION
|
|
</p>
|
|
<p><strong>CREATE_BUFFER.03</strong>
|
|
RETURN_CODE := INVALID_PARAM
|
|
</p>
|
|
<p><strong>CREATE_BUFFER.04</strong>
|
|
RETURN_CODE := INVALID_MODE
|
|
</p>
|
|
<p><strong>CREATE_BUFFER.05</strong>
|
|
BUFFER_ID := (ID of unallocated buffer control block)
|
|
</p>
|
|
<p><strong>CREATE_BUFFER.06</strong>
|
|
Set the process buffer queuing discipline to QUEUING_DISCIPLINE
|
|
</p>
|
|
<p><strong>CREATE_BUFFER.07</strong>
|
|
RETURN_CODE := NO_ERROR
|
|
</p>
|
|
<p><strong>CREATE_BUFFER.08</strong>
|
|
</p><p>Set the process buffer capacity to MAX_NB_MESSAGE</p>
|
|
</p>
|
|
<p><strong>CREATE_BUFFER.09</strong>
|
|
</p><p>Set the process buffer message size to MAX_MESSAGE_SIZE</p>
|
|
</p>
|
|
<p><strong>CREATE_BUFFER.10</strong>
|
|
</p><p>The newly created buffer should be empty</p>
|
|
</p>
|
|
<h4><strong>SEND_BUFFER</strong>
|
|
The SEND_BUFFER service request is used to send a message in the specified buffer. The calling process will be queued while the buffer is full for a maximum duration of specified time-out.
|
|
</h4>
|
|
<p><strong>SEND_BUFFER.01</strong>
|
|
RETURN_CODE := INVALID_PARAM
|
|
</p>
|
|
<p><strong>SEND_BUFFER.02</strong>
|
|
store the message in the FIFO message queue of the specified buffer
|
|
</p>
|
|
<p><strong>SEND_BUFFER.03</strong>
|
|
Remove the first process from the process queue
|
|
</p>
|
|
<p><strong>SEND_BUFFER.04</strong>
|
|
Copy the message represented by MESSAGE_ADDR and LENGTH into the
|
|
|
|
receiving process’s message area of the RECEIVE service request done by this receiving process
|
|
</p>
|
|
<p><strong>SEND_BUFFER.05</strong>
|
|
stop the affected time counter
|
|
</p>
|
|
<p><strong>SEND_BUFFER.06</strong>
|
|
move receiving process from the WAITING to the READY state (except if
|
|
|
|
another process suspended it)
|
|
</p>
|
|
<p><strong>SEND_BUFFER.07</strong>
|
|
ask for process scheduling
|
|
</p>
|
|
<p><strong>SEND_BUFFER.08</strong>
|
|
RETURN_CODE := NO_ERROR
|
|
</p>
|
|
<p><strong>SEND_BUFFER.09</strong>
|
|
RETURN_CODE := NOT_AVAILABLE
|
|
</p>
|
|
<p><strong>SEND_BUFFER.10</strong>
|
|
RETURN_CODE := INVALID_MODE
|
|
</p>
|
|
<p><strong>SEND_BUFFER.11</strong>
|
|
set the current process state to WAITING
|
|
</p>
|
|
<p><strong>SEND_BUFFER.12</strong>
|
|
insert this process in the buffer process queue at the position specified
|
|
|
|
by the queuing discipline
|
|
</p>
|
|
<p><strong>SEND_BUFFER.13</strong>
|
|
initiate a time counter with duration TIME_OUT
|
|
</p>
|
|
<p><strong>SEND_BUFFER.14</strong>
|
|
RETURN_CODE := TIMED_OUT
|
|
</p>
|
|
<h4><strong>RECEIVE_BUFFER</strong>
|
|
The RECEIVE_BUFFER service request is used to receive a message from the specified buffer. The calling process will be queued while the buffer is empty for a time-out maximum duration.
|
|
</h4>
|
|
<p><strong>RECEIVE_BUFFER.01</strong>
|
|
RETURN_CODE := INVALID_PARAM
|
|
</p>
|
|
<p><strong>RECEIVE_BUFFER.02</strong>
|
|
copy the first message of the specified buffer message queue to the location represented by MESSAGE_ADDR
|
|
</p>
|
|
<p><strong>RECEIVE_BUFFER.03</strong>
|
|
LENGTH := Length of the copied message
|
|
</p>
|
|
<p><strong>RECEIVE_BUFFER.04</strong>
|
|
remove the first waiting process from the process queue
|
|
</p>
|
|
<p><strong>RECEIVE_BUFFER.05</strong>
|
|
put the message sent by this waiting process in the FIFO message queue
|
|
</p>
|
|
<p><strong>RECEIVE_BUFFER.06</strong>
|
|
stop the affected time counter
|
|
</p>
|
|
<p><strong>RECEIVE_BUFFER.07</strong>
|
|
move this sending process from the WAITING to the READY state (except
|
|
|
|
if another process suspended it)
|
|
</p>
|
|
<p><strong>RECEIVE_BUFFER.08</strong>
|
|
ask for process scheduling
|
|
</p>
|
|
<p><strong>RECEIVE_BUFFER.09</strong>
|
|
RETURN_CODE := NO_ERROR
|
|
</p>
|
|
<p><strong>RECEIVE_BUFFER.10</strong>
|
|
RETURN_CODE := NOT_AVAILABLE
|
|
</p>
|
|
<p><strong>RECEIVE_BUFFER.11</strong>
|
|
RETURN_CODE := INVALID_MODE
|
|
</p>
|
|
<p><strong>RECEIVE_BUFFER.12</strong>
|
|
set the current process state to WAITING
|
|
</p>
|
|
<p><strong>RECEIVE_BUFFER.13</strong>
|
|
insert this process in the buffer process queue at the position specified
|
|
|
|
by the queuing discipline
|
|
</p>
|
|
<p><strong>RECEIVE_BUFFER.14</strong>
|
|
initiate a time counter with duration TIME_OUT
|
|
</p>
|
|
<p><strong>RECEIVE_BUFFER.15</strong>
|
|
RETURN_CODE := TIMED_OUT
|
|
</p>
|
|
<h4><strong>GET_BUFFER_ID</strong>
|
|
The GET_BUFFER_ID service request allows the current process to get the identifier of a buffer giving its name.
|
|
</h4>
|
|
<p><strong>GET_BUFFER_ID.01</strong>
|
|
RETURN_CODE := INVALID_CONFIG
|
|
</p>
|
|
<p><strong>GET_BUFFER_ID.02</strong>
|
|
BUFFER_ID := (ID of the buffer named BUFFER_NAME)
|
|
</p>
|
|
<p><strong>GET_BUFFER_ID.03</strong>
|
|
RETURN_CODE := NO_ERROR
|
|
</p>
|
|
<h4><strong>GET_BUFFER_STATUS</strong>
|
|
The GET_BUFFER_ID service request allows the current process to get the identifier of a buffer giving its name.
|
|
</h4>
|
|
<p><strong>GET_BUFFER_STATUS.01</strong>
|
|
RETURN_CODE := INVALID_PARAM
|
|
</p>
|
|
<h5><strong>GET_BUFFER_STATUS.02</strong>
|
|
BUFFER_STATUS :=
|
|
|
|
(NB_MESSAGE => current number of messages inside the buffer, MAX_NB_MESSAGE => maximum number of messages inside the buffer, MAX_MESSAGE_SIZE => maximum size of messages, WAITING_PROCESSES => the number of waiting processes)
|
|
</h5>
|
|
<p><strong>GET_BUFFER_STATUS.02.01</strong>
|
|
NB_MESSAGE => current number of messages inside the buffer
|
|
</p>
|
|
<p><strong>GET_BUFFER_STATUS.02.02</strong>
|
|
MAX_NB_MESSAGE => maximum number of messages inside the buffer
|
|
</p>
|
|
<p><strong>GET_BUFFER_STATUS.02.03</strong>
|
|
MAX_MESSAGE_SIZE => maximum size of messages
|
|
</p>
|
|
<p><strong>GET_BUFFER_STATUS.02.04</strong>
|
|
WAITING_PROCESSES => the number of waiting processes
|
|
</p>
|
|
<p><strong>GET_BUFFER_STATUS.03</strong>
|
|
RETURN_CODE := NO_ERROR
|
|
</p>
|
|
<h3><strong>Blackboard Services</strong>
|
|
A blackboard is a communication object used by processes of a same partition to send or receive messages. A blackboard does not use message queues, each new occurrence of a message overwrites the current one. The blackboard message size is variable, but a maximum size value is given at blackboard creation. A blackboard must be created during the initialization mode before it can be used. The memory size given in the configuration table should include the memory size necessary to manage all the blackboards of a partition. A name is given at blackboard creation, this name is local to the partition and is not an attribute of the partition configuration table.
|
|
</h3>
|
|
<h4><strong>CREATE_BLACKBOARD</strong>
|
|
The CREATE_BLACKBOARD service request is used to create a blackboard with a specified message size. A BLACKBOARD_ID is assigned by the O/S and returned to the calling process. Processes can create as many buffers as the pre-allocated memory space will support.
|
|
</h4>
|
|
<p><strong>CREATE_BLACKBOARD.01</strong>
|
|
RETURN_CODE := INVALID_CONFIG
|
|
</p>
|
|
<p><strong>CREATE_BLACKBOARD.02</strong>
|
|
<span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);">RETURN_CODE := NO_ACTION</span><span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);"/>
|
|
</p>
|
|
<p><strong>CREATE_BLACKBOARD.03</strong>
|
|
<span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);">RETURN_CODE := INVALID_PARAM</span><span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);"/>
|
|
</p>
|
|
<p><strong>CREATE_BLACKBOARD.04</strong>
|
|
RETURN_CODE := INVALID_MODE
|
|
</p>
|
|
<p><strong>CREATE_BLACKBOARD.05</strong>
|
|
BLACKBOARD_ID := (ID of unallocated blackboard control block)
|
|
</p>
|
|
<p><strong>CREATE_BLACKBOARD.06</strong>
|
|
Set the empty indicator to TRUE
|
|
</p>
|
|
<p><strong>CREATE_BLACKBOARD.07</strong>
|
|
RETURN_CODE := NO_ERROR
|
|
</p>
|
|
<h4><strong>DISPLAY_BLACKBOARD</strong>
|
|
The DISPLAY_BLACKBOARD service request is used to display a message in the specified blackboard. The specified blackboard becomes not empty.
|
|
</h4>
|
|
<p><strong>DISPLAY_BLACKBOARD.01</strong>
|
|
RETURN_CODE := INVALID_PARAM
|
|
</p>
|
|
<p><strong>DISPLAY_BLACKBOARD.02</strong>
|
|
<span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-style: italic; font-weight: normal; color: rgb(0, 0, 0);">s</span><span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);">et the empty indicator to OCCUPIED</span><span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);"/>
|
|
</p>
|
|
<p><strong>DISPLAY_BLACKBOARD.03</strong>
|
|
</p><p><p style="margin-bottom: 0px; margin-left: 48px; text-indent: 0px; line-height: 15px;" xmlns="http://www.w3.org/1999/xhtml">
|
|
<span style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-style: italic; font-weight: normal; color: rgb(0, 0, 0);">o</span><span style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);">verwrite the contents of the specified blackboard</span><span style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 255);"> with the messag</span><span style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 255);">e represented by MESSAGE_ADDR and LENGTH</span></p>
|
|
</p>
|
|
</p>
|
|
<p><strong>DISPLAY_BLACKBOARD.04</strong>
|
|
stop the affected time counters
|
|
</p>
|
|
<p><strong>DISPLAY_BLACKBOARD.05</strong>
|
|
</p><p><p style="margin-bottom: 0px; margin-left: 72px; text-indent: 0px; line-height: 15px;" xmlns="http://www.w3.org/1999/xhtml">
|
|
<span style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);">move them from the WAITING to the READY state (except if another process suspended it)</span></p>
|
|
</p>
|
|
</p>
|
|
<p><strong>DISPLAY_BLACKBOARD.06</strong>
|
|
ask for process scheduling
|
|
</p>
|
|
<p><strong>DISPLAY_BLACKBOARD.07</strong>
|
|
RETURN_CODE := NO_ERROR
|
|
</p>
|
|
<h4><strong>READ_BLACKBOARD</strong>
|
|
The READ_BLACKBOARD service request is used to read a message in the specified blackboard. The calling process will be in waiting state while the blackboard is empty for a time-out maximum duration.
|
|
</h4>
|
|
<p><strong>READ_BLACKBOARD.01</strong>
|
|
RETURN_CODE := INVALID_PARAM
|
|
</p>
|
|
<p><strong>READ_BLACKBOARD.02</strong>
|
|
<p xmlns="http://www.w3.org/1999/xhtml" style="margin-bottom: 0px; margin-left: 57px; text-indent: 0px; line-height: 14px;"><span style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 255);">copy the message displayed in the specified blackboard <br/></span></p>
|
|
<p xmlns="http://www.w3.org/1999/xhtml" style="margin-bottom: 0px; margin-left: 48px; text-indent: 24px; line-height: 15px;">
|
|
<span style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 255);">to the location represented by MESSAGE_ADDR</span><span style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 255);"/></p>
|
|
</p>
|
|
<p><strong>READ_BLACKBOARD.03</strong>
|
|
<span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);">LENGTH := Length of</span><span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 255);"> the copied message</span><span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);"/>
|
|
</p>
|
|
<p><strong>READ_BLACKBOARD.04</strong>
|
|
RETURN_CODE := NO_ERROR
|
|
</p>
|
|
<p><strong>READ_BLACKBOARD.05</strong>
|
|
RETURN_CODE := NOT_AVAILABLE
|
|
</p>
|
|
<p><strong>READ_BLACKBOARD.06</strong>
|
|
RETURN_CODE := INVALID_MODE
|
|
</p>
|
|
<p><strong>READ_BLACKBOARD.07</strong>
|
|
set the process state to WAITING
|
|
</p>
|
|
<p><strong>READ_BLACKBOARD.08</strong>
|
|
ask for process scheduling
|
|
</p>
|
|
<p><strong>READ_BLACKBOARD.09</strong>
|
|
initiate a time counter with duration TIME_OUT
|
|
</p>
|
|
<p><strong>READ_BLACKBOARD.10</strong>
|
|
RETURN_CODE := TIMED_OUT
|
|
</p>
|
|
<h4><strong>CLEAR_BLACKBOARD</strong>
|
|
The CLEAR_BLACKBOARD service request is used to clear the message of the specified blackboard. The specified blackboard becomes empty.
|
|
</h4>
|
|
<p><strong>CLEAR_BLACKBOARD.01</strong>
|
|
RETURN_CODE := INVALID_PARAM
|
|
</p>
|
|
<p><strong>CLEAR_BLACKBOARD.02</strong>
|
|
Set the empty indicator of the specified blackboard to EMPTY
|
|
</p>
|
|
<p><strong>CLEAR_BLACKBOARD.03</strong>
|
|
RETURN_CODE := NO_ERROR
|
|
</p>
|
|
<h4><strong>GET_BLACKBOARD_ID</strong>
|
|
The GET_BLACKBOARD_ID service request allows the current process to get the identifier of a blackboard giving its name.
|
|
</h4>
|
|
<p><strong>GET_BLACKBOARD_ID.01</strong>
|
|
RETURN_CODE := INVALID_CONFIG
|
|
</p>
|
|
<p><strong>GET_BLACKBOARD_ID.02</strong>
|
|
BLACKBOARD_ID := (ID of the blackboard named BLACKBOARD_NAME)
|
|
</p>
|
|
<p><strong>GET_BLACKBOARD_ID.03</strong>
|
|
RETURN_CODE := NO_ERROR
|
|
</p>
|
|
<h4><strong>GET_BLACKBOARD_STATUS</strong>
|
|
The GET_BLACKBOARD_STATUS service request returns the status of the specified blackboard.
|
|
</h4>
|
|
<p><strong>GET_BLACKBOARD_STATUS.01</strong>
|
|
RETURN_CODE := INVALID_PARAM
|
|
</p>
|
|
<h5><strong>GET_BLACKBOARD_STATUS.02</strong>
|
|
<p xmlns="http://www.w3.org/1999/xhtml" style="margin-bottom: 0px; margin-left: 24px; text-indent: -23px; line-height: 15px;"><span style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);">BLACKBOARD_STATUS := <br/></span></p>
|
|
<p xmlns="http://www.w3.org/1999/xhtml" style="margin-bottom: 0px; margin-left: 8px; text-indent: -7px; line-height: 15px;">
|
|
<span style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);">(EMPTY_INDICATOR => the value of the blackboard empty indicator</span><span style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);">, </span><span style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);">MAX_MESSAGE_SIZE => maximum size of messages</span><span style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-style: italic; font-weight: normal; color: rgb(0, 0, 0);">, </span><span style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);">WAITING_PROCESSES => the number of waiting processes)</span><span style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);"/></p>
|
|
</h5>
|
|
<p><strong>GET_BLACKBOARD_STATUS.02.01</strong>
|
|
<span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);"><span class="requality_text id_58e69068-d430-47ca-a3aa-6dd28980fc9f requality_text_active">EMPTY_INDICATOR => the value of the blackboard empty indicator</span></span><span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);"><span class="requality_text id_58e69068-d430-47ca-a3aa-6dd28980fc9f requality_text_active"/></span>
|
|
</p>
|
|
<p><strong>GET_BLACKBOARD_STATUS.02.02</strong>
|
|
<span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);"><span class="requality_text id_58e69068-d430-47ca-a3aa-6dd28980fc9f requality_text_active">MAX_MESSAGE_SIZE => maximum size of messages</span></span><span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-style: italic; font-weight: normal; color: rgb(0, 0, 0);"><span class="requality_text id_58e69068-d430-47ca-a3aa-6dd28980fc9f requality_text_active"/></span>
|
|
</p>
|
|
<p><strong>GET_BLACKBOARD_STATUS.02.03</strong>
|
|
WAITING_PROCESSES => the number of waiting processes
|
|
</p>
|
|
<p><strong>GET_BLACKBOARD_STATUS.03</strong>
|
|
RETURN_CODE := NO_ERROR
|
|
</p>
|
|
<h3><strong>Semaphore Services</strong>
|
|
A counting semaphore is a synchronization object commonly used to provide access to partition resources. A semaphore must be created during the initialization mode before it can be used. A name is given at semaphore creation, this name is local to the partition and is not an attribute of the partition configuration table.
|
|
</h3>
|
|
<h4><strong>CREATE_SEMAPHORE</strong>
|
|
The CREATE_SEMAPHORE service request is used to create a semaphore of a specified current and maximum value. The maximum value parameter is the maximum value that the semaphore can be signaled to. The current value is the semaphores’ starting value after creation. For example, if the semaphore was used to manage access to five resources, and at the time of creation three resources were available, the semaphore would be created with a maximum value of five and a current value of three. The QUEUING_DISCIPLINE input parameter indicates the process queuing policy (FIFO or priority order) associated with that semaphore.
|
|
</h4>
|
|
<p><strong>CREATE_SEMAPHORE.01</strong>
|
|
<span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);">RETURN_CODE := INVALID_CONFIG</span><span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);"/>
|
|
</p>
|
|
<p><strong>CREATE_SEMAPHORE.02</strong>
|
|
<span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);">RETURN_CODE := NO_ACTION</span><span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);"/>
|
|
</p>
|
|
<p><strong>CREATE_SEMAPHORE.03</strong>
|
|
<span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);">RETURN_CODE := INVALID_PARAM</span><span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);"/>
|
|
</p>
|
|
<p><strong>CREATE_SEMAPHORE.04</strong>
|
|
<span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);">RETURN_CODE := INVALID_MODE</span><span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);"/>
|
|
</p>
|
|
<p><strong>CREATE_SEMAPHORE.05</strong>
|
|
SEMAPHORE_ID := (ID of unallocated semaphore control block)
|
|
</p>
|
|
<p><strong>CREATE_SEMAPHORE.06</strong>
|
|
Set the process semaphore queuing discipline to QUEUING_DISCIPLINE
|
|
</p>
|
|
<p><strong>CREATE_SEMAPHORE.07</strong>
|
|
RETURN_CODE := NO_ERROR
|
|
</p>
|
|
<p><strong>CREATE_SEMAPHORE.08</strong>
|
|
Initialize semaphore with MAXIMUM_VALUE and CURRENT_VALUE
|
|
</p>
|
|
<h4><strong>WAIT_SEMAPHORE</strong>
|
|
The WAIT_SEMAPHORE service request moves the current process from the running state to the waiting state if the current value of the specified semaphore is zero and if the specified time-out is not zero. The process goes on executing if the current value of the specified semaphore is positive and the semaphore current value is decremented.
|
|
</h4>
|
|
<p><strong>WAIT_SEMAPHORE.01</strong>
|
|
RETURN_CODE := INVALID_PARAM
|
|
</p>
|
|
<p><strong>WAIT_SEMAPHORE.02</strong>
|
|
RETURN_CODE := NOT_AVAILABLE
|
|
</p>
|
|
<p><strong>WAIT_SEMAPHORE.03</strong>
|
|
RETURN_CODE := INVALID_MODE
|
|
</p>
|
|
<p><strong>WAIT_SEMAPHORE.04</strong>
|
|
set the current process state to WAITING
|
|
</p>
|
|
<p><strong>WAIT_SEMAPHORE.05</strong>
|
|
<p xmlns="http://www.w3.org/1999/xhtml" style="margin-bottom: 0px; margin-left: 24px; text-indent: -23px; line-height: 15px;"><span style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);">insert this process in the semaphore process queue at the position <br/></span></p>
|
|
<p xmlns="http://www.w3.org/1999/xhtml" style="margin-bottom: 0px; margin-left: 0px; text-indent: 24px; line-height: 15px;">
|
|
<span style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);">specified by the queuing discipline</span></p>
|
|
</p>
|
|
<p><strong>WAIT_SEMAPHORE.06</strong>
|
|
ask for process scheduling
|
|
</p>
|
|
<p><strong>WAIT_SEMAPHORE.07</strong>
|
|
RETURN_CODE := NO_ERROR
|
|
</p>
|
|
<p><strong>WAIT_SEMAPHORE.08</strong>
|
|
initiate a time counter with duration TIME_OUT
|
|
</p>
|
|
<p><strong>WAIT_SEMAPHORE.09</strong>
|
|
RETURN_CODE := TIMED_OUT
|
|
</p>
|
|
<h4><strong>SIGNAL_SEMAPHORE</strong>
|
|
The SIGNAL_SEMAPHORE service request increments the current value of the specified semaphore. If processes are waiting on that semaphore the first process of the queue is moved from the waiting state to the ready state. A scheduling takes place.
|
|
</h4>
|
|
<p><strong>SIGNAL_SEMAPHORE.01</strong>
|
|
RETURN_CODE := INVALID_PARAM
|
|
</p>
|
|
<p><strong>SIGNAL_SEMAPHORE.02</strong>
|
|
RETURN_CODE := NO_ACTION
|
|
</p>
|
|
<p><strong>SIGNAL_SEMAPHORE.03</strong>
|
|
increment the current value of the specified semaphore
|
|
</p>
|
|
<p><strong>SIGNAL_SEMAPHORE.04</strong>
|
|
RETURN_CODE := NO_ERROR
|
|
</p>
|
|
<p><strong>SIGNAL_SEMAPHORE.05</strong>
|
|
remove the first process from the semaphore queue
|
|
</p>
|
|
<p><strong>SIGNAL_SEMAPHORE.06</strong>
|
|
Stop the affected time counter
|
|
</p>
|
|
<p><strong>SIGNAL_SEMAPHORE.07</strong>
|
|
<p xmlns="http://www.w3.org/1999/xhtml" style="margin-bottom: 0px; margin-right: 39px; margin-left: 48px; text-indent: 24px; line-height: 15px;"><span style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);">move it from the WAITING to the READY state (except if another process <br/></span></p>
|
|
<p xmlns="http://www.w3.org/1999/xhtml" style="margin-bottom: 0px; margin-left: 72px; text-indent: 0px; line-height: 15px;">
|
|
<span style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);">suspended it)</span></p>
|
|
</p>
|
|
<p><strong>SIGNAL_SEMAPHORE.08</strong>
|
|
ask for process scheduling
|
|
</p>
|
|
<h4><strong>GET_SEMAPHORE_ID</strong>
|
|
The GET_SEMAPHORE_ID service request allows the current process to get the identifier of a semaphore giving its name.
|
|
</h4>
|
|
<p><strong>GET_SEMAPHORE_ID.01</strong>
|
|
RETURN_CODE := INVALID_CONFIG
|
|
</p>
|
|
<p><strong>GET_SEMAPHORE_ID.02</strong>
|
|
SEMAPHORE_ID := (ID of the semaphore named SEMAPHORE_NAME)
|
|
</p>
|
|
<p><strong>GET_SEMAPHORE_ID.03</strong>
|
|
RETURN_CODE := NO_ERROR
|
|
</p>
|
|
<h4><strong>GET_SEMAPHORE_STATUS</strong>
|
|
The GET_SEMAPHORE_STATUS service request returns the status of the specified semaphore.
|
|
</h4>
|
|
<p><strong>GET_SEMAPHORE_STATUS.01</strong>
|
|
RETURN_CODE := INVALID_PARAM
|
|
</p>
|
|
<h5><strong>GET_SEMAPHORE_STATUS.02</strong>
|
|
<p xmlns="http://www.w3.org/1999/xhtml" style="margin-bottom: 0px; margin-left: 24px; text-indent: -23px; line-height: 15px;"><span style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);">SEMAPHORE_STATUS := <br/></span></p>
|
|
<p xmlns="http://www.w3.org/1999/xhtml" style="margin-bottom: 0px; margin-left: 8px; text-indent: -7px; line-height: 15px;">
|
|
<span style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);">(CURRENT_VALUE => Current value of the specified semaphore</span><span style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);">, </span><span style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);">MAXIMUM_VALUE => Maximum value of the specified semaphore</span><span style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);">, </span><span style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);">WAITING_PROCESSES => the number of waiting processes)</span><span style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);"/></p>
|
|
</h5>
|
|
<p><strong>GET_SEMAPHORE_STATUS.02.01</strong>
|
|
CURRENT_VALUE => Current value of the specified semaphore
|
|
</p>
|
|
<p><strong>GET_SEMAPHORE_STATUS.02.02</strong>
|
|
<span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);"><span class="requality_text id_976474d2-44d7-4f75-a62f-edc026ddbb9d requality_text_active">MAXIMUM_VALUE => Maximum value of the specified semaphore</span></span><span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);"><span class="requality_text id_976474d2-44d7-4f75-a62f-edc026ddbb9d requality_text_active"/></span>
|
|
</p>
|
|
<p><strong>GET_SEMAPHORE_STATUS.02.03</strong>
|
|
WAITING_PROCESSES => the number of waiting processes
|
|
</p>
|
|
<p><strong>GET_SEMAPHORE_STATUS.03</strong>
|
|
RETURN_CODE := NO_ERROR
|
|
</p>
|
|
<h3><strong>Event Services</strong>
|
|
An event is a synchronization object used to notify the occurrence of a condition to processes which may wait for it. An event must be created during the initialization mode before it can be used. A name is given at event creation, this name is local to the partition and is not an attribute of the partition configuration table.
|
|
</h3>
|
|
<h4><strong>CREATE_EVENT</strong>
|
|
</h4>
|
|
<p><strong>CREATE_EVENT.01</strong>
|
|
RETURN_CODE := INVALID_CONFIG
|
|
</p>
|
|
<p><strong>CREATE_EVENT.02</strong>
|
|
RETURN_CODE := NO_ACTION
|
|
</p>
|
|
<p><strong>CREATE_EVENT.03</strong>
|
|
RETURN_CODE := INVALID_MODE
|
|
</p>
|
|
<p><strong>CREATE_EVENT.04</strong>
|
|
EVENT_ID := (ID of unallocated event)
|
|
</p>
|
|
<p><strong>CREATE_EVENT.05</strong>
|
|
Set the event state to DOWN
|
|
</p>
|
|
<p><strong>CREATE_EVENT.06</strong>
|
|
RETURN_CODE := NO_ERROR
|
|
</p>
|
|
<h4><strong>SET_EVENT</strong>
|
|
</h4>
|
|
<p><strong>SET_EVENT.01</strong>
|
|
RETURN_CODE := INVALID_PARAM
|
|
</p>
|
|
<p><strong>SET_EVENT.02</strong>
|
|
set the specified event in UP state
|
|
</p>
|
|
<p><strong>SET_EVENT.03</strong>
|
|
stop the affected time counters
|
|
</p>
|
|
<p><strong>SET_EVENT.04</strong>
|
|
<p xmlns="http://www.w3.org/1999/xhtml" style="margin-bottom: 0px; margin-left: 0px; text-indent: 24px; line-height: 15px;"><span style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);">move each of these processes from the WAITING state to READY state (except <br/></span></p>
|
|
<p xmlns="http://www.w3.org/1999/xhtml" style="margin-bottom: 0px; margin-left: 0px; text-indent: 0px; line-height: 15px;">
|
|
<span style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);">if another process suspended it)</span></p>
|
|
</p>
|
|
<p><strong>SET_EVENT.05</strong>
|
|
ask for process scheduling
|
|
</p>
|
|
<p><strong>SET_EVENT.06</strong>
|
|
RETURN_CODE := NO_ERROR
|
|
</p>
|
|
<h4><strong>RESET_EVENT</strong>
|
|
</h4>
|
|
<p><strong>RESET_EVENT.01</strong>
|
|
RETURN_CODE := INVALID_PARAM
|
|
</p>
|
|
<p><strong>RESET_EVENT.02</strong>
|
|
Sets the specified event in DOWN state
|
|
</p>
|
|
<p><strong>RESET_EVENT.03</strong>
|
|
RETURN_CODE := NO_ERROR
|
|
</p>
|
|
<h4><strong>WAIT_EVENT</strong>
|
|
</h4>
|
|
<p><strong>WAIT_EVENT.01</strong>
|
|
RETURN_CODE := INVALID_PARAM
|
|
</p>
|
|
<p><strong>WAIT_EVENT.02</strong>
|
|
RETURN_CODE := NO_ERROR
|
|
</p>
|
|
<p><strong>WAIT_EVENT.03</strong>
|
|
RETURN_CODE := NOT_AVAILABLE
|
|
</p>
|
|
<p><strong>WAIT_EVENT.04</strong>
|
|
RETURN_CODE := INVALID_MODE
|
|
</p>
|
|
<p><strong>WAIT_EVENT.05</strong>
|
|
set the current process state to WAITING
|
|
</p>
|
|
<p><strong>WAIT_EVENT.06</strong>
|
|
ask for process scheduling
|
|
</p>
|
|
<p><strong>WAIT_EVENT.07</strong>
|
|
initiate a time counter with duration TIME_OUT
|
|
</p>
|
|
<p><strong>WAIT_EVENT.08</strong>
|
|
RETURN_CODE := TIMED_OUT
|
|
</p>
|
|
<h4><strong>GET_EVENT_ID</strong>
|
|
</h4>
|
|
<p><strong>GET_EVENT_ID.01</strong>
|
|
RETURN_CODE := INVALID_CONFIG
|
|
</p>
|
|
<p><strong>GET_EVENT_ID.02</strong>
|
|
EVENT_ID := (ID of the event named NAME)
|
|
</p>
|
|
<p><strong>GET_EVENT_ID.03</strong>
|
|
RETURN_CODE := NO_ERROR
|
|
</p>
|
|
<h4><strong>GET_EVENT_STATUS</strong>
|
|
</h4>
|
|
<p><strong>GET_EVENT_STATUS.01</strong>
|
|
RETURN_CODE := INVALID_PARAM
|
|
</p>
|
|
<h5><strong>GET_EVENT_STATUS.02</strong>
|
|
EVENT_STATUS := <br xmlns="http://www.w3.org/1999/xhtml"/>(EVENT_STATE => state of the specified event, <br xmlns="http://www.w3.org/1999/xhtml"/>WAITING_PROCESSES => the number of waiting processes)
|
|
</h5>
|
|
<p><strong>GET_EVENT_STATUS.02.01</strong>
|
|
EVENT_STATE => state of the specified event
|
|
</p>
|
|
<p><strong>GET_EVENT_STATUS.02.02</strong>
|
|
WAITING_PROCESSES => the number of waiting processes
|
|
</p>
|
|
<p><strong>GET_EVENT_STATUS.03</strong>
|
|
RETURN_CODE := NO_ERROR
|
|
</p>
|
|
<h3><strong>Partition Management Services</strong>
|
|
</h3>
|
|
<h4><strong>GET_PARTITION_STATUS</strong>
|
|
The GET_PARTITION_STATUS service request is used to obtain the status of the current partition.
|
|
</h4>
|
|
<p><strong>GET_PARTITION_STATUS.01</strong>
|
|
PARTITION_STATUS := current value of partition status
|
|
</p>
|
|
<p><strong>GET_PARTITION_STATUS.02</strong>
|
|
RETURN_CODE := NO_ERROR
|
|
</p>
|
|
<h4><strong>SET_PARTITION_MODE</strong>
|
|
The SET_PARTITION_MODE service request is used to set the operating mode of the current partition to normal after the application portion of the initialization of the partition is complete. The service is also expected to be used for setting the partition back to idle (partition shutdown), and to cold start or warm start (partition restart), when a serious fault is detected and processed.
|
|
</h4>
|
|
<p><strong>SET_PARTITION_MODE.01</strong>
|
|
RETURN_CODE := INVALID_PARAM
|
|
</p>
|
|
<p><strong>SET_PARTITION_MODE.02</strong>
|
|
RETURN_CODE := NO_ACTION
|
|
</p>
|
|
<p><strong>SET_PARTITION_MODE.03</strong>
|
|
RETURN_CODE := INVALID_MODE
|
|
</p>
|
|
<p><strong>SET_PARTITION_MODE.04</strong>
|
|
set current partition’s operating_mode := OPERATING_MODE
|
|
</p>
|
|
<p><strong>SET_PARTITION_MODE.05</strong>
|
|
shut down the partition
|
|
</p>
|
|
<p><strong>SET_PARTITION_MODE.06</strong>
|
|
inhibit process scheduling and switch back to initialization mode
|
|
</p>
|
|
<p><strong>SET_PARTITION_MODE.07</strong>
|
|
<span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);">set first release points of all previously started periodic processe</span><span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);">s </span><span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);"> to their next partition period</span>
|
|
</p>
|
|
<p><strong>SET_PARTITION_MODE.08</strong>
|
|
<span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);">set first release points of all previously delay started periodic processe</span><span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);">s</span><span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);"> to their next partition period, including their delay times</span>
|
|
</p>
|
|
<p><strong>SET_PARTITION_MODE.09</strong>
|
|
calculate the DEADLINE_TIME of all non-dormant processes in the partition
|
|
</p>
|
|
<p><strong>SET_PARTITION_MODE.10</strong>
|
|
activate the process scheduling
|
|
</p>
|
|
<p><strong>SET_PARTITION_MODE.11</strong>
|
|
<span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);">RETURN_CODE := NO_ERROR</span><span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);"/>
|
|
</p>
|
|
<h3><strong>Process Management Services</strong>
|
|
The scope of a process management service is restricted to its partition. A process must be created during the initialization phase before it can be used.
|
|
</h3>
|
|
<h4><strong>GET_PROCESS_ID</strong>
|
|
The GET_PROCESS_ID service request allows a process to obtain a process identifier by specifying the process name.
|
|
</h4>
|
|
<p><strong>GET_PROCESS_ID.01</strong>
|
|
RETURN_CODE := INVALID_CONFIG
|
|
</p>
|
|
<p><strong>GET_PROCESS_ID.02</strong>
|
|
PROCESS_ID := (ID of the process named PROCESS_NAME)
|
|
</p>
|
|
<p><strong>GET_PROCESS_ID.03</strong>
|
|
RETURN_CODE := NO_ERROR
|
|
</p>
|
|
<h4><strong>GET_PROCESS_STATUS</strong>
|
|
The GET_PROCESS_STATUS service request returns the current status of the specified process. The current operating status of each of the individual processes of a partition is available to all processes within that partition.
|
|
</h4>
|
|
<p><strong>GET_PROCESS_STATUS.01</strong>
|
|
RETURN_CODE := INVALID_PARAM
|
|
</p>
|
|
<p><strong>GET_PROCESS_STATUS.02</strong>
|
|
RETURN_CODE := NO_ERROR
|
|
</p>
|
|
<p><strong>GET_PROCESS_STATUS.03</strong>
|
|
PROCESS_STATUS := current value of process status
|
|
</p>
|
|
<h4><strong>CREATE_PROCESS</strong>
|
|
The CREATE_PROCESS service request creates a process and returns an identifier that denotes the created process. Partitions can create as many processes as the pre-allocated memory space will support. Consistency among process parameters and partition parameters are checked.
|
|
</h4>
|
|
<p><strong>CREATE_PROCESS.01</strong>
|
|
RETURN_CODE := INVALID_CONFIG
|
|
</p>
|
|
<p><strong>CREATE_PROCESS.02</strong>
|
|
RETURN_CODE := NO_ACTION
|
|
</p>
|
|
<p><strong>CREATE_PROCESS.03</strong>
|
|
RETURN_CODE := INVALID_PARAM
|
|
</p>
|
|
<p><strong>CREATE_PROCESS.04</strong>
|
|
RETURN_CODE := INVALID_MODE
|
|
</p>
|
|
<p><strong>CREATE_PROCESS.05</strong>
|
|
set the process attributes to ATTRIBUTES
|
|
</p>
|
|
<p><strong>CREATE_PROCESS.06</strong>
|
|
set the process state to DORMANT
|
|
</p>
|
|
<p><strong>CREATE_PROCESS.07</strong>
|
|
reset context and stack
|
|
</p>
|
|
<p><strong>CREATE_PROCESS.08</strong>
|
|
PROCESS_ID := identifier of the created process
|
|
</p>
|
|
<p><strong>CREATE_PROCESS.09</strong>
|
|
RETURN_CODE := NO_ERROR
|
|
</p>
|
|
<h4><strong>SET_PRIORITY</strong>
|
|
The SET_PRIORITY service request changes a process’s current priority. The process is placed as the newest process with that priority in the ready state. Process rescheduling is performed after this service request only when the process whose priority is changed is in the ready or running state.
|
|
</h4>
|
|
<p><strong>SET_PRIORITY.01</strong>
|
|
RETURN_CODE := INVALID_PARAM
|
|
</p>
|
|
<p><strong>SET_PRIORITY.02</strong>
|
|
RETURN_CODE := INVALID_MODE
|
|
</p>
|
|
<p><strong>SET_PRIORITY.03</strong>
|
|
set the current priority of the specified process to PRIORITY
|
|
</p>
|
|
<p><strong>SET_PRIORITY.04</strong>
|
|
ask for process scheduling
|
|
</p>
|
|
<p><strong>SET_PRIORITY.05</strong>
|
|
RETURN_CODE := NO_ERROR
|
|
</p>
|
|
<h4><strong>SUSPEND_SELF</strong>
|
|
The SUSPEND_SELF service request suspends the execution of the current process if aperiodic, until the RESUME service request is issued or the specified time-out value expires.
|
|
</h4>
|
|
<p><strong>SUSPEND_SELF.01</strong>
|
|
<span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);">RETURN_CODE := INVALID_MODE</span><span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);"/>
|
|
</p>
|
|
<p><strong>SUSPEND_SELF.02</strong>
|
|
<span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);">RETURN_CODE := INVALID_PARAM</span><span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);"/>
|
|
</p>
|
|
<p><strong>SUSPEND_SELF.03</strong>
|
|
RETURN_CODE := NO_ERROR
|
|
</p>
|
|
<p><strong>SUSPEND_SELF.04</strong>
|
|
set the current process state to WAITING
|
|
</p>
|
|
<p><strong>SUSPEND_SELF.05</strong>
|
|
initiate a time counter with duration TIME_OUT
|
|
</p>
|
|
<p><strong>SUSPEND_SELF.06</strong>
|
|
ask for process scheduling
|
|
</p>
|
|
<p><strong>SUSPEND_SELF.07</strong>
|
|
RETURN_CODE := TIMED_OUT
|
|
</p>
|
|
<h4><strong>SUSPEND</strong>
|
|
The SUSPEND service request allows the current process to suspend the execution of any aperiodic process except itself, until the suspended process is resumed by another process. If the process is pending in a queue at the time it is suspended, it is not removed from that queue. When it is resumed, it will continue pending unless it has been removed from the queue (either by occurrence of a condition or expiration of a time-out or a reset of the queue) before the end of its suspension.
|
|
</h4>
|
|
<p><strong>SUSPEND.01</strong>
|
|
RETURN_CODE := INVALID_MODE
|
|
</p>
|
|
<p><strong>SUSPEND.02</strong>
|
|
RETURN_CODE := INVALID_PARAM
|
|
</p>
|
|
<p><strong>SUSPEND.03</strong>
|
|
RETURN_CODE := NO_ACTION
|
|
</p>
|
|
<p><strong>SUSPEND.04</strong>
|
|
set the specified process state to WAITING
|
|
</p>
|
|
<p><strong>SUSPEND.05</strong>
|
|
RETURN_CODE := NO_ERROR
|
|
</p>
|
|
<h4><strong>RESUME</strong>
|
|
The RESUME service request allows the current process to resume another previously suspended process. The resumed process will become ready if it is not waiting on a resource (delay, semaphore, period, event, message). A periodic process cannot be suspended, so it can not be resumed.
|
|
</h4>
|
|
<p><strong>RESUME.01</strong>
|
|
RETURN_CODE := INVALID_PARAM
|
|
</p>
|
|
<p><strong>RESUME.02</strong>
|
|
RETURN_CODE := INVALID_MODE
|
|
</p>
|
|
<p><strong>RESUME.03</strong>
|
|
RETURN_CODE := NO_ACTION
|
|
</p>
|
|
<p><strong>RESUME.04</strong>
|
|
stop the affected time counter
|
|
</p>
|
|
<p><strong>RESUME.05</strong>
|
|
set the specified process state to READY
|
|
</p>
|
|
<p><strong>RESUME.06</strong>
|
|
ask for process scheduling
|
|
</p>
|
|
<p><strong>RESUME.07</strong>
|
|
RETURN_CODE := NO_ERROR
|
|
</p>
|
|
<h4><strong>STOP_SELF</strong>
|
|
The STOP_SELF service request allows the current process to stop itself. If the current process is not the error handler process, the partition is placed in the unlocked condition. This service should not be called when the partition is in the WARM_START or the COLD_START mode. In this case, the behavior of this service is not defined.
|
|
</h4>
|
|
<p><strong>STOP_SELF.01</strong>
|
|
release all the resources used by the current process
|
|
</p>
|
|
<p><strong>STOP_SELF.02</strong>
|
|
reset the LOCK_LEVEL counter
|
|
</p>
|
|
<p><strong>STOP_SELF.03</strong>
|
|
Set the current process state to DORMANT
|
|
</p>
|
|
<p><strong>STOP_SELF.04</strong>
|
|
return to previous process
|
|
</p>
|
|
<p><strong>STOP_SELF.05</strong>
|
|
ask for process scheduling
|
|
</p>
|
|
<h4><strong>STOP</strong>
|
|
The STOP service request makes a process ineligible for processor resources until another process issues the START service request.
|
|
</h4>
|
|
<p><strong>STOP.01</strong>
|
|
RETURN_CODE := INVALID_PARAM
|
|
</p>
|
|
<p><strong>STOP.02</strong>
|
|
<span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);">RETURN_CODE := NO_ACTION</span><span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);"/>
|
|
</p>
|
|
<p><strong>STOP.03</strong>
|
|
set the specified process state to DORMANT
|
|
</p>
|
|
<p><strong>STOP.04</strong>
|
|
release all the resources used by the specified process
|
|
</p>
|
|
<p><strong>STOP.05</strong>
|
|
reset the LOCK_LEVEL counter
|
|
</p>
|
|
<p><strong>STOP.06</strong>
|
|
remove the process from the pending queue
|
|
</p>
|
|
<p><strong>STOP.07</strong>
|
|
RETURN_CODE := NO_ERROR
|
|
</p>
|
|
<h4><strong>START</strong>
|
|
The START service request initializes all attributes of a process to their default values, resets the runtime stack of the process. If the partition is in the NORMAL mode, the process’ deadline expiration time and next release point are calculated.
|
|
</h4>
|
|
<p><strong>START.01</strong>
|
|
RETURN_CODE := INVALID_PARAM
|
|
</p>
|
|
<p><strong>START.02</strong>
|
|
RETURN_CODE := NO_ACTION
|
|
</p>
|
|
<p><strong>START.03</strong>
|
|
set the current priority of specified process to its base priority
|
|
</p>
|
|
<p><strong>START.04</strong>
|
|
reset context and stack
|
|
</p>
|
|
<p><strong>START.05</strong>
|
|
set the specified process state to READY
|
|
</p>
|
|
<p><strong>START.06</strong>
|
|
set the DEADLINE_TIME value for the specified process to <br xmlns="http://www.w3.org/1999/xhtml"/>(current system clock plus TIME_CAPACITY)
|
|
</p>
|
|
<p><strong>START.07</strong>
|
|
ask for process scheduling
|
|
</p>
|
|
<p><strong>START.08</strong>
|
|
set the specified process state to WAITING
|
|
</p>
|
|
<p><strong>START.09</strong>
|
|
RETURN_CODE := NO_ERROR
|
|
</p>
|
|
<p><strong>START.10</strong>
|
|
set the first release point of the specified process
|
|
</p>
|
|
<p><strong>START.11</strong>
|
|
set the DEADLINE_TIME value for the specified process to <br xmlns="http://www.w3.org/1999/xhtml"/>(first release point plus TIME_CAPACITY)
|
|
</p>
|
|
<h4><strong>DELAYED_START</strong>
|
|
The DELAYED_START service request initializes all attributes of a process to their default values, resets the runtime stack of the process, and places the process into the waiting state, i.e., the specified process goes from dormant to waiting. If the partition is in the normal operating mode, the process’s release point is calculated with the specified delay time and the process’ deadline expiration time is also calculated.
|
|
</h4>
|
|
<p><strong>DELAYED_START.01</strong>
|
|
RETURN_CODE := INVALID_PARAM
|
|
</p>
|
|
<p><strong>DELAYED_START.02</strong>
|
|
RETURN_CODE := NO_ACTION
|
|
</p>
|
|
<p><strong>DELAYED_START.03</strong>
|
|
set the current priority of specified process to its base priority
|
|
</p>
|
|
<p><strong>DELAYED_START.04</strong>
|
|
reset context and stack
|
|
</p>
|
|
<p><strong>DELAYED_START.05</strong>
|
|
set the specified process state to READY
|
|
</p>
|
|
<p><strong>DELAYED_START.06</strong>
|
|
set the DEADLINE_TIME value for the specified process to <br xmlns="http://www.w3.org/1999/xhtml"/>(current system clock plus TIME_CAPACITY)
|
|
</p>
|
|
<p><strong>DELAYED_START.07</strong>
|
|
set the specified process state to WAITING
|
|
</p>
|
|
<p><strong>DELAYED_START.08</strong>
|
|
initiate a time counter with duration DELAY_TIME
|
|
</p>
|
|
<p><strong>DELAYED_START.09</strong>
|
|
ask for process scheduling
|
|
</p>
|
|
<p><strong>DELAYED_START.10</strong>
|
|
<span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);">RETURN_CODE := NO_ERROR</span><span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);"/>
|
|
</p>
|
|
<p><strong>DELAYED_START.11</strong>
|
|
set the first release point of the specified process <br xmlns="http://www.w3.org/1999/xhtml"/>including the delay time
|
|
</p>
|
|
<p><strong>DELAYED_START.12</strong>
|
|
set the DEADLINE_TIME value for the specified process to <br xmlns="http://www.w3.org/1999/xhtml"/>(first release point + TIME_CAPACITY)
|
|
</p>
|
|
<h4><strong>LOCK_PREEMPTION</strong>
|
|
The LOCK_PREEMPTION service request increments the lock level of the partition and disables process rescheduling for a partition.
|
|
</h4>
|
|
<p><strong>LOCK_PREEMPTION.01</strong>
|
|
RETURN_CODE := NO ACTION
|
|
</p>
|
|
<p><strong>LOCK_PREEMPTION.02</strong>
|
|
RETURN_CODE := INVALID_CONFIG
|
|
</p>
|
|
<p><strong>LOCK_PREEMPTION.03</strong>
|
|
LOCK_LEVEL := LOCK_LEVEL + 1
|
|
</p>
|
|
<p><strong>LOCK_PREEMPTION.04</strong>
|
|
RETURN_CODE := NO_ERROR
|
|
</p>
|
|
<h4><strong>UNLOCK_PREEMPTION</strong>
|
|
The UNLOCK_PREEMPTION service request decrements the current lock level of the partition. The process rescheduling function is performed only when the lock level becomes zero.
|
|
</h4>
|
|
<p><strong>UNLOCK_ PREEMPTION.01</strong>
|
|
<span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);">RETURN_CODE := NO_ACTION</span><span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);"/>
|
|
</p>
|
|
<p><strong>UNLOCK_ PREEMPTION.02</strong>
|
|
LOCK_LEVEL := LOCK_LEVEL - 1
|
|
</p>
|
|
<p><strong>UNLOCK_ PREEMPTION.03</strong>
|
|
ask for process scheduling
|
|
</p>
|
|
<p><strong>UNLOCK_ PREEMPTION.04</strong>
|
|
RETURN_CODE := NO_ERROR
|
|
</p>
|
|
<h4><strong>GET_MY_ID</strong>
|
|
The GET_MY_ID service request returns the process identifier of the current process.
|
|
</h4>
|
|
<p><strong>GET_MY_ID.01</strong>
|
|
RETURN_CODE := INVALID_MODE
|
|
</p>
|
|
<p><strong>GET_MY_ID.02</strong>
|
|
PROCESS_ID := ID of the current process
|
|
</p>
|
|
<p><strong>GET_MY_ID.03</strong>
|
|
RETURN_CODE := NO_ERROR
|
|
</p>
|
|
<h3><strong>Time Management Services</strong>
|
|
</h3>
|
|
<h4><strong>TIMED_WAIT</strong>
|
|
The TIMED_WAIT service request suspends execution of the requesting process for a minimum amount of elapsed time. A delay time of zero allows round-robin scheduling of processes of the same priority.
|
|
</h4>
|
|
<p><strong>TIMED_WAIT.01</strong>
|
|
RETURN_CODE := INVALID_MODE
|
|
</p>
|
|
<p><strong>TIMED_WAIT.02</strong>
|
|
RETURN_CODE := INVALID_PARAM
|
|
</p>
|
|
<p><strong>TIMED_WAIT.03</strong>
|
|
Set the current process state to READY
|
|
</p>
|
|
<p><strong>TIMED_WAIT.04</strong>
|
|
Ask for process scheduling
|
|
</p>
|
|
<p><strong>TIMED_WAIT.05</strong>
|
|
Set the current process state to WAITING
|
|
</p>
|
|
<p><strong>TIMED_WAIT.06</strong>
|
|
Initiate a time counter with duration DELAY_TIME
|
|
</p>
|
|
<p><strong>TIMED_WAIT.07</strong>
|
|
RETURN_CODE := NO_ERROR
|
|
</p>
|
|
<h4><strong>PERIODIC_WAIT</strong>
|
|
The PERIODIC_WAIT service request suspends execution of the requesting process until the next release point in the processor time line that corresponds to the period of the process.
|
|
</h4>
|
|
<p><strong>PERIODIC_WAIT.01</strong>
|
|
RETURN_CODE := INVALID_MODE
|
|
</p>
|
|
<p><strong>PERIODIC_WAIT.02</strong>
|
|
Set the requesting process state to WAITING
|
|
</p>
|
|
<p><strong>PERIODIC_WAIT.03</strong>
|
|
Next release point := process period plus previous release point
|
|
</p>
|
|
<p><strong>PERIODIC_WAIT.04</strong>
|
|
DEADLINE_TIME := time of next release point + TIME_CAPACITY
|
|
</p>
|
|
<p><strong>PERIODIC_WAIT.05</strong>
|
|
Ask for process scheduling
|
|
</p>
|
|
<p><strong>PERIODIC_WAIT.06</strong>
|
|
RETURN_CODE := NO_ERROR
|
|
</p>
|
|
<h4><strong>GET_TIME</strong>
|
|
The service GET_TIME requests the value of the system clock. The system clock is the value of a clock common to all processors in the module.
|
|
</h4>
|
|
<p><strong>GET_TIME.01</strong>
|
|
SYSTEM_TIME := current system clock
|
|
</p>
|
|
<p><strong>GET_TIME.02</strong>
|
|
RETURN_CODE := NO_ERROR
|
|
</p>
|
|
<h4><strong>REPLENISH</strong>
|
|
The REPLENISH service request updates the deadline of the requesting process with a specified BUDGET_TIME value. It is not allowed to postpone a periodic process’ deadline past its next release point.
|
|
</h4>
|
|
<p><strong>REPLENISH.01</strong>
|
|
RETURN_CODE := NO_ACTION
|
|
</p>
|
|
<p><strong>REPLENISH.02</strong>
|
|
RETURN_CODE := INVALID_MODE
|
|
</p>
|
|
<p><strong>REPLENISH.03</strong>
|
|
RETURN_CODE := INVALID_PARAM
|
|
</p>
|
|
<p><strong>REPLENISH.04</strong>
|
|
Set a new DEADLINE_TIME value for the current process <br xmlns="http://www.w3.org/1999/xhtml"/>(current system clock + BUDGET_TIME)
|
|
</p>
|
|
<p><strong>REPLENISH.05</strong>
|
|
RETURN_CODE := NO_ERROR
|
|
</p>
|
|
<h3><strong>Sampling Port Services</strong>
|
|
A sampling port is a communication object allowing a partition to access a channel of communication configured to operate in sampling mode. Each new occurrence of a message overwrites the previous one. Messages may have a variable length. A refresh period attribute applies to reception ports. A validity output parameter indicates whether the age of the read message is consistent with the required refresh period attribute of the port. The REFRESH_PERIOD attribute indicates the maximum acceptable age of a valid message, from the time it was received in the port. A port must be created during the initialization phase before it can be used.
|
|
</h3>
|
|
<h4><strong>CREATE_SAMPLING_PORT</strong>
|
|
The CREATE_SAMPLING_PORT service request is used to create a sampling port. An identifier is assigned by the O/S and returned to the calling process. For a source port, the refresh period is meaningless. At creation, the port is empty.
|
|
</h4>
|
|
<p><strong>CREATE_SAMPLING_PORT.01</strong>
|
|
RETURN_CODE := INVALID_CONFIG
|
|
</p>
|
|
<p><strong>CREATE_SAMPLING_PORT.02</strong>
|
|
<span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);">RETURN_CODE := NO_ACTION</span><span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);"/>
|
|
</p>
|
|
<p><strong>CREATE_SAMPLING_PORT.03</strong>
|
|
<span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);">RETURN_CODE := INVALID_MODE</span><span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);"/>
|
|
</p>
|
|
<p><strong>CREATE_SAMPLING_PORT.04</strong>
|
|
SAMPLING_PORT_ID := identifier assigned by O/S to sampling port named <br xmlns="http://www.w3.org/1999/xhtml"/>SAMPLING_PORT_NAME
|
|
</p>
|
|
<p><strong>CREATE_SAMPLING_PORT.05</strong>
|
|
RETURN_CODE := NO_ERROR
|
|
</p>
|
|
<h4><strong>WRITE_SAMPLING_MESSAGE</strong>
|
|
The WRITE_SAMPLING_MESSAGE service request is used to write a message in the specified sampling port. The message overwrites the previous one.
|
|
</h4>
|
|
<p><strong>WRITE_SAMPLING_MESSAGE.01</strong>
|
|
<span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);">RETURN_CODE := INVALID_PARAM</span><span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);"/>
|
|
</p>
|
|
<p><strong>WRITE_SAMPLING_MESSAGE.02</strong>
|
|
RETURN_CODE := INVALID_CONFIG
|
|
</p>
|
|
<p><strong>WRITE_SAMPLING_MESSAGE.03</strong>
|
|
write the message represented by MESSAGE ADDR and LENGTH into the specified port
|
|
</p>
|
|
<p><strong>WRITE_SAMPLING_MESSAGE.04</strong>
|
|
RETURN_CODE := NO_ERROR
|
|
</p>
|
|
<h4><strong>READ_SAMPLING_MESSAGE</strong>
|
|
The READ_SAMPLING_MESSAGE service request is used to read a message in the specified sampling port. A validity output parameter indicates whether the age of the read message is consistent with the required refresh rate attribute of the port.
|
|
</h4>
|
|
<p><strong>READ_SAMPLING_MESSAGE.01</strong>
|
|
RETURN_CODE := INVALID_PARAM
|
|
</p>
|
|
<p><strong>READ_SAMPLING_MESSAGE.02</strong>
|
|
RETURN_CODE := INVALID_MODE
|
|
</p>
|
|
<p><strong>READ_SAMPLING_MESSAGE.03</strong>
|
|
VALIDITY := INVALID
|
|
</p>
|
|
<p><strong>READ_SAMPLING_MESSAGE.04</strong>
|
|
RETURN_CODE := NO_ACTION
|
|
</p>
|
|
<p><strong>READ_SAMPLING_MESSAGE.05</strong>
|
|
copy last correct message arrived in the specified port to the location <br xmlns="http://www.w3.org/1999/xhtml"/>represented by MESSAGE_ADDR
|
|
</p>
|
|
<p><strong>READ_SAMPLING_MESSAGE.06</strong>
|
|
LENGTH := length of the copied message
|
|
</p>
|
|
<p><strong>READ_SAMPLING_MESSAGE.07</strong>
|
|
VALIDITY := VALID
|
|
</p>
|
|
<p><strong>READ_SAMPLING_MESSAGE.08</strong>
|
|
RETURN_CODE := NO_ERROR
|
|
</p>
|
|
<p><strong>READ_SAMPLING_MESSAGE.09</strong>
|
|
update validity in status of the port
|
|
</p>
|
|
<h4><strong>GET_SAMPLING_PORT_ID</strong>
|
|
The GET_SAMPLING_PORT_ID service allows a process to obtain a sampling port identifier by specifying the sampling port name.
|
|
</h4>
|
|
<p><strong>GET_SAMPLING_PORT_ID.01</strong>
|
|
RETURN_CODE := INVALID_CONFIG
|
|
</p>
|
|
<p><strong>GET_SAMPLING_PORT_ID.02</strong>
|
|
SAMPLING_PORT_ID := (ID of the sampling port named SAMPLING_PORT_NAME)
|
|
</p>
|
|
<p><strong>GET_SAMPLING_PORT_ID.03</strong>
|
|
RETURN_CODE := NO_ERROR
|
|
</p>
|
|
<h4><strong>GET_SAMPLING_PORT_STATUS</strong>
|
|
The GET_SAMPLING_PORT_STATUS service returns the current status of the specified sampling port.
|
|
</h4>
|
|
<p><strong>GET_SAMPLING_PORT_STATUS.01</strong>
|
|
RETURN_CODE := INVALID_PARAM
|
|
</p>
|
|
<p><strong>GET_SAMPLING_PORT_STATUS.02</strong>
|
|
SAMPLING_PORT_STATUS := current value of port status
|
|
</p>
|
|
<p><strong>GET_SAMPLING_PORT_STATUS.03</strong>
|
|
RETURN_CODE := NO_ERROR
|
|
</p>
|
|
<h3><strong>Queuing Port Services</strong>
|
|
A queuing port is a communication object allowing a partition to access a channel of communication configured to operate in queuing mode. Messages are stored in FIFO order. Messages have variable length. In queuing mode, each new instance of a message cannot overwrite the previous one stored in the send or receive FIFO. However, if the receiving FIFO is full, new messages may be discarded, an appropriate value of return_code is set in accordance.
|
|
</h3>
|
|
<h4><strong>CREATE_QUEUING_PORT</strong>
|
|
The CREATE_QUEUING_PORT service is used to create a port of communication operating in queuing mode. An identifier is assigned by the O/S and returned to the calling process. At creation, the port is empty. The QUEUING_DISCIPLINE attribute indicates whether blocked processes are queued in FIFO, or in priority order.
|
|
</h4>
|
|
<p><strong>CREATE_QUEUING_PORT.01</strong>
|
|
RETURN_CODE := INVALID_CONFIG
|
|
</p>
|
|
<p><strong>CREATE_QUEUING_PORT.02</strong>
|
|
<span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);">RETURN_CODE := NO_ACTION</span><span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);"/>
|
|
</p>
|
|
<p><strong>CREATE_QUEUING_PORT.03</strong>
|
|
RETURN_CODE := INVALID_MODE
|
|
</p>
|
|
<p><strong>CREATE_QUEUING_PORT.04</strong>
|
|
QUEUING_PORT_ID := identifier assigned by the O/S to the port named <br xmlns="http://www.w3.org/1999/xhtml"/>QUEUING_PORT_NAME
|
|
</p>
|
|
<p><strong>CREATE_QUEUING_PORT.05</strong>
|
|
RETURN_CODE := NO_ERROR
|
|
</p>
|
|
<h4><strong>SEND_QUEUING_MESSAGE</strong>
|
|
The SEND_QUEUING_MESSAGE service request is used to send a message in the specified queuing port. If there is sufficient space in the queuing port to accept the message, the message is added to the end of the port’s message queue. If there is insufficient space, the process is blocked and added to the sending process queue, according to the queuing discipline of the port. The process stays on the queue until the specified time-out, if finite, expires or space becomes free in the port to accept the message.
|
|
</h4>
|
|
<p><strong>SEND_QUEUING_MESSAGE.01</strong>
|
|
<span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);">RETURN_CODE := INVALID_PARAM</span><span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);"/>
|
|
</p>
|
|
<p><strong>SEND_QUEUING_MESSAGE.02</strong>
|
|
RETURN_CODE := INVALID_CONFIG
|
|
</p>
|
|
<p><strong>SEND_QUEUING_MESSAGE.03</strong>
|
|
RETURN_CODE := INVALID_MODE
|
|
</p>
|
|
<p><strong>SEND_QUEUING_MESSAGE.04</strong>
|
|
<span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);">insert the </span><span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 255);">message represented by MESSAGE_ADDR and LENGTH </span><span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);">in the FIF</span><span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);">O </span><span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);">message queue of the specified port</span>
|
|
</p>
|
|
<p><strong>SEND_QUEUING_MESSAGE.05</strong>
|
|
RETURN_CODE := NO_ERROR
|
|
</p>
|
|
<p><strong>SEND_QUEUING_MESSAGE.06</strong>
|
|
RETURN_CODE := NOT_AVAILABLE
|
|
</p>
|
|
<p><strong>SEND_QUEUING_MESSAGE.07</strong>
|
|
initiate a time counter with duration TIME_OUT
|
|
</p>
|
|
<p><strong>SEND_QUEUING_MESSAGE.08</strong>
|
|
set the current process state to WAITING
|
|
</p>
|
|
<p><strong>SEND_QUEUING_MESSAGE.09</strong>
|
|
insert the process in the sending process queue according to the queuing <br xmlns="http://www.w3.org/1999/xhtml"/>discipline of the specified port
|
|
</p>
|
|
<p><strong>SEND_QUEUING_MESSAGE.10</strong>
|
|
ask for process scheduling
|
|
</p>
|
|
<p><strong>SEND_QUEUING_MESSAGE.11</strong>
|
|
RETURN_CODE := TIMED_OUT
|
|
</p>
|
|
<p><strong>SEND_QUEUING_MESSAGE.12</strong>
|
|
stop the time counter
|
|
</p>
|
|
<h4><strong>RECEIVE_QUEUING_MESSAGE</strong>
|
|
The RECEIVE_QUEUING_MESSAGE service request is used to receive a message from the specified queuing port. If the queuing port is not empty, the message at the head of the port’s message queue is removed and returned to the calling process. If the queuing port is empty, the process is blocked and added to the receiving process queue, according to the queuing discipline of the port. The process stays on the queue until the specified time-out, if finite, expires or a message arrives in the port.
|
|
</h4>
|
|
<p><strong>RECEIVE_QUEUING_MESSAGE.01</strong>
|
|
RETURN_CODE := INVALID_PARAM
|
|
</p>
|
|
<p><strong>RECEIVE_QUEUING_MESSAGE.02</strong>
|
|
RETURN_CODE := INVALID_MODE
|
|
</p>
|
|
<p><strong>RECEIVE_QUEUING_MESSAGE.03</strong>
|
|
copy the first message of the port’s message queue to the <br xmlns="http://www.w3.org/1999/xhtml"/>Location represented by MESSAGE_ADDR
|
|
</p>
|
|
<p><strong>RECEIVE_QUEUING_MESSAGE.04</strong>
|
|
<span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);">remove that message from the port’s message queue</span><span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);"/>
|
|
</p>
|
|
<p><strong>RECEIVE_QUEUING_MESSAGE.05</strong>
|
|
<span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);">LENGTH := length of</span><span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 255);"> the copied message</span><span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);"/>
|
|
</p>
|
|
<p><strong>RECEIVE_QUEUING_MESSAGE.06</strong>
|
|
RETURN_CODE := INVALID_CONFIG
|
|
</p>
|
|
<p><strong>RECEIVE_QUEUING_MESSAGE.07</strong>
|
|
RETURN_CODE := NO_ERROR
|
|
</p>
|
|
<p><strong>RECEIVE_QUEUING_MESSAGE.08</strong>
|
|
RETURN_CODE := NOT_AVAILABLE
|
|
</p>
|
|
<p><strong>RECEIVE_QUEUING_MESSAGE.09</strong>
|
|
initiate a time counter with duration TIME_OUT
|
|
</p>
|
|
<p><strong>RECEIVE_QUEUING_MESSAGE.10</strong>
|
|
set the current process state to WAITING
|
|
</p>
|
|
<p><strong>RECEIVE_QUEUING_MESSAGE.11</strong>
|
|
insert the process in the receiving process queue according to the <br xmlns="http://www.w3.org/1999/xhtml"/>queuing discipline of the specified port
|
|
</p>
|
|
<p><strong>RECEIVE_QUEUING_MESSAGE.12</strong>
|
|
ask for process scheduling
|
|
</p>
|
|
<p><strong>RECEIVE_QUEUING_MESSAGE.13</strong>
|
|
RETURN_CODE := TIMED_OUT
|
|
</p>
|
|
<p><strong>RECEIVE_QUEUING_MESSAGE.14</strong>
|
|
stop the time counter
|
|
</p>
|
|
<h4><strong>GET_QUEUING_PORT_ID</strong>
|
|
The GET_QUEUING_PORT_ID service allows a process to obtain a queuing port identifier by specifying the queuing port name.
|
|
</h4>
|
|
<p><strong>GET_QUEUING_PORT_ID.01</strong>
|
|
RETURN_CODE := INVALID_CONFIG
|
|
</p>
|
|
<p><strong>GET_QUEUING_PORT_ID.02</strong>
|
|
QUEUING_PORT_ID := (ID of the queuing port named QUEUING_PORT_NAME)
|
|
</p>
|
|
<p><strong>GET_QUEUING_PORT_ID.03</strong>
|
|
RETURN_CODE := NO_ERROR
|
|
</p>
|
|
<h4><strong>GET_QUEUING_PORT_STATUS</strong>
|
|
The GET_QUEUING_PORT_STATUS service returns the current status of the specified queuing port.
|
|
</h4>
|
|
<p><strong>GET_QUEUING_PORT_STATUS.01</strong>
|
|
RETURN_CODE := INVALID_PARAM
|
|
</p>
|
|
<p><strong>GET_QUEUING_PORT_STATUS.02</strong>
|
|
QUEUING_PORT_STATUS := current value of port status
|
|
</p>
|
|
<p><strong>GET_QUEUING_PORT_STATUS.03</strong>
|
|
RETURN_CODE := NO_ERROR
|
|
</p>
|
|
<h3><strong>Health Monitoring Services</strong>
|
|
</h3>
|
|
<h4><strong>REPORT_APPLICATION_MESSAGE</strong>
|
|
The REPORT_APPLICATION_MESSAGE service request allows the current partition to transmit a message to the HM function if it detects an erroneous behavior. REPORT_APPLICATION_MESSAGE may be used to record an event for logging purposes.
|
|
</h4>
|
|
<p><strong>REPORT_APPLICATION_MESSAGE.01</strong>
|
|
RETURN_CODE := INVALID_PARAM
|
|
</p>
|
|
<p><strong>REPORT_APPLICATION_MESSAGE.02</strong>
|
|
<span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);">transmit the </span><span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 255);">message represented by MESSAGE_ADDR and LENGTH </span><span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);">to the Healt</span><span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);">h </span><span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);">Monitoring function</span>
|
|
</p>
|
|
<p><strong>REPORT_APPLICATION_MESSAGE.03</strong>
|
|
<span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);">RETURN_CODE := NO_ERROR</span><span xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'monospace','Courier',monospace; font-size: 9.9pt; font-weight: normal; color: rgb(0, 0, 0);"/>
|
|
</p>
|
|
<h4><strong>CREATE_ERROR_HANDLER</strong>
|
|
The CREATE_ERROR_HANDLER service request creates an error handler process for the current partition.
|
|
</h4>
|
|
<p><strong>CREATE_ERROR_HANDLER.01</strong>
|
|
RETURN_CODE := NO_ACTION
|
|
</p>
|
|
<p><strong>CREATE_ERROR_HANDLER.02</strong>
|
|
RETURN_CODE := INVALID_CONFIG
|
|
</p>
|
|
<p><strong>CREATE_ERROR_HANDLER.03</strong>
|
|
RETURN_CODE := INVALID_MODE
|
|
</p>
|
|
<p><strong>CREATE_ERROR_HANDLER.04</strong>
|
|
Create a special process with the highest priority, <br xmlns="http://www.w3.org/1999/xhtml"/>ENTRY_POINT and STACK_SIZE attributes
|
|
</p>
|
|
<p><strong>CREATE_ERROR_HANDLER.05</strong>
|
|
RETURN_CODE := NO_ERROR
|
|
</p>
|
|
<h4><strong>GET_ERROR_STATUS</strong>
|
|
The GET_ERROR_STATUS service must be used by the error handler process to determine the error code, the identifier of the faulty process, the address at which the error occurs, and the message associated with the fault.
|
|
If more than one process is faulty, this service must be called in a loop in the error handler until there are no more processes in error.
|
|
</h4>
|
|
<p><strong>GET_ERROR_STATUS.01</strong>
|
|
RETURN_CODE := INVALID_CONFIG
|
|
</p>
|
|
<p><strong>GET_ERROR_STATUS.02</strong>
|
|
RETURN_CODE := NO_ACTION
|
|
</p>
|
|
<p><strong>GET_ERROR_STATUS.03</strong>
|
|
ERROR_STATUS := error status of the first process in the process error list
|
|
</p>
|
|
<p><strong>GET_ERROR_STATUS.04</strong>
|
|
Clear this error
|
|
</p>
|
|
<p><strong>GET_ERROR_STATUS.05</strong>
|
|
RETURN_CODE := NO_ERROR
|
|
</p>
|
|
<h4><strong>RAISE_APPLICATION_ERROR</strong>
|
|
The RAISE_APPLICATION_ERROR service request allows the current partition to invoke the error handler process for a specific error code. The error handler of the partition is then started (if created) to take the recovery action for the process which raises the error code. Otherwise (if the error handler is not created) the error is considered a partition level error. The message passed may be read with the GET_ERROR_STATUS service.
|
|
If the RAISE_APPLICATION_ERROR service is requested by the error handler process, the error is considered a partition level error. In this case the recovery action for the error specified by the Partition HM table of the current partition is automatically applied.
|
|
</h4>
|
|
<p><strong>RAISE_APPLICATION_ERROR.01</strong>
|
|
RETURN_CODE := INVALID_PARAM
|
|
</p>
|
|
<p><strong>RAISE_APPLICATION_ERROR.02</strong>
|
|
RETURN_CODE := INVALID_PARAM
|
|
</p>
|
|
<p><strong>RAISE_APPLICATION_ERROR.03</strong>
|
|
Take the recovery action described for the error code in the current <br xmlns="http://www.w3.org/1999/xhtml"/>Partition HM table
|
|
</p>
|
|
<p><strong>RAISE_APPLICATION_ERROR.04</strong>
|
|
Start the error handler process for the error code in the current process
|
|
</p>
|
|
<p><strong>RAISE_APPLICATION_ERROR.05</strong>
|
|
Ask for process scheduling
|
|
</p>
|
|
<p><strong>RAISE_APPLICATION_ERROR.06</strong>
|
|
RETURN_CODE := NO_ERROR
|
|
</p>
|
|
</body>
|
|
</html>
|