This is an optional argument. If page-limit is not 
specified or is specified as 0, the only limit is the total process 
virtual address space limit imposed by OpenVMS. If 
page-limit is specified, then 
initial-size must also be specified.
zone-id
  
    | OpenVMS usage:  | 
    identifier | 
  
  
    | type:  | 
    quadword (unsigned) | 
  
  
    | access:  | 
    write only | 
  
  
    | mechanism: | 
    by reference | 
  
Zone identifier. The zone-id argument is the address 
of a quadword that is set to the zone identifier of the newly created 
zone.
algorithm
  
    | OpenVMS usage:  | 
    quadword_signed | 
  
  
    | type:  | 
    quadword integer (signed) | 
  
  
    | access:  | 
    read only | 
  
  
    | mechanism: | 
    by reference | 
  
Algorithm. The algorithm argument is the address of a 
quadword integer that represents the code for one of the LIB$VM 
algorithms. Use one of the following predefined symbols to specify this 
value:
  
    | Symbol  | 
    Value  | 
    Algorithm  | 
  
  
    | 
      LIB$K_VM_FIRST_FIT
     | 
    
      1
     | 
    
      First fit
     | 
  
  
    | 
      LIB$K_VM_QUICK_FIT
     | 
    
      2
     | 
    
      Quick fit, lookaside list
     | 
  
  
    | 
      LIB$K_VM_FREQ_SIZES
     | 
    
      3
     | 
    
      Frequent sizes, lookaside list
     | 
  
  
    | 
      LIB$K_VM_FIXED
     | 
    
      4
     | 
    
      Fixed-size blocks
     | 
  
If algorithm is not specified, a default of 1 (first 
fit) is used.
algorithm-argument
  
    | OpenVMS usage:  | 
    quadword_signed | 
  
  
    | type:  | 
    quadword integer (signed) | 
  
  
    | access:  | 
    read only | 
  
  
    | mechanism: | 
    by reference | 
  
Algorithm argument. The algorithm-argument argument is 
the address of a quadword integer that contains a value specific to the 
particular allocation algorithm.
  
    | Algorithm  | 
    Value  | 
  
  
    | 
      First fit
     | 
    
      Not used, may be omitted.
     | 
  
  
    | 
      Quick fit
     | 
    
      The number of lookaside lists used. The number of lists must be between 
      1 and 128.
     | 
  
  
    | 
      Frequent sizes
     | 
    
      The number of lookaside lists used. The number of lists must be between 
      1 and 16.
     | 
  
  
    | 
      Fixed size blocks
     | 
    
      The fixed request size (in bytes) for each get or free request. The 
      request size must be greater than 0.
     | 
  
The algorithm-argument argument must be specified if 
you are using the quick-fit, frequent-sizes or fixed-size-blocks 
algorithms. However, this argument is optional, but ignored, if you are 
using the first-fit algorithm.
flags
  
    | OpenVMS usage:  | 
    mask_quadword | 
  
  
    | type:  | 
    quadword (unsigned) | 
  
  
    | access:  | 
    read only | 
  
  
    | mechanism: | 
    by reference | 
  
Flags. The flags argument is the address of a quadword 
integer that contains flag bits that control various options, as 
follows:
  
    | Bit  | 
    Value  | 
    Description  | 
  
  
    | 
      0
     | 
    
      LIB$M_VM_BOUNDARY_TAGS
     | 
    
      Boundary tags for faster freeing.
     | 
  
  
    | 
       
     | 
    
       
     | 
    
      Adds a minimum of 16 bytes to each block.
     | 
  
  
    | 
      1
     | 
    
      LIB$M_VM_GET_FILL0
     | 
    
      LIB$GET_VM_64; fill with bytes of 0.
     | 
  
  
    | 
      2
     | 
    
      LIB$M_VM_GET_FILL1
     | 
    
      LIB$GET_VM_64; fill with bytes of FF (hexadecimal).
     | 
  
  
    | 
      3
     | 
    
      LIB$M_VM_FREE_FILL0
     | 
    
      LIB$FREE_VM_64; fill with bytes of 0.
     | 
  
  
    | 
      4
     | 
    
      LIB$M_VM_FREE_FILL1
     | 
    
      LIB$FREE_VM_64; fill with bytes of FF (hexadecimal).
     | 
  
  
    | 
      5
     | 
    
      LIB$M_VM_EXTEND_AREA
     | 
    
      Adds extents to existing areas if possible.
     | 
  
  
    | 
      6
     | 
    
      LIB$M_VM_NO_EXTEND
     | 
    
      Prevents zone from being extended beyond its initial size. If you 
      specify this flag, you must also specify an
      initial-size.
      Extend-size is not used.
     | 
  
  
    | 
      7
     | 
    
      LIB$M_VM_TAIL_LARGE
     | 
    
      Adds areas larger than
      extend-size areas to the end of the area list. 
      Allocations that are larger than
      extend-size can result in new areas. These areas are 
      added to the end of the area list. (This provides better memory re-use 
      when allocating small and very large blocks from the same zone.)
     | 
  
