Specifications

Operating System Routines
EXE$DEBIT_BYTCNT_ALO, EXE$DEBIT_BYTCNT_BYTLM_ALO
Synchronization
EXE$DEBIT_BYTCNT_ALO and EXE$DEBIT_BYTCNT_BYTLM_ALO raise IPL
to IPL$_SYNCH and obtain the JIB spinlock in a multiprocessing environment.
Their callers cannot be executing above IPL$_SYNCH or hold any spinlock.
EXE$DEBIT_BYTCNT_ALO and EXE$DEBIT_BYTCNT_BYTLM_ALO return
control to their callers at IPL$_ASTDEL.
Description
EXE$DEBIT_BYTCNT_ALO checks whether a process has sufficient quota for
a buffer of the specified size and, if so, allocates the buffer from nonpaged pool
and deducts the corresponding number of bytes from the job’s byte count quota.
EXE$DEBIT_BYTCNT_BYTLM_ALO also adjusts the job’s byte limit. Both
routines round the value specified in R1 up to the nearest 16-byte boundary
before applying it to the JIB.
If there is insufficient nonpaged pool available for the buffer, these routines
return SS$_INSFMEM status to the caller.
If the process’s quota usage is too large, EXE$DEBIT_BYTCNT_ALO and
EXE$DEBIT_BYTCNT_BYTLM_ALO place the process into a resource wait state,
based on the setting of PCB$V_SSRWAIT, until sufficient quota is returned to the
job.
If bit 31 in R1 is clear, these routines compare the byte count in R1 against
IOC$GW_MAXBUF, returning an error if the system’s maximum buffer allotment
to a process is exceeded.
3–27