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.