Bits 8 through 63 are reserved and must be 0.
This is an optional argument. If flags is omitted, the 
default of 0 (no fill and no boundary tags) is used.
extend-size
  
    | OpenVMS usage:  | 
    quadword_signed | 
  
  
    | type:  | 
    quadword integer (signed) | 
  
  
    | access:  | 
    read only | 
  
  
    | mechanism: | 
    by reference | 
  
Zone extend size. The extend-size argument is the 
address of a quadword integer that contains the number of Alpha and I64 
pagelets to be added to the zone each time it is extended.
The value of extend-size must be greater than or equal 
to 1.
This is an optional argument. If extend-size is not 
specified, a default of 16 Alpha or I64 pagelets is used.
  Note 
The extend-size argument does not limit the number of 
blocks that can be allocated from the zone. The actual extension size 
is the greater of extend-size and the number of Alpha 
or I64 pagelets needed to satisfy the LIB$GET_VM_64 call that caused 
the extension. 
     | 
  
initial-size
  
    | OpenVMS usage:  | 
    quadword_signed | 
  
  
    | type:  | 
    quadword integer (signed) | 
  
  
    | access:  | 
    read only | 
  
  
    | mechanism: | 
    by reference | 
  
Initial size for the zone. The initial-size argument 
is the address of a quadword integer that contains the number of Alpha 
or I64 pagelets to be allocated for the zone as the zone is created.
This is an optional argument. If you specify a value for 
initial-size, the value must be greater than or equal 
to 0; otherwise, LIB$_INVARG is returned. If 
initial-size is not specified or is specified as 0, no 
Alpha pagelets or I64 are allocated when the zone is created. The first 
call to LIB$GET_VM_64 for the zone allocates 
extend-size pagelets on Alpha or I64 systems.
block-size
  
    | OpenVMS usage:  | 
    quadword_signed | 
  
  
    | type:  | 
    quadword integer (signed) | 
  
  
    | access:  | 
    read only | 
  
  
    | mechanism: | 
    by reference | 
  
Block size of the zone. The block-size argument is the 
address of a quadword integer specifying the allocation quantum (in 
bytes) for the zone. All blocks allocated are rounded up to a multiple 
of block-size.
The value of block-size must be a power of 2 between 
16 and 512. This is an optional argument. If 
block-size is not specified, a default of 16 is used.
alignment
  
    | OpenVMS usage:  | 
    quadword_signed | 
  
  
    | type:  | 
    quadword integer (signed) | 
  
  
    | access:  | 
    read only | 
  
  
    | mechanism: | 
    by reference | 
  
Block alignment. The alignment argument is the address 
of a quadword integer that specifies the required address alignment (in 
bytes) for each block allocated.
The value of alignment must be a power of 2 between 8 
and 512. This is an optional argument. If alignment is 
not specified, a default of 16 (octaword alignment) is used.
page-limit
  
    | OpenVMS usage:  | 
    quadword_signed | 
  
  
    | type:  | 
    quadword integer (signed) | 
  
  
    | access:  | 
    read only | 
  
  
    | mechanism: | 
    by reference | 
  
Maximum page limit. The page-limit argument is the 
address of a quadword integer that specifies the maximum number of 
Alpha or I64 pagelets that can be allocated for the zone. The value of 
page-limit must be greater than or equal to 0. Note 
that part of the zone is used for header information.
This is an optional argument. If page-limit is not 
specified or is specified as 0, the only limit is the total process 
virtual address space limit imposed by OpenVMS. If 
page-limit is specified, then 
initial-size must also be specified.
smallest-block-size
  
    | OpenVMS usage:  | 
    quadword_signed | 
  
  
    | type:  | 
    quadword integer (signed) | 
  
  
    | access:  | 
    read only | 
  
  
    | mechanism: | 
    by reference | 
  
Smallest block size. The smallest-block-size argument 
is the address of a quadword integer that specifies the smallest block 
size (in bytes) that has a lookaside list for the quick fit algorithm.
If smallest-block-size is not specified, the default 
of block-size is used. That is, lookaside lists are 
provided for the first n multiples of 
block-size.
zone-name
  
    | OpenVMS usage:  | 
    char_string | 
  
  
    | type:  | 
    character string | 
  
  
    | access:  | 
    read only | 
  
  
    | mechanism: | 
    by descriptor | 
  
Name to be associated with the zone being created. The optional 
zone-name argument is the address of a descriptor 
pointing to the zone name. If zone-name is not 
specified, the zone will not have an associated name.
get-page
  
    | OpenVMS usage:  | 
    procedure | 
  
  
    | type:  | 
    procedure value | 
  
  
    | access:  | 
    read only | 
  
  
    | mechanism: | 
    by value | 
  
Routine that allocates memory. The number and type of the arguments to 
this routine must match those of the LIB$GET_VM_PAGE_64 routine. If 
get-page is not specified or is specified as 0, the 
LIB$GET_VM_PAGE_64 routine is used to allocate memory.
free-page
  
    | OpenVMS usage:  | 
    procedure | 
  
  
    | type:  | 
    procedure value | 
  
  
    | access:  | 
    read only | 
  
  
    | mechanism: | 
    by value | 
  
Routine that deallocates memory. The number and type of the arguments 
to this routine must match those of the LIB$FREE_VM_PAGE_64 routine. If 
free-page is not specified or if 
free-page is specified as 0, the LIB$FREE_VM_PAGE_64 
routine is used to deallocate memory.