DOIO Read System Call
Initial semaphore settings:
req_serviced := 0;
req_pending := 0; device := 0; op_complete := 0;
DOIO(stream,
mode, identify device; wait(req_pending); wait(device);
amount, destination, perform error checks; pick IORB from locate device
semaphore); assemble
IORB; request
queue; descriptor;
place IORB on device initiate I/O; satisfy read request;
. request
queue; signal(device); signal(op_complete);
. signal(req_pending); wait(op_complete);
. exit; perform error
checks;
wait(req_serviced); perform housekeeping;
test error location; signal(req_serviced);
delete IORB;
Operating System Boundary Hardware
Boundary