The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/sys/usched.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*
    2  * SYS/USCHED.H
    3  *
    4  *      Userland scheduler API
    5  * 
    6  * $DragonFly: src/sys/sys/usched.h,v 1.15 2008/04/21 15:24:47 dillon Exp $
    7  */
    8 
    9 #ifndef _SYS_USCHED_H_
   10 #define _SYS_USCHED_H_
   11 
   12 #if defined(_KERNEL) || defined(_KERNEL_STRUCTURES)
   13 
   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
   23 
   24 #define NAME_LENGTH 32
   25 
   26 struct lwp;
   27 struct proc;
   28 struct globaldata;
   29 
   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 proc *);
   44     void (*uload_update)(struct lwp *);
   45     void (*setcpumask)(struct usched *, cpumask_t);
   46     void (*yield)(struct lwp *);
   47     void (*changedcpu)(struct lwp *);
   48 };
   49 
   50 union usched_data {
   51     /*
   52      * BSD4 scheduler. 
   53      */
   54     struct {
   55         short   priority;       /* lower is better */
   56         char    unused01;       /* (currently not used) */
   57         char    rqindex;
   58         int     batch;          /* batch mode heuristic */
   59         int     estcpu;         /* dynamic priority modification */
   60         u_short rqtype;         /* protected copy of rtprio type */
   61         u_short unused02;
   62     } bsd4;
   63     struct {
   64         short   priority;       /* lower is better */
   65         char    forked;         /* lock cpu during fork */
   66         char    rqindex;
   67         short   estfast;        /* fast estcpu collapse mode */
   68         short   uload;          /* for delta uload adjustments */
   69         int     estcpu;         /* dynamic priority modification */
   70         u_short rqtype;         /* protected copy of rtprio type */
   71         u_short qcpu;           /* which cpu are we enqueued on? */
   72         u_short rrcount;        /* reset when moved to runq tail */
   73         u_short unused01;
   74         u_short unused02;
   75         u_short unused03;
   76     } dfly;
   77 
   78     int         pad[6];         /* PAD for future expansion */
   79 };
   80 
   81 /*
   82  * Flags for usched_ctl()
   83  */
   84 #define        USCH_ADD        0x00000001
   85 #define        USCH_REM        0x00000010
   86 
   87 #endif  /* _KERNEL || _KERNEL_STRUCTURES */
   88 
   89 #define USCHED_SET_SCHEDULER    0
   90 #define USCHED_SET_CPU          1
   91 #define USCHED_ADD_CPU          2
   92 #define USCHED_DEL_CPU          3
   93 #define USCHED_GET_CPU          4
   94 
   95 /*
   96  * Kernel variables and procedures, or user system calls.
   97  */
   98 #ifdef _KERNEL
   99 
  100 extern struct usched    usched_bsd4;
  101 extern struct usched    usched_dfly;
  102 extern struct usched    usched_dummy;
  103 extern cpumask_t usched_mastermask;
  104 extern int sched_ticks; /* From sys/kern/kern_clock.c */
  105 
  106 int usched_ctl(struct usched *, int);
  107 struct usched *usched_init(void);
  108 void usched_schedulerclock(struct lwp *, sysclock_t, sysclock_t);
  109 
  110 #endif
  111 
  112 #if !defined(_KERNEL) || defined(_KERNEL_VIRTUAL)
  113 
  114 int usched_set(pid_t, int, void *, int);
  115 
  116 #endif
  117 
  118 #endif
  119 

Cache object: 58da07c5b497595d44d06b403008cac8


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.