*** sys/time.h.orig Tue Jun 20 10:49:20 1995 --- sys/time.h Tue Jul 18 02:04:55 1995 *************** *** 40,45 **** --- 40,49 ---- #include + #ifdef MRIT_USE_SETCALLOUT + #include + #endif /* MRIT_USE_SETCALLOUT + /* * Structure returned by gettimeofday(2) system call, * and used in other calls. *************** *** 111,116 **** --- 115,121 ---- #define ITIMER_REAL 0 #define ITIMER_VIRTUAL 1 #define ITIMER_PROF 2 + #define ITIMER_MULTIREAL 3 /* For use with MRITIMER */ struct itimerval { struct timeval it_interval; /* timer interval */ *************** *** 117,122 **** --- 122,149 ---- struct timeval it_value; /* current value */ }; + #ifdef MRITIMER + #ifdef _KERNEL + struct mrtimer { + long usecount; /* Incremented whenever we're freed. */ + struct itimerval expiretime; /* Absolute expire time. */ + struct proc *p; /* Process that owns this mrtimer, */ + /* or NULL if none (in free list). */ + struct timeval label; /* User label for this mrtimer. */ + struct mrtimer *next; /* Next mrtimer in list. */ + struct mrtimer *prev; /* Previous mrtimer in list (not */ + /* used in the free list) */ + #ifdef MRIT_USE_SETCALLOUT + struct callout_handle callout; /* Handle for this timer's callout. */ + #endif /* MRIT_USE_SETCALLOUT */ + }; + + extern int nmrtimer; /* Size of mrtimer array. */ + extern struct mrtimer *mrtimer; /* The array itself. */ + extern struct mrtimer *mrfree; /* A list of free mrtimer structures. */ + #endif /* _KERNEL */ + #endif /* MRITIMER */ + /* * Getkerninfo clock information structure */ *************** *** 132,137 **** --- 159,168 ---- int itimerfix __P((struct timeval *tv)); int itimerdecr __P((struct itimerval *itp, int usec)); void microtime __P((struct timeval *tv)); + #ifdef MRITIMER + /* Should this be here or in systm.h? */ + void mritexit __P((struct proc *p)); + #endif /* MRITIMER */ #else /* !_KERNEL */ #include