Use this general macro to generate a list of data items that can be used
with SIPCC and event-type macros. Data item lists are used to define a
variable list of items associated with a particular event or set of
interprocessor communications (IPC) processor destinations.
Format
- label
- is a symbolic name that can be assigned to the macro statement.
- TYPE
- specifies the type of operation requested, where:
- CREATE
- creates a new data item list.
- MODIFY
- modifies an existing data item list.
- EQUATES
- creates DSECT labels for the list definition fields.
- BLOCK
- specifies that the data item list is to be built or modified in an event
block (defined by the EV0BK macro), where:
- blkptr
- is a label specifying the address of the event block.
- Rx
- is a register (R0 to R13, or R15) containing the address of the event
block.
- AREA
- specifies that the data item list is to be built or modified in a work
area, where:
- areaptr
- is a label specifying the address where the data item list begins in the
work area.
- Rx
- is a register (R0 to R13, or R15) containing the address where the data
item list begins in the work area.
- DATA
- specifies the type of data or the location of data that will be included
or excluded from the list, where:
- dataptr
- is a label specifying the address where data items can be found.
Notes:
- For TYPE=CREATE, both the COUNT and the SIZE parameters must be
specified.
- For TYPE=MODIFY, the COUNT parameter must be specified.
- Rx
- is a register (R0 to R13, or R15) containing the address where the data
items can be found.
- COUNT
- specifies the count of data items in the data item list, where:
- cntptr
- specifies the address of a halfword field that contains the count.
- Rx
- specifies a register (R0 to R13, or R15) that contains the count.
- SIZE
- specifies the size, in bytes, of a data item, where:
- sptr
- specifies the address of a halfword field that contains the size.
- Rx
- specifies a register (R0 to R13, or R15) that contains the size.
- RETVALUE
- specifies a return value to be loaded into the return value field of the
data items.
- rtrnptr
- specifies the address of a halfword field that contains the count.
- Rx
- specifies a register (R0 to R13, or R15) that contains the count.
Notes:
- The return value is stored in the number of data items specified in the
COUNT parameter.
- If RETVALUE is not specified, data item return values default to
zero.
- PROCESSOR
- specifies that the data item list contains processor ordinal numbers as
defined in the processor ID table (PIDT).
- Note:
- For DATA=PROCESSOR, the INCLUDE or EXCLUDE (MODIFY only) parameter must be
specified.
- INCLUDE
- specifies which data items to include in the list or to add to the
list.
Notes:
- When TYPE=CREATE, INCLUDE is required if DATA=PROCESSOR and is not valid
if DATA points to an area containing data items.
- When TYPE=MODIFY, either INCLUDE or EXCLUDE must be specified.
- ALL
- specifies that all the data items in the data item list or the ordinal
numbers for all the processors are to be included or added to the data item
list.
- ACTIVE
- specifies that the ordinal numbers for the active processors are to be
included or added to the data item list.
Notes:
- The ACTIVE parameter is valid only when DATA=PROCESSOR is
specified.
- The originating processor is not included or added to the list.
- INACTIVE
- specifies that the ordinal numbers of the inactive processors are to be
included or added to the data item list.
Notes:
- The INACTIVE parameter is valid only when DATA=PROCESSOR is
specified.
- The originating processor is not included or added to the list.
- EXCLUDE
- specifies which data items or processor ordinals are not
included in the list.
- Note:
- EXCLUDE is valid only when TYPE=MODIFY.
- ALL
- specifies that all the indicated data items or all the processor ordinals
are to be removed from the data item list.
- ACTIVE
- specifies that the ordinal numbers of the processors that are currently
active are to be removed from the list.
Notes:
- The ACTIVE parameter is valid only when DATA=PROCESSOR is also
specified.
- The originating processor, if part of the list, is not removed.
- INACTIVE
- specifies that the ordinal numbers of the inactive processors are to be
removed from the data item list.
Notes:
- The INACTIVE parameter is valid only when DATA=PROCESSOR is also
specified.
- The exclude process does not exclude the originating processor.
Entry Requirements
- Register 9 (R9) must contain the address of the entry control block (ECB)
that is being processed.
- When TYPE=MODIFY is specified, the BLOCK or AREA parameter must specify a
list that was previously created.
- The data items pointed to by the DATA parameter must be contiguous
elements of the same length as specified by the SIZE parameter. The
data item size contained in the generated list will be 6 bytes larger than the
size defined by the SIZE parameter.
- For DATA=PROCESSOR, each list data item is a 1-byte processor ordinal
number.
- The total data size, where total = COUNT * (SIZE + 6), cannot exceed 400
bytes.
- When the GENLC macro is called in the control program, the following
conditions exist:
- The GENLC service routine is run in the ECB virtual memory (EVM).
The caller should be in EVM.
- The GENLC service routine uses ECB work area CE1MAC. The contents
of this area are not preserved for the caller.
Return Conditions
- Control is returned to the next sequential instruction (NSI).
- If the BLOCK parameter is specified, the generated list is returned in
EV0BK at EVNBKLI.
- If the AREA parameter is specified, the generated list is returned at the
beginning at the specified area.
- The data list itself consists of the following format in the order
shown:
- A halfword count of list data items
- A halfword list data item size (the input data size + 6)
- Note:
- For processor type data, the returned list item size is 7 bytes.
- The list of data items; each list data item is sorted as
follows:
- A 1-byte flag or status field, defined by use
- A 1-byte indicator field, also defined by use
- A 4-byte return value field
- The input data item as specified with the DATA parameter.
- The contents of R14 and R15 are unknown.
Programming Considerations
- Do not use register 14 (R14) to pass GENLC parameter addresses or
values.
- The GENLC macro uses information contained in the processor ID table
(PIDT).
- The EV0BK DSECT describes the user area that will be used as a parameter
to the following macros:
- EVINC
- EVNQC
- EVNTC
- EVNWC
- POSTC
- SAWNC.
Examples
- The following example builds, in the event block, a processor data list
consisting of only active processors.
GENLC TYPE=CREATE,BLOCK=(R5),DATA=PROCESSOR,INCLUDE=ACTIVE
- The following example removes the specified processor from an existing
processor data list.
GENLC TYPE=MODIFY,AREA=EBX000,DATA=PI1IPT, COUNT=EBW000, EXCLUDE=ALL