4 * Userland scheduler API
6 * $DragonFly: src/sys/sys/usched.h,v 1.8 2006/03/23 14:04:24 drhodus Exp $
10 #define _SYS_USCHED_H_
12 #if defined(_KERNEL) || defined(_KERNEL_STRUCTURES)
15 #include <sys/queue.h>
18 #define NAME_LENGTH 32
24 TAILQ_ENTRY(usched) entry;
27 void (*usched_register)(void);
28 void (*usched_unregister)(void);
29 void (*acquire_curproc)(struct lwp *);
30 void (*release_curproc)(struct lwp *);
31 void (*select_curproc)(struct globaldata *);
32 void (*setrunqueue)(struct lwp *);
33 void (*remrunqueue)(struct lwp *);
34 void (*schedulerclock)(struct lwp *, sysclock_t, sysclock_t);
35 void (*recalculate)(struct lwp *);
36 void (*resetpriority)(struct lwp *);
37 void (*heuristic_forking)(struct lwp *, struct lwp *);
38 void (*heuristic_exiting)(struct lwp *, struct lwp *);
39 void (*setcpumask)(struct usched *, cpumask_t);
47 short priority; /* lower is better */
48 char interactive; /* (currently not used) */
51 int estcpu; /* dynamic priority modification */
54 int pad[4]; /* PAD for future expansion */
58 * Flags for usched_ctl()
60 #define USCH_ADD 0x00000001
61 #define USCH_REM 0x00000010
63 #endif /* _KERNEL || _KERNEL_STRUCTURES */
66 * Kernel variables and procedures, or user system calls.
70 extern struct usched usched_bsd4;
72 int usched_ctl(struct usched *, int);
73 struct usched *usched_init(void);
77 int usched_set(const char *, int);