A PC number is established in colony address spaces that can be
used from code running in the kernel to PC into the colony. This could
be used by a related PFS that runs in the kernel or by a related file
exporter's glue exit.
The PC number is passed to the PFS in the pfsi_pfspc field during
initialization. Using this PC involves the following:
- The colony PFS must have a PC routine that will be the target
of the PCs. This routine must reside in the colony or in common storage.
- The colony PFS passes the pfsi_pfspc PC number and the address
of its PC routine to the cooperating code that runs in the kernel
or otherwise makes these values known to the kernel code that will
use them.
- The kernel PC caller must place the colony PC routine address
in Register 15 and invoke the PC instruction with the pfsi_pfspc value.
- In the colony, the real PC routine that was established by the
LFS branches to the address that is in Register 15.
- The PFS's PC routine is responsible for anything that it may need,
and its entry is not much different from that of a real PC routine.
The
PC is defined to be entered in the following state:
- PSW key
- 0
- Authorization
- Supervisor state
- AR
- ASC mode
- AMODE
- 31-bit
Registers on entry: The
registers on entry are as follows:
- Register
- Contents
- 0-13
- As they were in the PC caller
- 14
- A return address that can be used by the PC routine
- 15
- The routine address as set by the PC caller
The routine does not have to save or restore
any registers or state information. This is a stacking PC.
The
routine must acquire any working storage that it may need in the primary,
colony, address space.
The routine must set up an FRR or ESTAE
if it needs any recovery to be run in the colony address space. It
will be officially running under an ARR (associated recovery routine),
but there will be no recovery done by that ARR.
When it has
completed, the routine may either issue a PR instruction to return
back to the PC caller, or return to the address that was in Register
14 on entry; that is, issue BR 14.
- The PC caller must beware of the colony address space terminating
while it is using the PC. If the colony address space terminates
before the PC or during the PC routine's execution, the PC caller
will abend.