40c89d8722023f7913e8b47f4079d70b5c652424
[dragonfly.git] / sys / sys / usched.h
1 /*
2  * SYS/USCHED.H
3  *
4  *      Userland scheduler API
5  * 
6  * $DragonFly: src/sys/sys/usched.h,v 1.3 2005/06/26 22:03:23 dillon Exp $
7  */
8
9 #ifndef _SYS_USCHED_H_
10 #define _SYS_USCHED_H_
11
12 #ifndef _SYS_QUEUE_H_
13 #include <sys/queue.h>
14 #endif
15
16 struct proc;
17 struct globaldata;
18
19 struct usched {
20     TAILQ_ENTRY(usched) entry;
21     const char *name;
22     const char *desc;
23     void (*acquire_curproc)(struct proc *);
24     void (*release_curproc)(struct proc *);
25     void (*select_curproc)(struct globaldata *);
26     void (*setrunqueue)(struct proc *);
27     void (*remrunqueue)(struct proc *);
28     void (*resetpriority)(struct proc *);
29     void (*heuristic_forking)(struct proc *, struct proc *);
30     void (*heuristic_exiting)(struct proc *, struct proc *);
31 };
32
33 union usched_data {
34     /*
35      * BSD4 scheduler. 
36      */
37     struct {
38         short   priority;       /* lower is better */
39         char    interactive;    /* (currently not used) */
40         char    rqindex;
41         u_int   childscpu;
42     } bsd4;
43
44     int         pad[4];         /* PAD for future expansion */
45 };
46
47 extern struct usched    usched_bsd4;
48
49 #endif
50