Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

DISMP - Memory Pool schließen

&pagelevel(3)&pagelevel

Allgemeines

Anwendungsgebiet:

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

Makrotyp:

S-Typ, MF-Format 1: Standardform/L-/E-Form;

siehe "S-Typ-Makroaufrufe"


Ein Memory Pool ist ein Speicherbereich im Klasse-6-Speicher, der von mehreren Anwendern gemeinsam benutzt werden kann. Ein Anwender kann mit ENAMP einen Memory Pool einrichten oder seine Teilnahme an einem bestehenden erklären. Mit DISMP kann ein Anwender explizit seine Teilnahme an einem Memory Pool beenden; implizit mit Programmbeendigung.
Ein Memory Pool wird über den Pool-Namen oder über seine Kurzkennung (siehe ENAMP) angesprochen.
Nach DISMP muss die erneute Teilnahme an demselben (noch bestehenden) Memory Pool wieder mit ENAMP erklärt werden; der Aufrufer erhält eine neue Kurzkennung für den Memory Pool.

Makrobeschreibung

Mit dem Makro DISMP kann ein Memory Pool-Teilnehmer die Verbindung zu dem Memory Pool lösen. Der Memory Pool wird aufgelöst, wenn der Aufrufer der letzte (einzige) Teilnehmer ist. In diesem Fall werden alle Seiten des Pools implizit freigegeben.

Makroaufrufformat und Operandenbeschreibung

DISMP

