next up previous
Next: Memory Up: Scheduling Previous: Scheduling

Wakeup Predicates

Wakeup predicates are predicates on the system state that the kernel periodically evaluates. When the predicates are true the environment associated with them has its u_status set to U_RUN. Rather than use the raw kernel interface for predicates you should use ExOS's wrappers.[*]

Wakeup predicates are specified using a simple language with only an unsigned integer type. The predicate is a sum-of-terms in which each term is a product of ``value op value'' triples in postfix. Each value can either be a literal or the contents of a memory location. The op can be equal, not equal, less then, etc.

Additionally, tags can be associated with each product so that when a predicate evaluates to true and a process is moved from sleeping to runnable the process can tell which product triggered the wakeup. A tag is simply an integer specified with the WK_TAG instruction.

Thomas Pinckney