]> git.buserror.net Git - polintos/scott/priv.git/blob - idl/thread.idl
Initial checkin from Perforce.
[polintos/scott/priv.git] / idl / thread.idl
1 using System.*;
2
3 namespace Proc;
4
5 interface Thread {
6         guid: "AE4A734E-EA8B-11D9-8142-000A95BB581A";
7 };
8
9 interface ThreadPriv {
10         guid: "A592FD94-5945-11DA-B99F-000A95BB581A";
11
12         get_thread(Thread unpriv out);
13         
14         // Asynchronous blocking (i.e. calling this method from a different
15         // thread) is not currently allowed.  It may be later, using a
16         // separate blocker field in the kernel.  This would be mainly for
17         // supporting debuggers, and would not take effect until the thread
18         // returns to userspace (if currently blocked or executing kernel
19         // code).
20         
21         block(Blocker blocker);
22         
23         // Like block, but with multiple blockers.  The thread wakes when any
24         // of the blockers have been unblocked.
25         
26         block_multi(Blocker[] blocker);
27 };
28
29 interface ThreadSched {
30         guid: "AEB5CD7C-EA8B-11D9-BE15-000A95BB581A";
31
32         // Set the thread's scheduling policy and parameters.  Throws
33         // InvalidArgument if sched is not a scheduler provided by the
34         // local kernel, or if param is not of the subtype required by
35         // sched.
36         
37         set_sched(Scheduler sched, SchedParams param);
38 };
39
40 struct SchedParams virtual {
41         guid: "1C406B42-2878-11DA-93B8-00112431A05E";
42 };
43
44 interface Scheduler {
45         guid: "AF383690-EA8B-11D9-95D8-000A95BB581A";
46 };
47
48 interface Blocker {
49         guid: "30D19964-5945-11DA-BC3B-000A95BB581A";
50 };