Switched back to using pthread_create versus lwp_create.
[dragonfly/vkernel-mp.git] / sys / sys / usched.h
blob4276334f1955c4a8768adb19699080338554a617
1 /*
2 * SYS/USCHED.H
4 * Userland scheduler API
5 *
6 * $DragonFly: src/sys/sys/usched.h,v 1.12 2006/06/10 22:19:39 dillon Exp $
7 */
9 #ifndef _SYS_USCHED_H_
10 #define _SYS_USCHED_H_
12 #if defined(_KERNEL) || defined(_KERNEL_STRUCTURES)
14 #ifndef _SYS_TYPES_H_
15 #include <sys/types.h>
16 #endif
17 #ifndef _SYS_QUEUE_H_
18 #include <sys/queue.h>
19 #endif
20 #ifndef _SYS_SYSTIMER_H_
21 #include <sys/systimer.h>
22 #endif
24 #define NAME_LENGTH 32
26 struct lwp;
27 struct proc;
28 struct globaldata;
30 struct usched {
31 TAILQ_ENTRY(usched) entry;
32 const char *name;
33 const char *desc;
34 void (*usched_register)(void);
35 void (*usched_unregister)(void);
36 void (*acquire_curproc)(struct lwp *);
37 void (*release_curproc)(struct lwp *);
38 void (*setrunqueue)(struct lwp *);
39 void (*schedulerclock)(struct lwp *, sysclock_t, sysclock_t);
40 void (*recalculate)(struct lwp *);
41 void (*resetpriority)(struct lwp *);
42 void (*heuristic_forking)(struct lwp *, struct lwp *);
43 void (*heuristic_exiting)(struct lwp *, struct lwp *);
44 void (*setcpumask)(struct usched *, cpumask_t);
47 union usched_data {
49 * BSD4 scheduler.
51 struct {
52 short priority; /* lower is better */
53 char unused01; /* (currently not used) */
54 char rqindex;
55 int origcpu;
56 int estcpu; /* dynamic priority modification */
57 u_short rqtype; /* protected copy of rtprio type */
58 u_short unused02;
59 } bsd4;
61 int pad[4]; /* PAD for future expansion */
65 * Flags for usched_ctl()
67 #define USCH_ADD 0x00000001
68 #define USCH_REM 0x00000010
70 #endif /* _KERNEL || _KERNEL_STRUCTURES */
72 #define USCHED_SET_SCHEDULER 0
73 #define USCHED_SET_CPU 1
74 #define USCHED_ADD_CPU 2
75 #define USCHED_DEL_CPU 3
78 * Kernel variables and procedures, or user system calls.
80 #ifdef _KERNEL
82 extern struct usched usched_bsd4;
83 extern struct usched usched_dummy;
85 int usched_ctl(struct usched *, int);
86 struct usched *usched_init(void);
88 #else
90 int usched_set(pid_t, int, void *, int);
92 #endif
94 #endif