General
Application areas: | Contingency processing; see "Contingency processes" |
Macro type: | Type S, MF format 1: standard/L/E form; see "S-type macros" |
Macro description
The LEVCO macro enables the user to modify the processing level (priority) of a current basic or contingency process. Permissible range:
Basic process: processing level 0 - 127 (default value: 0)
Contingency process: processing level 1 - 127 (default value: 1)
Macro format and description of operands
LEVCO |
{ NEWLV={level / (r)} / NEWLVAD={addr / (r)} } [,OLDLVAD=addr / (r)] ,QUEUE=FIFO / LIFO [,PARMOD=24 / 31] [,MF=L / (E,..)] |
NEWLV=
Specifies the new processing level with which the process is to be continued.
level
Processing level (integer).
(r)
Register containing the specification for “level”.
NEWLVAD=
Specifies the new processing level with which the process is to be continued.
addr
Symbolic address of a 1-byte field containing the specification for the processing level.
(r)
Register containing the address value “addr”.
OLDLVAD=
Specifies the old processing level of the process that called LEVCO.
addr
Symbolic address of a 1-byte field in which the old processing level is to be entered.
(r)
Register containing the address value “addr”.
QUEUE=
Specifies the method by which the calling process with the modified processing level is to be enqueued with processes that will then have the same processing level.
FIFO
Indicates the “First In, First Out” method. This means that, after execution of the LEVCO macro, not only can the calling process be interrupted by processes with a higher processing level, but also that LIFO processes with the same processing level which have already been activated will be continued before it is started, since the calling process is placed at the end of the queue.
LIFO
Indicates the “Last In, First Out” method.
With its new processing level, the calling process is put at the head of the queue containing processes with the same processing level. Thus, it can be interrupted only by processes with a higher processing level or by LIFO processes with the same processing level.
MF=
For a general description of the MF operand, its operand values and any subsequent operands (e.g. for a prefix), see "S-type macros". The valid MF values are given at the start of the macro description under “Macro type” and are included in the macro format.
PARMOD=
Controls macro expansion. Either the 24-bit or the 31-bit interface is generated.
If PARMOD is not specified here, macro expansion is performed according to the specification for the GPARMOD macro or according to the default setting for the assembler (= 24-bit interface).
24
The 24-bit interface is generated. Data lists and instructions use 24-bit addresses. (Address space <= 16 Mb.)
31
The 31-bit interface is generated. Data lists and instructions use 31-bit addresses. (Address space <= 2 Gb.)
Notes on the macro call
A process must not reduce its processing level to a point where it is lower than that of a process already started and interrupted (see section “Contingency processes”). If the processing levels are equal, QUEUE=FIFO must not be specified (only QUEUE=LIFO is allowed).
Return information and error flags
During macro processing, register R1 contains the operand list address.
R15:
+---------------+ | | | | | |b|b| | | | |a|a| +---------------+
A structured return code (aa=primary return code, bb=secondary return code) relating to the execution of the macro is transferred in register R15.
X'aa' | X'bb' | Meaning |
X'00' | X'00' | The process is continued with the new priority level. |
X'04' | X'04' | No action. The new priority is lower than (or, in the case of FIFO, equal to) that of |
X'10' | X'04' | Invalid operands were specified. No action. |