13.25 procxmt (4204)

This procedure is executed by the child process under the influence of data left by the parent in the ipc structure.

4209:

If “ipc.ip_lock” is set wrongly for the current process, then certainly the rest of “ipc” should be ignored.

After “stop” (4027) calls “swtch”, the chide process is restarted by one of three calls on “setrun” which leave the “STRC” and “SWTED” flags in the state indicated:

   

STRC

SWTED

ipc.ipc_lock

exit

(3254)

set

set

arbitrary

wait

(3310)

reset

reset

arbitrary

ptrace

(4188)

set

reset

properly set

In the third case “ptrace” will always set “ipc.ip_lock” properly, before the child is restarted, so that there is then no chance of the test on 4209 into “ipc” failing.

In the second case, where the parent has ignored the child, “procxmt” will never in fact be called.

By executing the statement “return(0)”; on line 4210, “procxmt” forces “stop” to loop back to line 4020. In the case where the parent has already died, the test on line 4022 will then fail, and a call on “exit” (4032) will result.

4211:

Store the value of “ipc.ip_req” before resetting the latter, “wake up” the parent, and select the next action as indicated.

The various actions are adequately explained in Section “PTRACE (II)” of the UPM, with the one qualification that cases 1, 2 and 4, 5 are documented the wrong way around (i.e. “I” and “D” spaces respectively, not “D” and “I”!). Section Three

Section Three is concerned with basic input/output operations between the main memory and disk storage.

These operations are fundamental to the activities of program swapping and the creation and referencing of disk files.

This section also introduces procedures for the use and manipulation of the large (512 byte) buffers.