Copyright Digital Equipment Corp. All rights reserved.

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- or 64-bit
   string descriptor pointing to this name string.
 

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

   When a section is mapped at creation time, the match control
   field is ignored. 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.
 

prot

   OpenVMS usage:file_protection
   type:         longword (unsigned)
   access:       read only
   mechanism:    by value
   Protection to be applied to the global demand-zero section. The
   mask contains four 4-bit fields. Bits are read from right to left
   in each field.

   Refer to the VSI OpenVMS System Services Reference Manual to view
   the diagram depicting the mask.

   Cleared bits indicate that read, write, execute, and delete
   access, in that order, are granted to the particular category
   of user. Only read, write, and execute access are meaningful
   for section protection. Delete access bits are ignored. Read
   access also grants execute access for those situations where
   execute access applies. If zero is specified, read access and
   write access are granted to all users.
 

length_64

   OpenVMS usage:byte count
   type:         quadword (unsigned)
   access:       read only
   mechanism:    by value
   Length, in bytes, of the global demand-zero section to be
   created. The length_64 must be specified as a multiple of the
   CPU-specific page size. A length of 0 cannot be specified.
 

                                  NOTE

      Creating a memory-resident global section with shared page
      table does not imply that the global section must have an
      even multiple of CPU-specific page table pages. The global
      section might not fully use the last page table page.
 

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

section_offset_64

   OpenVMS usage:byte offset
   type:         quadword (unsigned)
   access:       read only
   mechanism:    by value
   Offset into the global section to start mapping into the
   process's virtual address space. The offset specified must be
   a multiple of a CPU-specific page size.

   If a shared page table region is specified by the region_id_
   64 argument, section_offset_64 must be an even multiple of
   the larger of the number of bytes that can be mapped by a CPU-
   specific page. For Integrity server systems, the alignment of
   section offsets must also be an integer multiple of the page size
   used to map VA space at this offset.

   VSI recommends that you avoid any partial mapping of memory-
   resident sections when you use shared page tables on Integrity
   server systems. If you cannot avoid this, set bit 4 in the system
   parameter MMG_CTLFLAGS to limit the effective page size to the
   number of bytes that can be mapped by a page.
 

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 access mode is also the read access mode
   and the write access mode. The acmode argument is a longword
   containing the access mode.

   If the memory-resident global section is created with shared
   page tables, this is the access mode that is stored in the owner,
   read, and write fields of the corresponding shared page table
   entries (PTEs).

   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.

   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 the type of the global section to be created
   as well as its characteristics. 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_GDZRO_64 service:

   Flag          Description

   SEC$M_DZRO    Pages are demand-zero pages. By default, this flag
                 is always present in this service and cannot be
                 disabled.

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

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

   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_PERM    Global section is permanent.

   SEC$M_RAD_    When set, the argument rad_mask is used as a mask
   HINT          of RADs from which to allocate memory. See the rad_
                 mask argument description for more information.

   SEC$M_READ_   Create shared table pages for the section that
   ONLY_SHPT     allow read access only.

   SEC$M_SHMGS   Create a shared-memory global section.

   SEC$M_SYSGBL  Pages form a system global section. By default,
                 pages form a group global section.

   SEC$M_MRES    Pages form a memory-resident section. By default,
                 this page is always present in this service and
                 cannot be disabled.

   SEC$M_WRT     Pages form a read/write section. By default, this
                 flag is always present in this service and cannot
                 be disabled.

   All other bits in the flags argument are reserved for future
   use by VSI and should be specified as 0. The condition value
   SS$_IVSECFLG is returned if any undefined bits are set or if
   an invalid 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 global demand-
   zero 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.

   If a shared page table region is specified by the region_id_64
   argument and the SEC$M_EXPREG flag is set, the returned virtual
   address is aligned to a CPU-specific page table page boundary.
 

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 virtual address
   range mapped in bytes.
 

start_va_64

   OpenVMS usage:address
   type:         quadword address
   access:       read only
   mechanism:    by value
   The starting virtual address to map the memory-resident 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 SEC$M_EXPREG is clear, start_va_64 is nonzero, and a shared
   page table region is specified, the specified starting address
   must be aligned to a natural page table page boundary; otherwise,
   the condition value SS$_VA_NOTPAGALGN is returned.

   If the /ALLOCATE qualifier was specified when the memory-resident
   global section was registered in the Reserved Memory Registry
   and start_va_64 is aligned to a multiple of CPU-specific pages
   appropriate for taking advantage of granularity hints then
   granularity hints are used to map to the global section:

   o  On Alpha systems, granularity hints mean multiples of pages,
      regardless of page size. The multiples 8, 64, and 512 pages
      are architected.

   o  On Integrity server systems, OpenVMS initially supports page
      sizes of 64KB, 256KB, and 4MB instead of granularity hints.
      Additional pages sizes will be supported in the future.

   If the flag VA$M_SHARED_PTS is set and this argument is
   specified, the specified starting address must be aligned to
   the larger of a natural page table boundary or to the largest
   possible page size used to map the section. If the alignment is
   less than a page table boundary, the $CREATE_REGION_64 service
   returns an error. If the alignment is less than the largest page
   size used in the section, an error might be returned when you
   attempt to map the section.

   If you do not specify a starting address, OpenVMS automatically
   ensures correct alignment.
 

map_length_64

   OpenVMS usage:byte count
   type:         quadword (unsigned)
   access:       read only
   mechanism:    by value
   Length of the memory-resident global section to be mapped. The
   length specified must be a multiple of CPU-specific pages. If
   this argument is not specified or is specified as zero, the
   global file section is mapped up to and including the last page
   in that section.

   If a shared page table region is specified by the region_id_64
   argument, map_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 global section.
 

reserved_length_64

   OpenVMS usage:byte count
   type:         quadword (unsigned)
   access:       write only
   mechanism:    32- or 64-bit reference
   Length, in bytes, of the global section as currently registered
   in the Reserved Memory Registry. The reserved_length_64 argument
   is the 32- or 64-bit virtual address of a naturally aligned
   quadword into which the service returns the reserved length.

   If reserved_length_64 is not specified or is specified as 0, no
   reserved length is returned to the caller.

   If the memory-resident global section is not registered,
   reserved_length_64 is written with the value 0.
 

rad_mask

   OpenVMS usage:mask_quadword
   type:         quadword (unsigned)
   access:       read only
   mechanism:    by value
   Use the rad_mask argument to specify from which RADs to allocate
   memory. Currently only one bit may be set. The specified RAD
   must contain memory. This argument is only a hint. Memory may be
   obtained from other RADs if no free memory is available at the
   time of allocation.

   The rad_mask argument is considered only if the SEC$M_RAD_HINT
   flag is specified. Otherwise, this argument is ignored.

   On a system that does not support resource affinity domains
   (RADs), specifying 1 for the rad_mask argument is allowed.

   RAD is supported on AlphaServer GS series systems and starting
   from OpenVMS Version 8.4, support is extended to NUMA capable
   Integrity servers.