/sys$common/syshlp/helplib.hlb System Services, $UPDSEC 64 (Alpha Only) *Conan The Librarian (sorry for the slow response - running on an old VAX) |
On Alpha systems, writes all pages (or only those pages modified by the current process) in an active private or global disk file section back into the section file on disk. One or more I/O requests are queued to perform the write operation. The $UPDSEC_64 service completes asynchronously. For synchronous completion, use the Update Global Section File on Disk and Wait ($UPDSEC_64W) service. This service accepts 64-bit addresses. Format SYS$UPDSEC_64 start_va_64 ,length_64 ,acmode ,updflg ,efn ,iosa_64 ,return_va_64 ,return_length_64 [,astadr_64 [,astprm_64]] C Prototype int sys$updsec_64 (void *start_va_64, unsigned __int64 length_64, unsigned int acmode, unsigned int updflg, unsigned int efn, struct _iosa *iosa_64, void *(*(return_va_64)), unsigned __int64 *return_length_64,...); Arguments start_va_64 OpenVMS usage:address type: quadword address access: read only mechanism: by value The starting virtual address of the pages to be written to the section file. The specified virtual address is rounded down to a CPU-specific page boundary. length_64 OpenVMS usage:byte count type: quadword (unsigned) access: read only mechanism: by value Length of the virtual address range to be written to the section file. The length specified is 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 on behalf of which the service is performed. 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. A page cannot be written to disk unless the access mode used by $UPDSEC_64 is equal to or more privileged than the access mode of the owner of the page to be written. updflg OpenVMS usage:mask_longword type: longword (unsigned) access: read only mechanism: by value The update specifier for read/write global sections. The updflg argument is a longword value. The value 0 (the default) specifies that all read/write pages in the global section are to be written to the section file on disk, whether or not they have been modified. The value UPDFLG$M_WRT_MODIFIED specifies that the caller is the only process actually writing the global section and that only those pages that were actually modified by the caller are to be written to the section file on disk. Definitions for this flag can be found in the file SECDEF.H in SYS$STARLET_C.TLB for C and in $SECDEF in STARLET.MLB for macro. efn OpenVMS usage:ef_number type: longword (unsigned) access: read_only mechanism: by value The event flag to be set when the section file on disk is actually updated. The efn argument is a longword specifying the number of the event flag; however, this service only uses the low-order byte. If you do not specify the efn, event flag 0 is used. When you invoke $UPDSEC_64, the specified event flag or event flag 0 is cleared. When the update operation is complete, the event flag is set. iosa_64 OpenVMS usage:io_status_area type: IOSA structure access: write only mechanism: by 32- or 64-bit reference The I/O status area to receive the final completion status of the updating operation. The iosa_64 argument is the 32- or 64- bit virtual address of the I/O status area. The I/O status area structure is 32 bytes in length. The I/O status area structure definition can be found in $IOSADEF in STARLET.MLB for macro and in the file IOSADEF.H in SYS$STARLET_C.TLB for C. When you call SYS$UPDSEC_64, the I/O status area is cleared. After the update operation is complete (that is, when all I/O to the disk is complete), the I/O status block is written as follows: o isoa$l_status (offset 0) The first word contains the condition value return by SYS$QIO, indicating the final completion status. The first bit in the second word is set only if an error occurred during the I/O operation and the error was a hardware write error. The remaining bits of the second word are zeros. o iosa$l_resd (offset 4) This field is reserved for future use by Compaq. The value in this field is unpredictable. o iosa$q_count_q (offset 8) This field is reserved for future use by Compaq. The value in this field is unpredictable. o iosa$ph_upsec_nowrt_va (offset 16) This field contains the virtual address of the first byte in the first disk block that was not written. In the case of an I/O error, this virtual address indicates the disk block for which the error occurred. o iosa$q_resq (offset 24) This field is reserved for future use by Compaq. The value in this field is unpredictable. return_va_64 OpenVMS usage:address type: quadword address access: write only mechanism: by 32- or 64-bit reference The process virtual address of the first page that was actually queued for writing (in the first I/O request) back to the section file on the disk. 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 length of the first I/O request to write modified pages back to the section file on disk. 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, in bytes, written by the first I/O request. astadr_64 OpenVMS usage:ast_procedure type: procedure value access: call without stack unwinding mechanism: by 32- or 64-bit reference The asynchronous system trap (AST) routine to be executed when the section file has been updated. The astadr_64 argument is the 32- or 64-bit address of this routine. If you specify the astadr_64 argument, the AST routine executes at the access mode from which the section file update was requested. astprm_64 OpenVMS usage:user_arg type: quadword access: read only mechanism: by value The AST parameter to be passed to the AST routine. The astprm_64 argument is a quadword argument that is passed to the AST routine.
|