VMS Help
System Services, $CRETVA 64 (Alpha Only)

 *Conan The Librarian (sorry for the slow response - running on an old VAX)

    On Alpha systems, adds a range of demand-zero allocation pages
    to a process's virtual address space for the execution of the
    current image. The new pages are added at the virtual address
    specified by the caller.

    This service accepts 64-bit addresses.

    Format

      SYS$CRETVA_64  region_id_64 ,start_va_64 ,length_64 ,acmode

                     ,flags ,return_va_64 ,return_length_64

    C Prototype

      int sys$cretva_64  (struct _generic_64 *region_id_64, void

                         *start_va_64, unsigned __int64 length_64,

                         unsigned int acmode, unsigned int flags,

                         void *(*(return_va_64)), unsigned __int64

                         *return_length_64);

  1 - Arguments

 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 to create the virtual
    address range. 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. Also, given a particular virtual address, the
    region ID for the region it is in can be obtained by calling the
    $GET_REGION_INFO system service specifying the VA$_REGSUM_BY_VA
    function.

 start_va_64

    OpenVMS usage:address
    type:         quadword address
    access:       read only
    mechanism:    by value
    The starting address for the created virtual address range. The
    specified virtual address must be a CPU-specific page aligned
    address.

 length_64

    OpenVMS usage:byte count
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by value
    Length of the virtual address space to be created. The length
    specified must be a multiple of CPU-specific pages.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode associated with the call to $CRETVA_64. The access
    mode determines the owner mode of the pages as well as the read
    and write protection on the pages. The acmode argument is a
    longword containing the access mode.

    The $PSLDEF macro in STARLET.MLB and the file PSLDEF.H in
    SYS$STARLET_C.TLB define the following symbols and their values
    for the four access modes:

    Value      Symbolic Name      Access Mode

    0          PSL$C_KERNEL       Kernel
    1          PSL$C_EXEC         Executive
    2          PSL$C_SUPER        Supervisor
    3          PSL$C_USER         User

    The $CRETVA_64 service uses whichever of the following access
    modes is least privileged:

    o  Access mode specified by the acmode argument

    o  Access mode of the caller

    The protection of the pages is read/write for the resultant
    access mode and those more privileged.

    Address space cannot be created within a region that has a create
    mode associated with it that is more privileged than the caller's
    mode. The condition value SS$_IVACMODE is returned if the caller
    is less privileged than the create mode for the region.

 flags

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Flag mask controlling the characteristics of the demand-zero
    pages created. The flags argument is a longword bit vector in
    which each bit corresponds to a flag. The $VADEF macro and the
    VADEF.H file define a symbolic name for each flag. You construct
    the flags argument by performing a logical OR operation on the
    symbol names for all desired flags.

    The following table describes the flag that is valid for the
    $CRETVA_64 service:

    Flag               Description

    VA$M_NO_OVERMAP    Pages cannot overmap existing address space.
                       By default, pages can overmap existing address
                       space.

    All other bits in the flags argument are reserved for future
    use by Compaq and should be specified as 0. The condition value
    SS$_IVVAFLG is returned if any undefined bits are set.

 return_va_64

    OpenVMS usage:address
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The lowest process virtual address of the created virtual address
    range. The return_va_64 argument is the 32- or 64-bit virtual
    address of a naturally aligned quadword into which the service
    returns the virtual address.

 return_length_64

    OpenVMS usage:byte count
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The length of the virtual address range created. The
    return_length_64 argument is the 32- or 64-bit virtual address
    of a naturally aligned quadword into which the service returns
    the length of the virtual address range in bytes.
  Close     HLB-list     TLB-list     Help  

[legal] [privacy] [GNU] [policy] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.