VMS Help
System Services, $GET REGION INFO (Alpha Only)
*Conan The Librarian (sorry for the slow response - running on an old VAX)
|
|
On Alpha systems, gets information about a specified virtual
region.
This service accepts 64-bit addresses.
Format
SYS$GET_REGION_INFO function_code ,region_id_64 ,start_va_64
,nullarg ,buffer_length ,buffer_address_64
,return_length_64
C Prototype
int sys$get_region_info (unsigned int function_code, struct
_generic_64 *region_id_64, void
*start_va_64, void *reserved,
unsigned int buffer_length, void
*buffer_address_64, unsigned int
*return_length_64);
function_code
OpenVMS usage:function code
type: longword (unsigned)
access: read only
mechanism: by value
Function code specifying how the information you are requesting
should be looked up. All function codes return region summary
information in the return buffer in the format of the Region
Summary Buffer. The Region Summary Buffer format is shown in the
table in the buffer_address_64 argument.
If less buffer space is specified than the length of the Region
Summary Buffer, only the amount of information requested is
returned. If more buffer space is specified than the length of
the Region Summary Buffer, the service will fill in the buffer.
The return length will reflect the amount of useful information
written to the buffer, the size of the Region Summary Buffer.
The file VADEF.H in SYS$STARLET_C.TLB and the $VADEF macro in
STARLET.MLB define a symbolic name for each function code.
The following function codes are defined:
Symbolic Name Description
VA$_REGSUM_BY_ID Return the region summary information for
the region whose ID is specified in the
region_id_64 argument.
VA$_REGSUM_BY_VA Return the region summary information for
the region that contains the virtual address
specified in the start_va_64 argument.
VA$_NEXT_REGSUM_ Return the region summary information for
BY_VA the region containing the starting address.
If the starting address is not in a region,
return the region summary information for
the next region with a starting address
higher than the specified address.
Note: For the VA$_NEXT_REGSUM_BY_VA
function, OpenVMS checks for a start_va_64
argument in the inaccessible address range
in P2 space. If it finds one, OpenVMS
adjusts the address to account for the
discontinuity. For more information about
the layout of the 64-bit virtual address
space, refer to the OpenVMS Programming
Concepts Manual.
This function code can be used for wildcard
operations. See the description of the
start_va_64 argument for information on how
to program a wildcard operation on regions.
region_id_64
OpenVMS usage:region identifier
type: quadword (unsigned)
access: read only
mechanism: by 32- or 64-bit reference
The region ID associated with the region about which information
is requested. This argument is read only if the function code
VA$_REGSUM_BY_ID is specified.
The file VADEF.H in SYS$STARLET_C.TLB and the $VADEF macro in
STARLET.MLB define a symbolic name for each of the three default
regions in P0, P1, and P2 space.
The following region IDs are defined:
Symbol Region
VA$C_P0 Program region
VA$C_P1 Control region
VA$C_P2 64-bit program region
Other region IDs, as returned by the $CREATE_REGION_64 service,
can be specified.
start_va_64
OpenVMS usage:input address
type: quadword address
access: read only
mechanism: by value
Virtual address associated with region about which information
is requested. This argument is read only if the function_code
argument is VA$_REGSUM_BY_VA or VA$_NEXT_REGSUM_BY_VA.
If the function_code argument is VA$_REGSUM_BY_VA, this argument
is a virtual address within the region about which you are
requesting information.
To perform a wildcard search on all regions, specify VA$_
NEXT_REGSUM_BY_VA as the function code and begin with the
start_va_64 argument specified as -1. For subsequent calls,
specify start_va_64 as the sum of the previous region's start
address and length. Call the $GET_REGION_INFO service in a loop
until the condition SS$_NOMOREREG is returned.
NOTE
Before performing the lookup function, OpenVMS sign-extends
the 64-bit starting address so that it represents a properly
formed virtual address for the CPU.
nullarg
OpenVMS usage:null_arg
type: longword (unsigned)
access: read only
mechanism: by value
Placeholding argument reserved to Compaq.
buffer_length
OpenVMS usage:longword_unsigned
type: longword (unsigned)
access: read only
mechanism: by value
Length of the buffer into which information is returned.
buffer_address_64
OpenVMS usage:varying_arg
type: unspecified
access: write only
mechanism: by 32- or 64-bit reference
The 32- or 64-bit virtual address of a quadword-aligned buffer
into which to return information if the buffer_length argument is
nonzero.
This argument is ignored if the buffer_length argument is zero.
The following table shows the format of the Region Summary
Buffer:
Table SYS-3 Region Summary Buffer Format
Field
Size Field Offset
Field name Meaning (Bytes) (Decimal)
VA$L_FLAGS Flags used when 4 8
region was created
VA$L_REGION_ Create and owner 4 12
PROTECT mode of region
VA$Q_REGION_ID Region identifier 8 0
VA$PQ_START_VA Starting (lowest) 8 16
virtual address of
region
VA$Q_REGION_SIZE Total length of 8 24
region
VA$PQ_FIRST_FREE_ First free virtual 8 32
VA address in region
VA$C_REGSUM_LENGTH Length of Region constant 40
Summary Buffer
The file VADEF.H in SYS$STARLET_C.TLB and the $VADEF MACRO in
STARLET.MLB define the REGSUM structure.
return_length_64
OpenVMS usage:longword_unsigned
type: longword (unsigned)
access: write only
mechanism: by 32- or 64-bit reference
The 32- or 64-bit virtual address of a naturally aligned longword
into which the service returns the length of the information in
bytes.
[legal]
[privacy]
[GNU]
[policy]
[netiquette]
[sponsors]
[FAQ]
Polarhome, production since 1999.
Member of Polarhome portal.