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 - Speicherbelegung für Klasse-6-Speicher oder Memory Pool ausgeben

&pagelevel(3)&pagelevel

Allgemeines

Anwendungsgebiet:

Anwendungsgebiet: Arbeiten mit virtuellem Speicher; siehe "Arbeiten mit virtuellem Speicher";

Memory-Pool-Technik; siehe "Gemeinsamer Speicherbereich für mehrere Anwender (Memory Pool)";

Abfragen und Zugriff zu Listen und Tabellen; siehe "Abfragen und Zugriff zu Listen und Tabellen"

Makrotyp:

S-Typ, MF-Format 1 (31-Bit-Schnittstelle): Standardform/L-/D-/E-Form;

siehe "S-Typ-Makroaufrufe"


Die Größe des Klasse-6-Speichers kann sich während des Programmlaufs verändern, abhängig von den Anforderungen an den Klasse-5- und Klasse-6-Speicher.

Makrobeschreibung

Der Makro MINF informiert den Anwender über Größe und Belegung seines

  • Klasse-6-Speichers oder eines

  • Memory Pools im Klasse-6-Speicher.

In Form einer Bittabelle wird ausgegeben, ob die Seite belegt ist oder nicht.In der Bittabelle bedeuten:

Byte 0, Bit 27 repräsentiert die 1. (angeforderte) Speicherseite,
Byte 0, Bit 26 repräsentiert die 2. Speicherseite,
:
:
Byte 0, Bit 20 repräsentiert die 8. Speicherseite,
Byte 1, Bit 27 repräsentiert die 9. Speicherseite,
usw.

Für die Belegung gilt:

Bit 2n = 0: Speicherseite ist belegt.
Bit 2n = 1: Speicherseite ist nicht belegt.

Hinweis

Sollen Informationen über den Klasse-6-Speicher ausgegeben werden (Operand CL6), gilt jede Seite innerhalb eines Memory Pools als belegt. Dabei ist es unabhängig, ob die Seite bereits mittels REQMP angefordert wurde oder nicht.
Sollen Informationen über den Memory Pool selbst ausgegeben werden (Operand MP), gelten nur die Seiten als belegt, die bereits mittels REQMP angefordert wurden.

Makroaufrufformat und Operandenbeschreibung

MINF

{CL6 / MP}

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

,ADDR=adr

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

CL6
Informationen über die Speicherseitenbelegung des Klasse-6-Speichers des Anwenders werden ausgegeben. Speicherseiten eins Memory Pools werden immer als belegt gekennzeichnet.

MP
Informationen über die Speicherseitenbelegung eines Memory Pools (Klasse-6-Speicher) werden ausgegeben. Es werden nur die Speicherseiten als belegt gekennzeichnet, die mit REQMP angefordert waren.

INF=
bezeichnet die Art der angeforderten Information.

SIZE
Die virtuelle Seitennummer (VPN) der ersten Speicherseite und die Größe (Anzahl Speicherseiten) des Klasse-6-Speichers/ Memory Pools werden ausgegeben. Die Ausgabe erfolgt in das beim Operanden ADDR angegebene Feld.

FREE,MAP=adr
Eine Bittabelle über die Belegung der Speicherseiten des beim Operanden ADDR angegebenen Speicherbereichs wird ausgegeben. Die Ausgabe erfolgt in das beim Operanden MAP angegebene Feld. Eine Zusatzinformation über die Länge der Bittabelle wird in das bei ADDR angegebene Feld eingetragen.

adr = symbolische Adresse (Name) eines Feldes
(Für je 8 Speicherseiten wird 1 Byte Feldlänge benötigt).

MF=
Zur allgemeinen Beschreibung des Operanden MF, der dazugehörenden Operandenwerte und der evtl. nachfolgenden Operanden (z.B. für einen Präfix) siehe Abschnitt „S-Typ-Makroaufrufe“. Die gültigen MF-Werte sind zu Beginn der Makrobeschreibung bei „Makrotyp“ angegeben und aus dem Aufrufformat ersichtlich.

Bei der D-Form des Makroaufrufs kann ein Präfix (pre = 1..3 Buchstaben), wie im Aufrufformat dargestellt, angegeben werden.
Voreinstellung: pre = MNF

ADDR=adr

bezeichnet ein Feld, das sowohl zur Eingabe als auch zur Ausgabe dient (Operand INF). Feldlänge = 16 Byte (4 Worte). Das Feld ist auf Wortgrenze auszurichten.

adr
symbolische Adresse (Name) des Feldes

Der Inhalt ist wie folgt von der Angabe CL6/MP/SIZE abhängig:

CL6, INF=SIZE: (nur Ausgabefeld)


Byte

Output

0 - 3

VPN der ersten Speicherseite unterhalb 16 MB

4 - 7

Anzahl Speicherseiten unterhalb 16 MB

8 - 11

VPN der ersten Speicherseite oberhalb 16 MB oder X' 00000000'

12 - 15

Anzahl Speicherseiten oberhalb 16 MB od. X' 00000000'

X'00000000' wird ausgegeben, wenn oberhalb 16 MB kein Klasse-6-Speicher existiert.


MP,INF=SIZE:


Byte

Input

