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 - Disable memory pool

&pagelevel(3)&pagelevel

General

Application area:

Memory pools; see "Common memory areas shared by several users (Memory pools)"

Macro type:

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


A memory pool is a memory area (class 6 memory) that can be used by several users together. With ENAMP, a user can create a memory pool or declare participation in an existing memory pool. With DISMP, a user can explicitly terminate participation in a memory pool; participation is terminated implicitly with program termination.
A memory pool is addressed either via the pool name or via its ID (see ENAMP).
Following DISMP, participation in the same (still existing) memory pool must be declared again via ENAMP. The caller is given a new ID for the memory pool.

Macro description

A memory pool participant can sever the connection to the memory pool with the DISMP macro. The memory pool is deleted if the caller is the last (or only) user. All pages of the pool are implicitly released in this case.

Macro format and description of operands

DISMP

{ {MPNAME=name / MPNAMAD={addr / (r)}[,MPNAMLN={length / (r)}] }

,SCOPE={LOCAL / GROUP / USER_GROUP / GLOBAL} /

MPID={addr / (r) }

[,PARMOD=24 / 31]

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

MPNAME=

Specifies the name of the memory pool. Note the connection with the SCOPE operand.

name
Name of the memory pool.

MPNAMAD=
Defines the address of the field with “name”.
(Note the connection with the SCOPE operand).

addr
Symbolic address (name) of the field.

(r)
Register containing the address value of the field.

MPNAMLN=
Defines the length of the name specified under MPNAMAD.
If not specified: length attribute of the addr field or, if MPNAMAD=(r) was specified, 54 bytes.

length
Length in bytes.

(r)
Register containing the length.

SCOPE=
Defines the scope (authorized users) of the memory pool. The specification is used to identify the memory pool uniquely and must always be specified in conjunction with the MPNAME and MPNAMAD operands.

LOCAL
The memory pool is used only by the user who created it.

GROUP
Memory pool users can be all the tasks with the same user ID as the user that created the memory pool.

USER_GROUP
All the tasks, whose user IDs belong to the same user group as the user ID of the creating participant, can be participants.

The operand value assumes the existence of user groups and may therefore only be specified when the SRPM function unit of the SECOS software product is available in the system. This is why the GETUGR macro (see the “SECOS” manual [14 (Related publications)]) has to check whether SRPM is available prior to a macro call with SCOPE=USER_GROUP. The program reaction is dependent on the result (return code).

GLOBAL

All the tasks in the system are participants.

MPID=
Defines the address of a field (length = 4 bytes) with the ID for the memory pool (see ENAMP). The ID identifies the memory pool uniquely. Identifying the memory pool by the ID instead of by the name reduces processing time.

addr
Symbolic address (name) of the field containing the ID.

(r)
Register containing the address value of the field.

MF=
For a general description of the MF operand, its operand values and any subsequent operands (e.g. for a prefix), see "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.

PARMOD=
Controls macro expansion. Either the 24-bit or the 31-bit interface is generated.
If PARMOD is not specified here, macro expansion is performed according to the specification for the GPARMOD macro or according to the default setting for the assembler (= 24-bit interface).

24
The 24-bit interface is generated. Data lists and instructions use 24-bit addresses (address space <= 16 Mb).

31
The 31-bit interface is generated. Data lists and instructions use 31-bit addresses (address space <= 2 Gb). Data lists start with the standard header.

Return information and error flags

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

R15:

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

A structured return code (aa=primary return code, bb=secondary return code) relating to the execution of the DISMP macro is transferred in register R15.
aa=X'00' : normal execution;
aa=X'04' : function not executed.

X'bb'

X'aa'

Meaning

X'0C'

X'00'

Normal execution; caller is the last or only participant; memory pool is deleted.

X'10'

X'00'

Normal execution; end of participation in memory pool; memory pool is retained.

X'04'

X'04'

Function was not carried out. The caller is not a participant in the memory pool in
question (no ENAMP macro).

X'1C'

X'04'

Function was not carried out; operand error:

  • invalid address of the operand list

  • error in operand list structure

  • invalid address for MPNAMAD or MPID in the operand list

  • designation of the memory pool:

    • name contains invalid characters

    • invalid length specification (MPNAMLN)

    • memory pool not designated (MPNAME, MPNAMAD, MPID not specified)

    • MPNAMLN specified, but MPNAMAD omitted

    • SCOPE specified, but MPNAME/MPNAMAD omitted

    • designation not unequivocal: more than one operand was specified as
      designation (MPNAME/MPNAMAD/MPID)

  • invalid SCOPE specification

  • SCOPE=USER_GROUP was specified, although SRPM is not available in the
    system.

  • invalid register (R1) specification

  • PARMOD=24 specified in conjunction with 31-bit addressing mode
    (AMODE31)

X'24'

X'04'

Function not carried out; authorization error:

  • pages of the memory pool are still locked against releasing by the (user' s own)
    task; the lock was set in a privileged state

  • the caller is not authorized to terminate participation in a privileged or class 5
    memory pool.

  • The memory pool is still being used by FASTPAM.

31-bit interface:

  • In the event of errors in the alignment or initialization of the standard header, the return codes X'0001FFFF' / X'0003FFFF'/ X'0004FFFF' are additionally transferred in register R15; see the table “Standard return codes” (Standard header).

  • No return codes are transferred in the standard header.