PFIX (Page-Fix Request) Macro

The macro causes specific pages to be brought into real storage and fixed in their page frames until they are released at some later time.

The maximum number of pages that can be fixed at any one time is specified via the ALLOC R or the SETPFIX job control command. Each time a page is fixed, a counter for that page is incremented. This counter must not exceed 32,767 for any page.

Format

You can code the macro in either of the following formats: with an explicitly provided fix list or, in the generation format, with the implicitly generated fix list in the macro expansion:
Read syntax diagramSkip visual syntax diagramnamePFIX ,beginaddr, endaddr,RLOC=BELOW,RLOC=ANY,RETURN=NO,RETURN=YES
Read syntax diagramSkip visual syntax diagramname PFIX listname(1),RLOC=BELOW,RLOC=ANY,RETURN=NO,RETURN=YES

Requirements for the caller

AMODE:
24 (if SPLEVEL SET=1)

24 or 31 (if SPLEVEL SET>1)

RMODE:
24 (if SPLEVEL SET=1)

24 or ANY (if SPLEVEL SET>1)

ASC Mode:
Primary

Parameters

beginaddr
Points to the first byte of the area to be fixed.
endaddr
Points to the last byte of the area to be fixed.
RLOC=BELOW | ANY
Specifies the location of the real storage for the PFIX requests: BELOW indicates below 16 MB, ANY indicates anywhere. (For ANY, the system first tries to PFIX in the area above the 16 MB line and only if this area is already totally PFIXed, it tries to PFIX in the area below the 16 MB line.)
RETURN=NO | YES
YES indicates that control is to be returned to the issuer of the PFIX if the request cannot be satisfied because of temporarily fixed pages. NO indicates that the issuer of PFIX must wait until the requested pages are fixed.
listname | (1)
Is the name of a list of consecutive 8-byte entries as shown below. Register notation can also be used. The address of this parameter list and the addresses in the list are treated as 3-byte addresses if the macro is invoked in 24-bit addressing mode and as 4-byte addresses if invoked in 31-bit addressing mode.
24-bit addressing mode:
X'00' Address constant Length Minus 1
0 1 4
31-bit addressing mode:
Address constant Length Minus 1
0 4
where:
Address constant =
Address of the first byte of the area to be fixed.
Length =
A binary constant that indicates the length of the area to be fixed.

The end of the list is indicated by a nonzero byte following the last entry (for 24-bit addressing mode). For 31-bit addressing mode, a nonzero value in bit 0 of the byte following the last entry indicates the end of the list.

Exceptional Conditions

  • If a PFIX causes the maximum count of fixes for a page to be exceeded, the task that issues the PFIX is canceled.
  • If it is not possible to fix all pages requested, then none are fixed.
  • If PFIX is issued in a program running in real mode, it is ignored and register 15 contains 0.

Return Codes in Register 15

0
The pages were successfully fixed.
4
The number of pages to be fixed for one request exceeds the number of PFIXable page frames; in order for this PFIX request to be satisfied, more PFIXable storage must be allocated through the ALLOC R or SETPFIX job control command.
8
Not enough page frames are available in the partition because of previous PFIXes or current system resource usage; this PFIX request could, however, be satisfied at another time without reallocating PFIXable storage.
12
One of the specified addresses was invalid, or begin address was higher than end address, or a negative length was found.
16
A PFIX request was given with RLOC=BELOW, but at least one page of the requested area is already PFIXed in a frame above 16 MB by a previous request. The request is ignored. No page is fixed. A subsequent PFIX request with the same list and RLOC=ANY does, however, PFIX the area.
20
Inconsistent function/option code provided in register 15; no page is fixed (not possible if macro interface is used).
24
No pages were PFIXed because not enough page frames were available due to temporarily fixed pages.