home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 15 / 15.iso / s / s053 / 8.ddi / usr / include / sys / disp.h < prev    next >
Encoding:
C/C++ Source or Header  |  1990-12-08  |  2.5 KB  |  98 lines

  1. /*    Copyright (c) 1990 UNIX System Laboratories, Inc.    */
  2. /*    Copyright (c) 1984, 1986, 1987, 1988, 1989, 1990 AT&T    */
  3. /*      All Rights Reserved      */
  4.  
  5. /*    THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF         */
  6. /*    UNIX System Laboratories, Inc.                         */
  7. /*    The copyright notice above does not evidence any       */
  8. /*    actual or intended publication of such source code.    */
  9.  
  10. #ifndef _SYS_DISP_H
  11. #define _SYS_DISP_H
  12.  
  13. #ident    "@(#)/usr/include/sys/disp.h.sl 1.1 4.0 12/08/90 5628 AT&T-USL"
  14.  
  15. #ifndef _SYS_PRIOCNTL_H
  16. #include <sys/priocntl.h>
  17. #endif
  18.  
  19.  
  20. /*
  21.  * The following is the format of a dispatcher queue entry.
  22.  */
  23. typedef struct dispq {
  24.     struct proc    *dq_first;    /* first proc on queue or NULL */
  25.     struct proc    *dq_last;    /* last proc on queue or NULL */
  26.     int        dq_sruncnt;    /* no. of loaded, runnable procs on queue */
  27. } dispq_t;
  28.  
  29.  
  30. #ifdef _KERNEL
  31.  
  32. /*
  33.  * Global scheduling variables.
  34.  */
  35. extern int    runrun;        /* preemption flag */
  36. extern int    kprunrun;    /* kernel preemption flag */
  37. extern int    npwakecnt;    /* count of non-preemptive wakeups */
  38. extern struct proc *curproc;    /* currently running process */
  39. extern int    curpri;        /* priority of current process */
  40. extern int    maxrunpri;    /* priority of highest priority active queue */
  41.  
  42.  
  43. /*
  44.  * Public scheduling functions.
  45.  */
  46. #if defined(__STDC__)
  47.  
  48. extern boolean_t    dispdeq(proc_t *pp);
  49. extern int    getcid(char *clname, id_t *cidp);
  50. extern int    parmsin(pcparms_t *parmsp, proc_t *reqpp, proc_t *targpp);
  51. extern int    parmsout(pcparms_t *parmsp, proc_t *reqpp, proc_t *targpp);
  52. extern int    parmsset(pcparms_t *parmsp, proc_t *reqpp, proc_t *targpp);
  53. extern void    dispinit();
  54. extern void    getglobpri(pcparms_t *parmsp, int *globprip);
  55. extern void    parmsget(proc_t *pp, pcparms_t *parmsp);
  56. extern void    preempt();
  57. extern void    setbackdq(proc_t *pp);
  58. extern void    setfrontdq(proc_t *pp);
  59. #ifndef KPERF
  60. extern void    swtch();
  61. #endif /* KPERF */
  62. extern void    dq_sruninc(int pri);
  63. extern void    dq_srundec(int pri);
  64.  
  65. #else
  66.  
  67. extern boolean_t    dispdeq();
  68. extern int    getcid(), parmsin(), parmsout(), parmsset();
  69. extern void    dispinit(), getglobpri(), parmsget(), preempt();
  70. extern void    setbackdq(), setfrontdq(), swtch(), dq_sruninc(), dq_srundec();
  71.  
  72. #endif    /* __STDC__ */
  73.  
  74.  
  75. #ifdef    KPERF
  76. #define PREEMPT() \
  77. { \
  78.     if (kprunrun != 0) { \
  79.         preempt(); \
  80.     } \
  81.     else if (kpftraceflg) { \
  82.         asm("  movl    %eip, Kpc"); \
  83.         kperf_write(KPT_PREEMPT,Kpc,curproc); \
  84.     } \
  85. }
  86.  
  87. #else    /* !KPERF */
  88.  
  89. #define    PREEMPT()    if (kprunrun != 0){ \
  90.                 preempt(); \
  91.             }
  92.  
  93. #endif    /* KPERF */
  94.  
  95. #endif    /* _KERNEL */
  96.  
  97. #endif    /* _SYS_DISP_H */
  98.