Lacking input on its high priority queue, the daemon works its way through its device node list looking for any node that has one or more tasks waiting to run pending on the semaphore of the node. If such a node is found, the daemon posts to the node's semaphore and the pending task runs. Meanwhile the daemon is pending on its mailbox, waiting for the client task to yield by posting to the daemon mailbox.alphabetic index hierarchy of classesThe order by which the daemon traverses its node list is 'path order', which eliminates unnecessary trunk/limb/branch/stem/twig switch state changes by offering each node an opportunity to be spoken to while the daemon is visiting its bucket.
However, before each of the daemon's iterations through its node list, the daemon checks its high priority message queue for incoming commands. The daemon drops everything and executes the command. Available commands include loading/dumping a device topology configuration file, running an exhaustive trunk/limb/branch... node search, and a preemptory command to switch the bus state to enable communication with a particular device.
Using the bus preempt command, a task can gain the fastest possible control of the bus and the daemon just picks up where it left off after all high priority requests are satisfied.
Copyright © 1996
Eliot W. Dudley
All rights reserved.
|
generated by doc++