Output

0 - 3

VPN einer beliebigen Poolseite

VPN der ersten Speicherseite des Memory
Pools

4 - 7

nicht benutzt

Größe (Anzahl der Seiten) des Memory Pools

8 - 11

nicht benutzt

nicht verändert 1)

12 - 15

nicht benutzt

nicht verändert 1)

1)nicht verändert bedeutet: Bei mehreren aufeinander folgenden MINF-Aufrufen steht der beim
vorherigen Aufruf angegebene Inhalt in dem Feld.


CL6/MP,INF=FREE:


Byte

Input

Output

0 - 3

VPN der ersten Seite des
gewünschten Bereichs.

nicht verändert

4 - 7

Anzahl Speicherseiten über die
eine Bittabelle erstellt werden soll.

Anzahl Speicherseiten, die durch die Bittabelle
real beschrieben werden.

8 - 11

nicht benutzt

nicht verändert

12 - 15

nicht benutzt

nicht verändert

Die angegebene VPN muss ein n-faches von 16 sein (n=0,1,...).


Rückinformation und Fehleranzeigen

Nach der Makrobearbeitung enthält Register R1 die Adresse der Operandenliste.

R15:

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

Über die Ausführung des Makros MINF wird ein Returncode (aa=primärer RC, bb=sekundärer RC) im Register R15 übergeben. Dieser Returncode wird auch im Standardheader der Operandenliste übergeben.

X'aa'

Erläuterung

X'00'

Funktion ausgeführt.

X'04'

Operandenfehler (ungültige Adresse bei MF=(E,...) angegeben).

X'08'

Ungültige VPN (die angegebene Seite befindet sich nicht im Klasse-6-Speicher / Memory
Pool oder der Wert bezeichnet kein n-faches von 16 (n = 0, 1, ...)).

X'0C'

Adressenfehler (Datenbereich/ADDR-Feld/MAP).

Beispiel

In dem Beispiel soll die Größe, Lage und Seitenbelegung eines Memory Pools abgefragt werden, der oberhalb der 16MB-Grenze eingerichtet ist.

  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'

Ablaufprotokoll:

/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)

Einrichten eines Memory Pools oberhalb der 16MB-Grenze. Größe des Memory Pools = 48 Speicherseiten (wird auf 1 MB gerundet).

(2)

Es werden 5 Speicherseiten ab der Anfangsadresse angefordert.

(3)

REQMP liefert in Register R1 die Anfangsadresse des Memory Pools. Das Feld MPINF1 soll als Eingabefeld für den Makro MINF eine (beliebige) virtuelle Seitennummer (VPN) innerhalb des Memory Pools enthalten. Der Inhalt von Register R4 ist die Adresse des ersten Bytes auf der zweiten Memory Pool-Seite, Register R5 enthält die dazugehörige VPN. Diese VPN wird im Feld MPINF1 abgespeichert.

(4)

Erster MINF-Aufruf:Größe und Lage des Memory Pools sollen ausgegeben werden.Die Ausgabe erfolgt in das Feld MPINF: Die VPN der ersten Seite des Memory Pools steht im Feld MPINF1, die Anzahl der Seiten des Memory Pools im Feld MPINF2. Die Felder MPINF3 und MPINF4 werden nicht verändert.

(5)

Zweiter MINF-Aufruf:Eine Bittabelle über die ersten 16 Seiten des Memory Pools soll ausgegeben werden (der vorhergegangene MVC überträgt die Zahl 16 in das zweite Eingabefeld MPINF2).Im Inputfeld für MINF stehen jetzt die vom ersten MINF-Aufruf gelieferte VPN der ersten Seite (MPINF1) und die Anzahl der Poolseiten, deren Seitenbelegung ausgegeben werden soll (MPINF2). Die Ausgabe erfolgt in das Feld BITTAB.

(6)

Nach Ausführung des ENAMP werden die Anfangsadresse und der Returncode abgefragt. Der Memory Pool beginnt auf Adresse X'01100000'.RC = X'04000000' bedeutet: ein neuer Memory Pool wurde eingerichtet.

(7)

Nach Ausführung des REQMP werden die Adresse des reservierten Bereichs und der Returncode abgefragt. Der reservierte Bereich beginnt ab Adresse X'01100000'; RC = X'00000000'.

(8)

Im MINF-Inputfeld steht X'00001101' = 4353 als VPN einer Memory Pool-Seite.

(9)

Nach dem ersten MINF:Die VPN der ersten Seite und die Größe des Memory Pools werden ausgegeben: VPN = 4352 (entspricht X'1100'); Größe = 256 Seiten (entspricht X'100'). Die VPN der ersten Seite bleibt als Input für den zweiten MINF-Aufruf.

(10)

Nach dem zweiten MINF:

  • Die Bittabelle steht auf Adresse X'000000EC'; Länge = 2 Byte (entspricht 16 Seiten).Inhalt: X'07FF'; Bitmuster: 0000/0111/1111/1111 . Die mit REQMP reservierten Speicherseiten sind als belegt und die restlichen der 16 Seiten als frei gekennzeichnet.

  • In die zweite Seite des Memory Pool wurde der Text 2ND PAGE OF ... eingetragen.