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.