gtpg2m3zGeneral Macros

SYNCC-Synchronize Globals

This general macro has two distinct functions:

  1. In the online environment, it permits the initiation of a request to synchronize a global field or record among all active tightly coupled processors, loosely coupled processors, or both.
  2. In the offline environment, it is used in SIP Stage 2 to build the system interprocessor global table (SIGT).

See also the global area program material in the TPF System Installation Support Reference.

Format




label
A symbolic name can be assigned to the macro statement.

LOCK
Obtains exclusive use of the specified global. When the LOCK option is used, this macro will obtain the requested global with Hold and will refresh the core copy of the global with the current file copy.

UNLOCK
Releases exclusive use of the specified global. The UNLOCK option will unhold the file copy of the global. The requested global must have been locked first.

SYNC
Requests synchronization of the specified global. When the SYNC option is requested, the designated global is filed, and an entry is created to activate the synchronization of the global among the active I-streams. In addition, in a loosely coupled (LC) environment, the interprocessor communication facility (IPC) is activated. The IPC is used to inform the other processors in the LC complex that the requested global value should be refreshed in core. After filing the record and activating the IPC, processing is the same as for the UNLOCK option. Again, the requested global must be locked prior to executing this request.

symbol2
A global field or record name must be specified as symbol2.

INDEX=NO|Rx
When Rx is specified, the index value in Rx is added to the value generated by symbol2 to calculate the index number for the global record to be synchronized. If this option is not used, the index value generated by symbol2 is used.

This option is valid only for synchronizable global records (not global fields). Valid registers are R0-R7, R14, and R15.

Note:
The purpose of providing the INDEX feature is to facilitate stepping through a consecutive list of global records in the SIGT. Normal care must be exercised in setting up and using such a list.

ERRTN=label
When present, this parameter will generate a branch to the specified label when an error occurs during execution of the SYNCC macro.

If not present and an error occurs during execution of the SYNCC macro, a system error with dump will occur and the ECB will be exited.

This parameter generates an additional four bytes of object code.

TBL=NO|GEN|END
This parameter is specified as GEN or END only when a new system interprocessor global table (SIGT) is to be generated. Since a SIGT is not usually being generated, NO is the default.

Normal usage is as follows:

      SYNCC TBL=GEN
      SYNCC GLOBAL=...etc.
      SYNCC GLOBAL=...etc.
 
.
.
.
      SYNCC TBL=END

Only the following parameters can be used in the SIGT generation (when TBL=GEN).

BASE=

COMMON=

GLOBAL=

IS=

LOAD=

PROTECT=

BASE=GLOBA|GLOBY
Global base for this data.

COMMON=YES|NO
This indicates whether the global is common to other SSUs or not. YES and NO are the only valid values. If YES is specified, and GLOBAL refers to a Global field, then BASE must be GLOBY.

GLOBAL=name
Name of the synchronizable global data.

IS=UNIQUE|SHARED
This indicates whether the global is shared by all I-streams in each central processing complex (CPC). UNIQUE and SHARED are the only valid values.

LOAD=YES|NO
This is valid for global fields only. If YES, indicates that on the load of a new SIGT, the DASD-resident copy of the Synchronizable Global Field Record (SGFR) for the item referenced by GLOBAL is to be initialized from the core copy of the global field. If NO, the SGFR record will not be initialized during IPL. YES and NO are the only valid values.

The default is YES.

PROTECT=GLOBAL1|GLOBAL2|GLOBAL3
This indicates which protection key should be stored in the SIGT table entry for this item.

Entry Requirements

Return Conditions

Programming Considerations

For the online function, this macro can be executed on any I-stream.

Examples