Library /sys$common/syshlp/helplib.hlb  —  System Services, $SETFLT 64
    On Alpha and Integrity server systems, allows a process to change
    the fault characteristic (for example, no execute) on a page or
    range of pages.

    Format

      $SETFLT_64  start_va_64 ,length_64 ,acmode ,fault_flag

                  ,return_va_64 ,return_length_64

1  –  Arguments

 start_va_64

    OpenVMS usage:address
    type:         quadword address
    access:       read only
    mechanism:    by value
    The starting virtual address of the range of pages whose fault
    characteristic is to be changed. The specified virtual address
    will be rounded down to a CPU-specifie page boundary.

 length_64

    OpenVMS usage:byte count
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by value
    Length of the virtual address space whose fault characteristic
    is to be changed. The specified length will be rounded up to a
    CPU-specific page boundary so that it includes all CPU-specific
    pages in the requested range.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode associated with the call to $SETFLT_64. The acmode
    argument is a longword containing the access mode. The $PSLDEF
    macro defines symbols for the four access modes.

    The most privileged access mode used is the access mode of the
    caller. The calling process can modify pages only if those pages
    are owned by an access mode equal to or less privileged than the
    access mode of the calling process.

 fault_flag

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:     by value
    Flag mask specifying the request options. The fault_flag argument
    is a longword bit vector in which each bit corresponds to a flag.
    The $FLTDEF macro and the FLTDEF.H file define a symbolic name
    for each flag.

    The $FLTDEF macro defines the following symbolic names for the
    fault characteristic codes:

    Symbol             Description

    FLT$M_NO_EXECUTE   Fault on execute access attempt
    FLT$M_EXECUTABLE   Allow execute access

    If you specify the fault characteristic as the value 0, the
    characteristic defaults to no execute access.

 return_va_64

    OpenVMS usage:address
    type:         quadword address
    access:       write only
    mechanism:    by 32-bit or 64-bit reference
    The lowest process virtual address of the range of pages whose
    fault characteristics were actually changed.

 return_length_64

    OpenVMS usage:byte count
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by 32-bit or 64-bit reference
    The length of the virtual address range whose fault
    characteristics were actually changed. The return_length_64
    argument is the 32-bit or 64-bit virtual address of a naturally
    aligned quadword into which the service returns the length of the
    virtual address range in bytes.

2  –  Description

    The Set Fault Characteristic service sets the fault
    characteristics (for example, no execute) for the specified
    range of pages, checking that the specified mode is at least
    as privileged as the owner of the page.

    If the condition value SS$_ACCVIO is returned by this service, a
    value might not be returned in the memory locations pointed to by
    the return_va_64 and return_length_64 arguments.

    If a condition value other than SS$_ACCVIO is returned, the
    returned address and returned length indicate the pages that were
    successfully changed before the error occurred. If no pages were
    changed, the return_va_64 argument will contain the value -1, and
    a value might not be returned in the memory location pointed to
    by the return_length_64 argument.

    Required Privileges

    None

    Required Quota

    None

    Related Services

    $CRETVA_64, $EXPREG_64, $SETPRT_64

3  –  Condition Values Returned

    SS$_NORMAL         The service completed successfully.
    SS$_ACCVIO         The return_va_64 or return_length_64 argument
                       cannot be written by the caller.
    SS$_BADPARAM       A bad fault_flag argument was specified.
    SS$_LENVIO         A page in the specified range is beyond
                       the length of virtual addresses within that
                       region.
    SS$_NOSUCHPAG      An attempt was made to change the fault
                       characteristic on a nonexistent page.
    SS$_PAGNOTINREG    A page in the specified range is not in
                       process private adress space.
    SS$_PAGOWNVIO      The process attempted to change the protection
                       on a page owned by a more privileged access
                       mode.
Close Help