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.