The Create a New Virtual Memory Zone routine creates a new storage zone, according to specified arguments, which is available to all participants in the application. Format PPL$CREATE_VM_ZONE zone-id [,algorithm] [,algorithm-argument] [,flags] [,extend-size] [,initial-size] [,block-size] [,alignment] [,page-limit] [,smallest-block-size] [,zone-name]
1 – Arguments
zone-id OpenVMS usage identifier type longword (unsigned) access write only mechanism by reference Zone identifier. The zone-id argument is the address of a longword set to the zone identifier of the newly created zone. algorithm OpenVMS usage longword_signed type longword (signed) access read only mechanism by reference Algorithm. The algorithm argument is the address of a signed longword that represents the code for one of the LIB$VM algorithms: 1 LIB$K_VM_FIRST_ First fit FIT 2 LIB$K_VM_QUICK_ Quick fit, lookaside list FIT 3 LIB$K_VM_FREQ_ Frequent sizes, lookaside list SIZES 4 LIB$K_VM_FIXED Fixed size blocks If algorithm is not specified, a default of 1 (first fit) is used. algorithm-argument OpenVMS usage longword_signed type longword (signed) access read only mechanism by reference Algorithm argument. The algorithm-argument argument is the address of a signed longword that contains a value specific to the particular allocation algorithm. Algorithm Value QUICK_FIT The number of queues used. The number of queues must be between 1 and 128. FREQ_SIZES The number of cache slots used. The number of cache slots must be between 1 and 16. FIXED The fixed request size (in bytes) for each get or free. The request size must be greater than 0. FIRST_FIT Not used, may be omitted. 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 if you are using the first-fit algorithm. flags OpenVMS usage mask_longword type longword (unsigned) access read only mechanism by reference Flags. The flags argument is the address of an unsigned longword that contains flag bits that control various options: Bit Value Description Bit LIB$M_VM_BOUNDARY_ Boundary tags for faster freeing 0 TAGS Adds a minimum of eight bytes to each block Bit LIB$M_VM_GET_FILL0 LIB$GET_VM; fill with bytes of 0 1 Bit LIB$M_VM_GET_FILL1 LIB$GET_VM; fill with bytes of FF 2 (hexadecimal) Bit LIB$M_VM_FREE_FILL0 LIB$FREE_VM; fill with bytes of 0 3 Bit LIB$M_VM_FREE_FILL1 LIB$FREE_VM; fill with bytes of FF 4 (hexadecimal) Bit LIB$M_VM_EXTEND_ Add extents to existing areas if 5 AREA possible Bits 6 through 31 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 longword_signed type longword (signed) access read only mechanism by reference Zone extend size. The extend-size argument is the address of a signed longword that contains the number of (512-byte) pages to be added to the zone each time it is extended. The value of extend-size must be between 1 and 1024. This is an optional argument. If extend-size is not specified, a default of 16 pages is used. NOTE Extend-size 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 pages needed to satisfy the LIB$GET_VM call that caused the extend. initial-size OpenVMS usage longword_signed type longword (signed) access read only mechanism by reference Initial size for the zone. The initial-size argument is the address of a signed longword that contains the number of (512- byte) pages to be allocated for the zone as the zone is created. This is an optional argument. If initial-size is not specified or is specified as 0, no pages are allocated when the zone is created. The first call to LIB$GET_VM for the zone allocates extend-size pages. block-size OpenVMS usage longword_signed type longword (signed) access read only mechanism by reference Block size of the zone. The block-size argument is the address of a signed longword 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 8 and 512. This is an optional argument. If block-size is not specified, a default of 8 is used. alignment OpenVMS usage longword_signed type longword (signed) access read only mechanism by reference Block alignment. The alignment argument is the address of a signed longword that specifies the required address alignment (in bytes) for each block allocated. The value of alignment must be a power of 2 between 4 and 512. This is an optional argument. If alignment is not specified, a default of 8 (quadword alignment) is used. page-limit OpenVMS usage longword_signed type longword (signed) access read only mechanism by reference Maximum page limit. The page-limit argument is the address of a signed longword that specifies the maximum number of (512-byte) pages that can be allocated for the zone. The value of page-limit must be between 0 and 32,767. 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 the OpenVMS operating system. If page-limit is specified, then initial-size must also be specified. smallest-block-size OpenVMS usage longword_signed type longword (signed) access read only mechanism by reference Smallest block size. The smallest-block-size argument is the address of a signed longword that specifies the smallest block size (in bytes) with a queue for the quick fit algorithm. If smallest-block-size is not specified, the default of block- size is used. That is, queues 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 a character string containing the zone name. If zone-name is not specified, the zone does not have an associated name.