VMS Help  —  System Services, $CRMPSC FILE 64 (Alpha and Integrity servers)
    On Alpha and Integrity server systems, allows a process to map
    a section of its address space to a specified portion of a file.
    This service creates and maps a private disk file section.

    This service accepts 64-bit addresses.

    Format

      SYS$CRMPSC_FILE_64  region_id_64 ,file_offset_64 ,length_64

                          ,chan ,acmode ,flags ,return_va_64

                          ,return_length_64 [,fault_cluster

                          [,start_va_64]]

    C Prototype

      int sys$crmpsc_file_64  (struct _generic_64 *region_id_64,

                              unsigned __int64 file_offset_64,

                              unsigned __int64 length_64, unsigned

                              short int chan, 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 map the private disk
    file section. 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.

 file_offset_64

    OpenVMS usage:byte offset
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by value
    Byte offset into the file that marks the beginning of the
    section. The file_offset_64 argument is a quadword containing
    this number. If you specify the file_offset_64 argument as 0, the
    section is created beginning with the first byte in the file.

    The file_offset_64 argument must be a multiple of virtual disk
    blocks.

 length_64

    OpenVMS usage:byte count
    type:         quadword (unsigned)
    access:       read only
    mechanism:    value
    Length, in bytes, of the private disk file section to be created
    and mapped to. The length specified must be 0 or a multiple of
    virtual disk blocks. If the length specified is 0 or extends
    beyond end-of-file (EOF), the disk file is mapped up to and
    including the virtual block number that contains EOF.

 chan

    OpenVMS usage:longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Number of the channel on which the file has been accessed. The
    chan argument is a longword containing this number. The access
    mode at which the channel was opened must be equal to or less
    privileged than the access mode of the caller.

    Use the OpenVMS Record Management Services (RMS) macro $OPEN
    to access a file; the file options parameter in the file access
    block must indicate a user file open (UFO) keyword.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode that is to be the owner of the pages created during
    the mapping. 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 most privileged access mode used is the access mode of the
    caller. The calling process can delete pages only if those pages
    are owned by an access mode equal to or less privileged than the
    access mode of the calling process.

 flags

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Flag mask specifying the characteristics of the private section
    to be created. The flags argument is a longword bit vector in
    which each bit corresponds to a flag. The $SECDEF macro and the
    SECDEF.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 each flag that is valid for the
    $CRMPSC_FILE_64 service:

    Flag          Description

    SEC$M_CRF     Pages are copy-on-reference.
    SEC$M_DZRO    Pages are demand-zero pages. By default, they are
                  not zeroed when copied.

                  Note that SEC$M_DZRO and SEC$M_CRF cannot both be
                  set and that SEC$M_DZRO set and SEC$M_WRT clear is
                  an invalid combination.
    SEC$M_EXPREG  Pages are mapped into the first available space at
                  the current end of the specified region.
    SEC$M_NO_     Pages cannot overmap existing address space. By
    OVERMAP       default, pages can overmap existing address space.
    SEC$M_WRT     Pages form a read/write section. By default, pages
                  form a read-only section.

    All other bits in the flags argument are reserved for future
    use by HP and should be specified as 0. The condition value
    SS$_IVSECFLG is returned if any undefined bits are set or if
    an illegal combination of flags is set.

 return_va_64

    OpenVMS usage:address
    type:         quadword address
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The lowest process virtual address into which the private disk
    file section was mapped. 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 32- or 64-bit virtual address of a naturally aligned quadword
    into which the service returns the length of the usable virtual
    address range mapped in bytes. This length might differ from
    the total amount mapped. If the section being mapped does not
    completely fill the last page used to map the section, the
    return_va_64 and return_length_64 arguments indicate the highest
    address that actually maps the section.

 fault_cluster

    OpenVMS usage:byte count
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Page fault cluster in byte units indicating how many pages
    are to be brought into memory when a page fault occurs for a
    single page. The fault cluster specified will be rounded up to a
    multiple of CPU-specific pages.

    If this argument is specified as 0, the process default page
    fault cluster will be used. If this argument is specified as more
    than the maximum allowed for the system, no condition value will
    be returned. The systemwide maximum will be used.

 start_va_64

    OpenVMS usage:address
    type:         quadword address
    access:       read only
    mechanism:    by value
    The starting virtual address to map the private disk file
    section. The specified virtual address must be a CPU-specific
    page aligned address. If the flag SEC$M_EXPREG is specified, the
    start_va_64 argument must not be specified or must be specified
    as 0. If SEC$M_EXPREG is set and the start_va_64 argument is
    nonzero, the condition value SS$_IVSECFLG is returned.
Close Help