Specifications
Operating System Routines
ERL$DEVICERR, ERL$DEVICTMO, ERL$DEVICEATTN
ERL$DEVICERR, ERL$DEVICTMO, ERL$DEVICEATTN
Allocate an error message buffer and record in it information concerning the
error.
Module
ERRORLOG
Input
Location Contents
R5 Address of UCB
DDT$W_ERRORBUF Size of error message buffer in bytes
UCB$L_DEVCHAR Bit DEV$V_ELG set
UCB$W_FUNC Bit IO$V_INHERLOG clear
UCB$L_IRP Address of IRP currently being processed
(ERL$DEVICERR and ERL$DEVICTMO only)
UCB$L_ORB ORB address
Output
Location Contents
UCB$W_ERRCNT Incremented
UCB$L_EMB Address of error message buffer
UCB$L_STS UCB$V_ERLOGIP set
R0 through R11 Preserved
Synchronization
A driver calls ERL$DEVICERR, ERL$DEVICTMO, or ERL$DEVICEATTN,
at or above fork IPL, holding the corresponding fork lock in a multiprocessing
environment. These routines return control to the caller at the caller’s IPL. The
caller retains any spinlocks it held at the time of the call.
Description
ERL$DEVICERR and ERL$DEVICTMO log an error associated with a particular
I/O request. ERL$DEVICEATTN logs an error that is not associated with an I/O
request. Each of these routines performs the following steps:
• Increments UCB$W_ERRCNT to record a device error. If the error-log-in-
progress bit (UCB$V_ERLOGIP in UCB$L_STS) is set, the routine returns
control to its caller.
• Allocates from the current error log allocation buffer an error message buffer
of the length specified in the device’s DDT (in argument erlgbf to the DDTAB
macro). This allocation is performed at IPL$_EMB holding the EMB spinlock.
3–10