VMS Help
System Services, $CRMPSC FILE 64 (Alpha Only)
*Conan The Librarian (sorry for the slow response - running on an old VAX)
|
|
On Alpha 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,...);
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 Compaq 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.
[legal]
[privacy]
[GNU]
[policy]
[netiquette]
[sponsors]
[FAQ]
Polarhome, production since 1999.
Member of Polarhome portal.