Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

MINF - Output memory map for class 6 memory or memory pool

&pagelevel(3)&pagelevel

General

Application areas:

Working with virtual memory; see "Working with virtual memory"
Memory pools; see "Common memory areas shared by several users (Memory pools)"
Requesting and accessing lists and tables; see "Requesting and accessing lists and tables"

Macro type:

Type S, MF format 1:
31-bit interface: standard/L/D/E form; see "S-type macros"


The size of class 6 memory may vary within a program run, depending on class 5 and class 6 memory space requirements.

Macro description

The MINF macro provides the user with information about the utilization of

  • the class 6 memory allocated to the user, or

  • a memory pool in class 6 memory.

The information is output in the form of a bit table which indicates for a particular memory page whether it is occupied or not. The entries in the bit table have the following meaning:

byte 0, bit 27 represents the 1st (requested) memory page,
byte 0, bit 26 represents the 2nd memory page,
:
:
byte 0, bit 20 represents the 8th memory page,
byte 1, bit 27 represents the 9th memory page,
etc.

Memory page utilization is indicated thus:

bit 2n = 0: memory page is occupied.
bit 2n = 1: memory page is not occupied.

Note

If information on class 6 memory is to be output (CL6 operand), each page within a memory pool is considered to be occupied, regardless of whether or not the page has already been requested by means of REQMP.
If information on the memory pool itself is to be output (MP operand), only those pages that have already been requested by means of REQMP are considered to be occupied.

Macro format and description of operands

MINF

{CL6 / MP}

,INF= {SIZE / FREE,MAP=addr}

,ADDR=addr

,MF=S / (E,...) / L / (D,pre) / D

CL6
Information about the utilization of the class 6 memory allocated to the user is output. Pages of a memory pool are always marked as in use.

MP
Information about the utilization of a memory pool (class 6 memory) is output. Only those pages are marked as in use which have been requested by means of REQMP.

INF=
Specifies the type of information requested.

SIZE
The virtual page number (VPN) of the first page and the size (number of pages) of the class 6 memory/memory pool are output. The information is output to the field specified by the ADDR operand.

FREE,MAP=addr
A bit table is output, indicating the utilization of pages of the memory area specified with the ADDR operand. The bit table is output to the field specified by the MAP operand. Additional information about the length of the bit table is entered in the field specified with ADDR.
“addr“ is the symbolic address (name) of a field (1 byte of the field's length is required for every 8 memory pages).

MF=
For a general description of the MF operand, its operand values and any subsequent operands (e.g. for a prefix), see section “S-type macros”. The valid MF values are given at the start of the macro description under “Macro type” and are included in the macro format.
A prefix (pre = 1..3 letters) can be specified in the D form of the macro, as shown in the macro format.
Default setting: pre = MNF

ADDR=addr
Specifies a field which is used for both input and output (operand INF).

Field length = 16 bytes (4 words). The field must be aligned on a word boundary.

addr
Symbolic address (name) of the field.

The contents depend on the specification for CL6/MP/SIZE, as illustrated below:

CL6, INF=SIZE: (output field only)


Byte

Output

0 - 3

VPN of first memory page below 16 Mb

4 - 7

Number of memory pages below 16 Mb

8 - 11

VPN of first memory page above 16 Mb or X' 00000000'

12 - 15

Number of memory pages above 16 Mb or X' 00000000'

X'00000000' is output if no class 6 memory exists above 16 Mb.


MP,INF=SIZE:


Byte

Input

Output

0 - 3

VPN of any pool page

VPN of 1st memory pool page

4 - 7

not used

size (number of pages) of memory pool

8 - 11

not used

not changed 1)

12 - 15

not used

not changed 1)

1)'not changed' means: In the event of a number of consecutive MINF calls, the contents

specified with the preceding call are retained.


CL6/MP,INF=FREE:


Byte

Input

Output

0 - 3

VPN of 1st page of requested area

not changed

4 - 7

Number of memory pages about
whose utilization a bit table is to be
output

Number of memory pages actually described by
the bit table

8 - 11

not used

not changed

12 - 15

not used

not changed

The specified VPN must be a multiple of 16 (n=0,1,...)


