Specifications
Device Driver Entry Points
Cloned UCB Routine
UCB$W_CHARGE(R2) Mailbox byte quota charge (UCB$W_SIZE)
UCB$W_REFC(R2) 0
UCB$L_STS(R2) UCB$V_DELETEUCB set, UCB$V_ONLINE set
UCB$W_DEVSTS(R2) UCB$V_DELMBX set if DEV$V_MBX is set in
UCB$L_DEVCHAR(R2)
UCB$L_OPCNT(R2) 0
UCB$L_SVAPTE(R2) 0
UCB$W_BOFF(R2) 0
UCB$W_BCNT(R2) 0
UCB$L_ORB(R2) Address of cloned ORB
ORB$L_OWNER
of template ORB
UIC of current process
ORB$L_ACL_MUTEX
of template ORB
FFFF
16
ORB$W_FLAGS
of template ORB
ORB$V_PROT_16 set
ORB$W_PROT
of template ORB
0
ORB$L_ACL_COUNT
of template ORB
0
ORB$L_ACL_DESC
of template ORB
0
ORB$R_MIN_CLASS
of template ORB
0 in first longword
Exit
A cloned UCB routine issues an RSB instruction to return control to
EXE$ASSIGN. If the routine returns error status in R0, EXE$ASSIGN undoes
the process of UCB cloning and completes with failure status in R0.
Description
When a process requests that a channel be assigned to a template device,
EXE$ASSIGN does not assign the channel to the template device itself. Rather,
it creates a copy of the template device’s UCB and ORB, initializing and clearing
certain fields as appropriate.
The driver’s cloned UCB routine verifies the contents of these fields and completes
their initialization.
4–7