Specifications
Operating System Routines
EXE$DEBIT_BYTCNT(_NW), EXE$DEBIT_BYTCNT_BYTLM(_NW)
EXE$DEBIT_BYTCNT(_NW), EXE$DEBIT_BYTCNT_BYTLM(_NW)
Determine whether a job’s buffered I/O byte count quota usage permits the
process to be granted additional buffered I/O and, if so, adjust the job’s byte count
quota and byte limit.
Module
EXSUBROUT
Input
Location Contents
R1 Number of bytes to be deducted; bit 31, when set,
disables the routine’s check against IOC$GW_
MAXBUF
R4 Address of current PCB
PCB$L_STS PCB$V_SSRWAIT clear if the process should wait
for buffered-I/O byte quota; set if resource wait
mode is disabled
IOC$GW_MAXBUF Maximum number of buffered I/O bytes the system
allows to a single request
JIB$L_BYTCNT Job’s byte count usage quota
JIB$L_BYTLM Job’s byte limit (used by EXE$DEBIT_BYTCNT_
BYTLM and EXE$DEBIT_BYTCNT_BYTLM_NW)
Output
Location Contents
R0 SS$_NORMAL or SS$_EXQUOTA
R1 Number of bytes deducted; bit 31 cleared
JIB$L_BYTCNT Updated if successful
JIB$L_BYTLM Updated if successful (by EXE$DEBIT_BYTCNT_
BYTLM and EXE$DEBIT_BYTCNT_BYTLM_NW)
Synchronization
EXE$DEBIT_BYTCNT, EXE$DEBIT_BYTCNT_NW, EXE$DEBIT_BYTCNT_
BYTLM, and EXE$DEBIT_BYTCNT_BYTLM_NW raise IPL to IPL$_SYNCH
and obtain the JIB spinlock in a multiprocessing environment. As a result, their
callers cannot be executing above IPL$_SYNCH or hold any spinlock ranked
higher than JIB. (For instance, a driver fork process executing at IPL$_SYNCH
holding the IOLOCK8 fork lock can call these routines. It cannot, however, hold
the SCHED spinlock.)
EXE$DEBIT_BYTCNT, EXE$DEBIT_BYTCNT_NW, EXE$DEBIT_BYTCNT_
BYTLM, and EXE$DEBIT_BYTCNT_BYTLM_NW return control to their callers
at the caller’s IPL. The caller retains any spinlocks it held at the time of the call.
3–24