{ {MPNAME=name / MPNAMAD={adr / (r)}[,MPNAMLN={länge / (r)}] },SCOPE={LOCAL / GROUP /

USER_GROUP / GLOBAL} /

MPID={adr / (r) }

[,PARMOD=24 / 31]

[,MF=L / (E,..)]

MPNAME=

bezeichnet den Namen des Memory Pools (Verbindung mit Operand SCOPE beachten).

name
Name des Memory Pools

MPNAMAD=
beschreibt die Adresse des Feldes mit name.(Verbindung mit Operand SCOPE beachten).

adr
symbolische Adresse (Name) des Feldes

(r)
r = Register mit dem Adresswert des Feldes

MPNAMLN=
beschreibt die Länge des unter MPNAMAD angegebenen Namens. Wenn nicht spezifiziert: Längenattribut des Feldes adr bzw. 54 Byte, wenn MPNAMAD=(r) angegeben wurde.

länge
Länge in Byte

(r)
r = Register, das länge enthält

SCOPE=
beschreibt den Geltungsbereich (Teilnehmerkreis) des Memory Pools. Die Angabe dient der eindeutigen Identifizierung des Memory Pools und muss immer in Verbindung mit den Operanden MPNAME bzw. MPNAMAD spezifiziert werden.

LOCAL
Der Memory Pool wird nur von dem einrichtenden Teilnehmer benutzt.

GROUP
Teilnehmer können alle Tasks unter der Benutzerkennung des einrichtenden Teilnehmers sein.

USER_GROUP
Teilnehmer können alle Tasks sein, deren Benutzerkennungen der gleichen Benutzergruppe angehören wie die Benutzerkennung des einrichtenden Teilnehmers. Der Operandenwert setzt die Existenz von Benutzergruppen voraus und kann daher nur angegeben werden, wenn die Funktionseinheit SRPM des Software-Produkts SE-COS im System vorhanden ist. Vor einem Makroaufruf mit SCOPE=USER_GROUP muss deshalb mit dem Makro GETUGR (siehe Handbuch „SECOS“ [14]) geprüft werden, ob SRPM zur Verfügung steht; abhängig vom Ergebnis (Returncode) ist im Programm zu reagieren.

GLOBAL
Teilnehmer können alle im System laufenden Tasks sein.

MPID=

beschreibt die Adresse eines Feldes (Länge = 4 Byte) mit der Kurzkennung für den Memory Pool (siehe auch ENAMP). Die Kurzkennung identifiziert den Memory Pool eindeutig. Die Bezeichnung des Memory Pools mittels MPID beschleunigt die Verarbeitung.

adr
symbolische Adresse (Name) des Feldes mit der Kurzkennung

(r)
r = Register mit dem Adresswert des Feldes

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

PARMOD=
steuert die Makroauflösung. Es wird entweder die 24-Bit- oder die 31-Bit-Schnittstelle generiert.
Wenn PARMOD nicht spezifiziert wird, erfolgt die Makroauflösung entsprechend der Angabe für den Makro GPARMOD oder der Voreinstellung für den Assembler (= 24-Bit-Schnittstelle).

24
Die 24-Bit-Schnittstelle wird generiert. Datenlisten und Befehle benutzen 24-Bit-Adressen (Adressraum <= 16 MB).

31
Die 31-Bit-Schnittstelle wird generiert. Datenlisten und Befehle benutzen 31-Bit-Adressen (Adressraum <= 2 GB). Datenlisten beginnen mit dem Standardheader.

Rückinformation und Fehleranzeigen

Nach der Makrobearbeitung enthält Register R1 die Adresse des Datenbereichs.

R15:

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

Über die Ausführung des Makros DISMP wird im Register R15 ein gegliederter Returncode (aa=primärer RC, bb=sekundärer RC) übergeben.
aa=X'00' : normale Ausführung;
aa=X'04' : Funktion nicht ausgeführt.

X'bb'

X' aa'

Erläuterung

X'0C'

X'00'

Normale Ausführung. Aufrufer = letzter oder einziger Teilnehmer;
Memory Pool aufgelöst.

X'10'

X'00'

Normale Ausführung. Teilnahme am Memory Pool beendet;
Memory Pool bleibt bestehen.

X'04'

X'04'

Funktion nicht ausgeführt. Aufrufer ist kein Teilnehmer des genannten Memory
Pools (kein ENAMP-Aufruf).

X'1C'

X'04'

Funktion nicht ausgeführt. Operandenfehler:

  • unzulässige Adresse des Datenbereichs

  • fehlerhafter Aufbau des Datenbereichs

  • unzulässige Adresse für MPNAMAD oder MPID im Datenbereich

  • Benennung des Memory Pools

    • Name enthält unzulässige Zeichen

    • ungültige Längenangabe (MPNAMLN)

    • Memory Pool nicht benannt (MPNAME, MPNAMAD, MPID nicht
      spezifiziert)

    • MPNAMLN angegeben, aber MPNAMAD nicht spezifiziert

    • SCOPE angegeben, aber MPNAME/MPNAMAD nicht spezifiziert.

    • Benennung nicht eindeutig. Es wurde mehr als nur ein Operand zur
      Benennung des MPs spezifiziert (MPNAME/MPNAMAD/MPID)

  • ungültige SCOPE-Angabe

  • SCOPE=USER_GROUP wurde angegeben, obwohl SRPM nicht im System
    vorhanden ist.

  • ungültiges Register (R1) angegeben.

  • PARMOD=24 in Verbindung mit 31-Bit-Adressierungsmodus (AMODE 31)
    angegeben.

X'24'

X'04'

Funktion nicht ausgeführt. Berechtigungsfehler:

  • Die (eigene) Task hält noch eine (Seitenfreigabe-) Sperre für den Memory
    Pool. Die Sperre wurde in einem privilegierten Zustand gesetzt.

  • Aufrufer ist nicht berechtigt, die Teilnahme an einem privilegierten oder Klas-
    se-5-MP zu beenden.

  • Der Memory Pool wird noch durch FASTPAM belegt.

31-Bit-Schnittstelle:

  • Bei fehlerhafter Ausrichtung oder Initialisierung des Standardheaders werden im Register R15 zusätzlich die Returncodes X'0001FFFF' / X'0003FFFF' / X'0004FFFF' übergeben, siehe Tabelle „Standard-Returncodes“ (Standardheader).

  • Im Standardheader werden keine Returncodes übergeben.