Return information and error flags

After macro processing, register R1 contains the operand list address.

R15:

+---------------+
|   |   |   |   |
|0|0|0|0|0|0|a|a|
+---------------+

A return code relating to the execution of the MINF macro is transferred in register R15. The same RC is additionally transferred in the standard header of the operand list.

X'aa'

Meaning

X'00'

Function has been executed

X'04'

Operand error (illegal address specified with MF=(E,...)

X'08'

Invalid VPN (the specified page is not located in class 6 memory/memory pool, or the value
is not a multiple of 16 (n = 0, 1, ...)

X'0C'

Address error (operand list/ADDR field/MAP)

Example

In the example, information about the size, location and page utilization of a memory pool is requested; the memory pool has been created above the 16-Mb boundary.

  MINF     START
           PRINT NOGEN
  MINF     AMODE 31
  MINF     RMODE ANY
           GPARMOD 31
1                 *,MACRO: GPARMOD, VERSION: VER121
           BALR  3,0
           USING *,3
           ENAMP MPNAME=MEMP,SCOPE=GLOBAL,MPIDRET=PID,BSIZE=48 ————————  (1) 
1                *,ENAMP: 144/951025
  REQMP    REQMP MPID=PID,BSIZE=5 —————————————————————————————————————  (2) 
1                *,REQMP: 141 / 950210
  *
  DTH1     LR    4,1 ——————————————————————————————————————————————————  (3) 
           LA    4,4095(1)
           LA    4,1(4)
           LR    5,4
           SRL   5,12
           ST    5,MPINF1
  MINF1    MINF  MP,ADDR=MPINF,INF=SIZE ———————————————————————————————  (4) 
1                 *,MACRO: MINF, VERSION: VER174
  DTH2     MVC   MPINF2,=F'16'
           MVC   0(27,4),TEXT
  MINF2    MINF  MP,ADDR=MPINF,INF=FREE,MAP=BITTAB ————————————————————  (5) 
1                 *,MACRO: MINF, VERSION: VER174
  TERM     TERM
  *
  ****  Definitions  ****
  *
  MPINF    DS    0F
  MPINF1   DS    F
  MPINF2   DS    F
  MPINF3   DS    F
  MPINF4   DS    F
  PID      DS    F
  BITTAB   DS    CL4
  TEXT     DC    C'2ND PAGE OF MEMORY POOL'
           END
                 =F'16'

Runtime log:

/start-assembh
%  BLS0500 PROGRAM 'ASSEMBH', VERSION '<ver>' OF '<date>' LOADED
%  ASS6010 <ver> OF BS2000 ASSEMBH  READY 
//compile source=*library-element(macexmp.lib,minf), -
//        compiler-action=module-generation(module-format=llm), -
//        module-library=macexmp.lib, -
//        listing=parameters(output=*library-element(macexmp.lib,minf)), -
//        test-support=*aid
%  ASS6011 ASSEMBLY TIME: 358 MSEC
%  ASS6018 0 FLAGS, 0 PRIVILEGED FLAGS, 0 MNOTES
%  ASS6019 HIGHEST ERROR-WEIGHT: NO ERRORS
%  ASS6006 LISTING GENERATOR TIME: 82 MSEC
//end
%  ASS6012 END OF ASSEMBH
/load-executable-program library=macexmp.lib,element-or-symbol=minf, -
/     test-options=*aid,prog-mode=*any
%  BLS0523 ELEMENT 'MINF', VERSION '@' FROM LIBRARY
   ':2OSG:$QM212.MACEXMP.LIB' IN PROCESS
%  BLS0524 LLM 'MINF', VERSION ' ' OF '<date> <time>' LOADED
/%in reqmp <%d c' ',c'- label reqmp:',%1,%15>
/%in dth1 <%d c' ',c'- label dth1:',%1,%15>
/%in minf1 <%d c' ',c'- label minf1:',mpinf1, mpinf1 %x>
/%in dth2 <%d c' ',c'- label dth2:',mpinf1, mpinf1 %x,mpinf2, mpinf2 %x>
/%in term <%d c' ',c'- label term:',%@(bittab) -> %xl4;%d %4 -> %xl30>
/%r
- LABEL REQMP: ————————————————————————————————————————————————————————  (6) 
*** TID: 005000D8 *** TSN: 2QSE *********************************************
CURRENT PC: 01000040    CSECT: MINF  ****************************************
**
%1              = 01100000
%15             = 04000000
- LABEL DTH1: —————————————————————————————————————————————————————————  (7) 
CURRENT PC: 0100006A    CSECT: MINF  ****************************************
%1              = 01100000
%15             = 00000000
- LABEL MINF1: ————————————————————————————————————————————————————————  (8) 
SRC_REF:   100 SOURCE: MINF  PROC: MINF  ************************************
MPINF1          =        4353
CURRENT PC: 01000080    CSECT: MINF  ****************************************
V'010000E0' = MPINF1   + #'00000000'
010000E0 (00000000) 00001101                               ....
- LABEL DTH2: —————————————————————————————————————————————————————————  (9) 
SRC_REF:   117 SOURCE: MINF  PROC: MINF  ************************************
MPINF1          =        4352
CURRENT PC: 0100009A    CSECT: MINF  ****************************************
V'010000E0' = MPINF1   + #'00000000'
010000E0 (00000000) 00001100                               ....
SRC_REF:   117 SOURCE: MINF  PROC: MINF  ************************************
MPINF2          =         256
CURRENT PC: 0100009A    CSECT: MINF  ****************************************
V'010000E4' = MPINF2   + #'00000000'
010000E4 (00000000) 00000100                               ....
- LABEL TERM: ————————————————————————————————————————————————————————— (10) 
CURRENT PC: 010000C2    CSECT: MINF  ****************************************
V'010000F4' = MINF     + #'000000F4'
010000F4 (000000F4) 07FF0000                               .~..
V'01101000' = ABSOLUT  + #'01101000'
01101000 (01101000) F2D5C440 D7C1C7C5 40D6C640 D4C5D4D6    2ND PAGE OF MEMO
01101010 (01101010) D9E840D7 D6D6D300 00000000 0000        RY POOL.......

(1)

Create a memory pool above the 16-Mb boundary.Size of the memory pool = 48 memory pages (rounded to 1 Mb).

(2)

Reserve 5 memory pages beginning with the start address.

(3)

REQMP supplies the start address of the memory pool in register R1. The field MPINF1 is the input field for the macro MINF and as such should contain (any) virtual page number (VPN) within the memory pool. Register R4 contains the address of the first byte on the second memory pool page, while register R5 contains the relevant VPN. This VPN is stored in the field MPINF1.

(4)

First MINF call:Output size and location of the memory pool.Output is to the field MPINF: The VPN of the first page of the memory pool is in the field MPINF1, and the number of pages of the memory pool is in the field MPINF2. The fields MPINF3 and MPINF4 are not modified.

(5)

Second MINF call:A bit table of the first 16 pages of the memory pool is to be output (the preceding MVC transfers the figure 16 into the second input field MPINF2).The input field for MINF now contains the VPN of the first page (MPINF1) supplied by the first MINF call and the number of pool pages whose utilization is to be output (MPINF2). Output is to the field BITTAB.

(6)

After execution of ENAMP, the start address and the return code are interrogated. The memory pool starts at address X'01100000'.RC = X'04000000' means: a new memory pool has been created.

(7)

After execution of REQMP, the address of the reserved area and the return code are interrogated. The reserved area starts at address X'01100000'; RC = X'00000000'.

(8)

The input field for MINF contains X'00001101' = 4353 as the VPN of a memory pool page.

(9)

After the first MINF:The VPN of the first page and the size of the memory pool are output: VPN = 4352 (corresponds to X'1100'); size = 256 pages (corresponds to X'100'). The VPN of the first page is retained as input for the second MINF call.

(10)

After the second MINF:

  • The bit table starts at address X'000000EC'; length = 2 bytes (corresponds to 16 pages). Contents: X'07FF'; bit pattern: 0000/0111/1111/1111 . The memory pages reserved with REQMP are marked as in use; the remainder of the 16 pages is marked as free.

  • The text 2ND PAGE ... has been entered in the second page of the memory pool.