diff options
author | davidxu <davidxu@FreeBSD.org> | 2005-12-09 05:43:26 +0000 |
---|---|---|
committer | davidxu <davidxu@FreeBSD.org> | 2005-12-09 05:43:26 +0000 |
commit | 1628e1667744338d6f21842e80f652dd2a45a29f (patch) | |
tree | 7d092417a4d81070dd1ec0f13013bc3b5b175ec2 /sys/kern/kern_time.c | |
parent | 9c2d0a195dee46f5e5170c1aec049f3ea7491d2d (diff) | |
download | FreeBSD-src-1628e1667744338d6f21842e80f652dd2a45a29f.zip FreeBSD-src-1628e1667744338d6f21842e80f652dd2a45a29f.tar.gz |
Register itimers_event_hook as a kernel event handler, so I don't
have to duplicate code to call it in exec() and exit1().
Diffstat (limited to 'sys/kern/kern_time.c')
-rw-r--r-- | sys/kern/kern_time.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/sys/kern/kern_time.c b/sys/kern/kern_time.c index 4cba08f..5bbd2f0 100644 --- a/sys/kern/kern_time.c +++ b/sys/kern/kern_time.c @@ -39,6 +39,7 @@ __FBSDID("$FreeBSD$"); #include <sys/lock.h> #include <sys/mutex.h> #include <sys/sysproto.h> +#include <sys/eventhandler.h> #include <sys/resourcevar.h> #include <sys/signalvar.h> #include <sys/kernel.h> @@ -86,6 +87,7 @@ static void itimer_enter(struct itimer *); static void itimer_leave(struct itimer *); static struct itimer *itimer_find(struct proc *, timer_t, int); static void itimers_alloc(struct proc *); +static void itimers_event_hook(void *arg, struct proc *p); static int realtimer_create(struct itimer *); static int realtimer_gettime(struct itimer *, struct itimerspec *); static int realtimer_settime(struct itimer *, int, @@ -889,6 +891,10 @@ itimer_start(void) p31b_setcfg(CTL_P1003_1B_TIMERS, 200112L); p31b_setcfg(CTL_P1003_1B_DELAYTIMER_MAX, INT_MAX); p31b_setcfg(CTL_P1003_1B_TIMER_MAX, TIMER_MAX); + EVENTHANDLER_REGISTER(process_exit, itimers_event_hook, + (void *)ITIMER_EV_EXIT, EVENTHANDLER_PRI_ANY); + EVENTHANDLER_REGISTER(process_exec, itimers_event_hook, + (void *)ITIMER_EV_EXEC, EVENTHANDLER_PRI_ANY); } int @@ -1504,11 +1510,12 @@ itimers_alloc(struct proc *p) } /* Clean up timers when some process events are being triggered. */ -void -itimers_event_hook(struct proc *p, int event) +static void +itimers_event_hook(void *arg, struct proc *p) { struct itimers *its; struct itimer *it; + int event = (int)arg; int i; if (p->p_itimers != NULL) { |