4 * Userland scheduler API
6 * $DragonFly: src/sys/sys/usched.h,v 1.7 2005/11/16 02:24:33 dillon Exp $
10 #define _SYS_USCHED_H_
12 #if defined(_KERNEL) || defined(_KERNEL_STRUCTURES)
15 #include <sys/queue.h>
22 TAILQ_ENTRY(usched
) entry
;
25 void (*usched_register
)(void);
26 void (*usched_unregister
)(void);
27 void (*acquire_curproc
)(struct lwp
*);
28 void (*release_curproc
)(struct lwp
*);
29 void (*select_curproc
)(struct globaldata
*);
30 void (*setrunqueue
)(struct lwp
*);
31 void (*remrunqueue
)(struct lwp
*);
32 void (*schedulerclock
)(struct lwp
*, sysclock_t
, sysclock_t
);
33 void (*recalculate
)(struct lwp
*);
34 void (*resetpriority
)(struct lwp
*);
35 void (*heuristic_forking
)(struct lwp
*, struct lwp
*);
36 void (*heuristic_exiting
)(struct lwp
*, struct lwp
*);
37 void (*setcpumask
)(struct usched
*, cpumask_t
);
45 short priority
; /* lower is better */
46 char interactive
; /* (currently not used) */
49 int estcpu
; /* dynamic priority modification */
52 int pad
[4]; /* PAD for future expansion */
56 * Flags for usched_ctl()
58 #define USCH_ADD 0x00000001
59 #define USCH_REM 0x00000010
61 #endif /* _KERNEL || _KERNEL_STRUCTURES */
64 * Kernel variables and procedures, or user system calls.
68 extern struct usched usched_bsd4
;
70 int usched_ctl(struct usched
*, int);
71 struct usched
*usched_init(void);
75 int usched_set(const char *, int);