NAME : HCPSPIBK
DESCRIPTION: Space Permission Information BlocK
DSECT : SPIBK
FUNCTION : Defines one address space's permission to
attach another address space to its access
LOCATED BY : ASCSPIBK Pointer to chain of SPIBKs designating
which users are permitted to attach this
space to their guest-use access list.
ALCSPIBK Anchor for chain of SPIBKs defining
which address spaces may be attached to
this guest-use access list.
CREATED BY : HCPSPM - When the first permission for an access
list to access an address space is granted.
DELETED BY : HCPSPM - When the last permission for an access
list to access an address space is revoked.
SERIALIZED : All fields in this control block, as well
as the ASCSPIBK and ALCSPIBK fields in
the ASCBK and the ALCBK are serialized
by the Space-Permission-Manager lock,
RSASPMLK in HCPRSM.
RELOCATION CONSIDERATIONS : None
COMMENTS : The allocation default for this control block
is 'VIRTUAL'. If the default is not overridden,
this control block comes from and is returned
to the virtual free storage CP utility address
space. Access register mode must be entered
in order to use this storage. The ALET for the
virtual free storage CP utility address space
resides in HCPSYSCM. If the TYPE= parameter is
overridden on the HCPGETST macro from virtual
to some other type (all other types are real)
or vice versa, the HCPRELST TYPE= parameter
MUST also be overridden.
Both the address space permission chain and
the access list permission chain are
doubly-linked. In both cases, the forward
pointer of the last element of the chain
is zero. However, the backward pointer
of the first element in the chain is also
zero, instead of pointing back to the ASCBK
or ALCBK anchor field. Since the ASCBKs and
ALCBKs are in real storage, their addresses
are real addresses and there would need to be
some way to determine when the anchor address
was reached in order to properly handle it.
To avoid dealing with that problem (since it's
not really critical that we take that last step
backward), we simply zero the backward pointer
of the first chain element.