1 /* 2 * SYS/USCHED.H 3 * 4 * Userland scheduler API 5 * 6 * $DragonFly: src/sys/sys/usched.h,v 1.5 2005/06/29 01:25:06 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 (*schedulerclock)(struct proc *, sysclock_t, sysclock_t); 29 void (*recalculate)(struct proc *); 30 void (*resetpriority)(struct proc *); 31 void (*heuristic_forking)(struct proc *, struct proc *); 32 void (*heuristic_exiting)(struct proc *, struct proc *); 33 }; 34 35 union usched_data { 36 /* 37 * BSD4 scheduler. 38 */ 39 struct { 40 short priority; /* lower is better */ 41 char interactive; /* (currently not used) */ 42 char rqindex; 43 int origcpu; 44 int estcpu; /* dynamic priority modification */ 45 } bsd4; 46 47 int pad[4]; /* PAD for future expansion */ 48 }; 49 50 extern struct usched usched_bsd4; 51 52 #endif 53 54