using System.*; namespace Proc; interface Thread { guid: "AE4A734E-EA8B-11D9-8142-000A95BB581A"; }; interface ThreadPriv { guid: "A592FD94-5945-11DA-B99F-000A95BB581A"; get_thread(Thread unpriv out); // Asynchronous blocking (i.e. calling this method from a different // thread) is not currently allowed. It may be later, using a // separate blocker field in the kernel. This would be mainly for // supporting debuggers, and would not take effect until the thread // returns to userspace (if currently blocked or executing kernel // code). block(Blocker blocker); // Like block, but with multiple blockers. The thread wakes when any // of the blockers have been unblocked. block_multi(Blocker[] blocker); }; interface ThreadSched { guid: "AEB5CD7C-EA8B-11D9-BE15-000A95BB581A"; // Set the thread's scheduling policy and parameters. Throws // InvalidArgument if sched is not a scheduler provided by the // local kernel, or if param is not of the subtype required by // sched. set_sched(Scheduler sched, SchedParams param); }; struct SchedParams virtual { guid: "1C406B42-2878-11DA-93B8-00112431A05E"; }; interface Scheduler { guid: "AF383690-EA8B-11D9-95D8-000A95BB581A"; }; interface Blocker { guid: "30D19964-5945-11DA-BC3B-000A95BB581A"; };