VMS Help  —  System Services, $MGBLSC 64 (Alpha and Integrity servers)
    On Alpha and Integrity server systems, establishes a
    correspondence between pages in the virtual address space of
    the process and the pages occupied by a global disk file, page
    file, or demand-zero section and can map to a demand-zero section
    with shared page tables.

    This service accepts 64-bit addresses.

    Format

      SYS$MGBLSC_64  gs_name_64 ,ident_64 ,region_id_64

                     ,section_offset_64 ,length_64 ,acmode

                     ,flags ,return_va_64 ,return_length_64

                     [,start_va_64]

    C Prototype

      int sys$mgblsc_64  (void *gsdnam_64, struct _secid *ident_64,

                         struct _generic_64 *region_id_64, unsigned

                         __int64 section_offset_64, unsigned __int64

                         length_64, unsigned int acmode, unsigned int

                         flags, void *(*(return_va_64)), unsigned

                         __int64 *return_length_64,...);

1  –  Arguments

 gs_name_64

    OpenVMS usage:section_name
    type:         character-coded text string
    access:       read only
    mechanism:    by 32- or 64-bit descriptor-fixed-length string
                  descriptor
    Name of the global section. The gs_name_64 argument is the 32-
    or 64-bit virtual address of a naturally aligned 32-bit or 64-bit
    string descriptor pointing to this name string.

    You can specify any name from 1 to 43 characters. All processes
    mapping to the same global section must specify the same name.
    Note that the name is case sensitive.

    Use of characters valid in logical names is strongly encouraged.
    Valid values include alphanumeric characters, the dollar sign
    ($), and the underscore (_). If the name string begins with an
    underscore (_), the underscore is stripped and the resultant
    string is considered to be the actual name. Use of the colon (:)
    is not permitted.

    Names are first subject to a logical name translation, after
    the application of the prefix GBL$ to the name. If the result
    translates, it is used as the name of the section. If the
    resulting name does not translate, the name specified by the
    caller is used as the name of the section.

    Additional information on logical name translations and
    on section name processing is available in the HP OpenVMS
    Programming Concepts Manual.

 ident_64

    OpenVMS usage:section_id
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference
    Identification value specifying the version number of a global
    section. The ident_64 argument is a quadword containing three
    fields. The ident_64 argument is the 32- or 64-bit virtual
    address of a naturally aligned quadword that contains the
    identification value.

    The first longword specifies the matching criteria in its low-
    order two bits.

    The valid values, symbolic names by which they can be specified,
    and their meanings are as follows:

           Symbolic
    Value  Name           Match Criteria

    0      SEC$K_MATALL   Match all versions of the section.
    1      SEC$K_MATEQU   Match only if major and minor
                          identifications match.
    2      SEC$K_MATLEQ   Match if the major identifications are
                          equal and the minor identification of the
                          mapper is less than or equal to the minor
                          identification of the global section.

    If you specify the ident_64 argument as 0, the version number and
    match control fields default to 0.

    The version number is in the second longword. The version number
    contains two fields: a minor identification in the low-order 24
    bits and a major identification in the high-order 8 bits. You
    can assign values for these fields by installation convention to
    differentiate versions of global sections. If no version number
    is specified when a section is created, processes that specify a
    version number when mapping cannot access the global section.

 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 global
    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.

 section_offset_64

    OpenVMS usage:byte offset
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by value
    Offset into the global section at which to start mapping into the
    process's virtual address space.

    If a map to a global disk file section is being requested, the
    section_offset_64 argument specifies an even multiple of disk
    blocks. If a map to a global page file or demand-zero section is
    being requested, the section_offset_64 argument specifies an even
    multiple of CPU-specific pages. If zero is specified, the global
    section is mapped beginning with the first page of the section.

    If the region_id_64 argument specifies a shared page table
    region, section_offset_64 must be an even multiple of pages
    mapped by a page table page.

 length_64

    OpenVMS usage:byte count
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by value
    Length, in bytes, of the desired mapping of the global disk file
    section.

    If a map to a global section is being requested, the length_64
    argument must specify an even multiple of disk blocks. If a map
    to a global page file or demand-zero section is being requested,
    the length_64 argument must specify an even multiple of CPU-
    specific pages. If zero is specified, the size of the disk file
    is used.

    If a shared page-table region is specified by the region_id_64
    argument, length_64 must be an even multiple of the number of
    bytes that can be mapped by a CPU-specific page-table page or
    must include the last page within the memory-resident global
    section.

 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. This is also the read access mode and, if the SEC$M_
    WRT flag is specified, the write access mode. 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. 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 specifying options for the operation. 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
    $MGBLSC_64 service:

    Flag          Description

    SEC$M_EXPREG  Pages are mapped into the first available space at
                  the current end of the specified region.

                  If /ALLOCATE was specified when the memory-resident
                  global section was registered in the Reserved
                  Memory Registry, virtually aligned addresses
                  after the first available space are chosen for
                  the mapping.

                  It the region_id_64 argument specifies a shared
                  page-table region, the first available space is
                  round up to the beginning of the next CPU-specific
                  page-table page.
    SEC$M_GBL     Pages form a global section. By default, this flag
                  is always present in this service and cannot be
                  disabled.
    SEC$M_NO_     Pages cannot overmap existing address space.
    OVERMAP
    SEC$M_SHMGS   On OpenVMS Galaxy systems, create a shared-memory
                  global section.
    SEC$M_SYSGBL  The global section map is a system global section.
                  By default, the section is a group global section.
    SEC$M_WRT     Map the section with read/write access.

    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 attempt is made to use the SEC$M_PAGFIL flag, which applies
    only to the creation of a page-file backed section.

 return_va_64

    OpenVMS usage:address
    type:         quadword address
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The process virtual address into which the global disk or page
    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.

    Upon successful completion of this service, if the
    section_offset_64 argument was specified, the virtual address
    returned in the return_va_64 argument reflects the offset into
    the global section mapped such that the virtual address returned
    cannot be aligned on a CPU-specific page boundary. The virtual
    address returned will always be on an even virtual disk block
    boundary.

 return_length_64

    OpenVMS usage:byte count
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The length of the usable virtual address range mapped. 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 mapped in bytes.

    Upon successful completion of this service, the value in the
    return_length_64 argument might differ from the total amount
    of virtual address space mapped. The value in the return_va_64
    argument plus the value in the return_length_64 argument
    indicates the address of the first byte beyond the end of the
    mapping of the global disk file section.

    If the value in the section_offset_64 argument plus the value in
    the length_64 argument did not specify to map the entire global
    section, this byte can be located at an even virtual disk block
    boundary within the last page of the mapping.

    If the section being mapped does not completely fill the last
    page used to represent the global disk file section, this byte
    can be mapped into your address space; however, it is not backed
    up by the disk file.

 start_va_64

    OpenVMS usage:address
    type:         quadword address
    access:       read only
    mechanism:    by value
    The starting virtual address to which to map the global 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.

    If the region_id_64 argument specifies a shared page-table
    region, start_va_64 must be aligned to a CPU-specific page-table
    page boundary.
Close Help