Date: Thu, 15 Nov 2007 22:13:46 GMT From: John Birrell <jb@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 129105 for review Message-ID: <200711152213.lAFMDkvw020447@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=129105 Change 129105 by jb@jb_freebsd1 on 2007/11/15 22:13:14 MFC proc/thread event handler changes. Affected files ... .. //depot/projects/dtrace7/src/sys/kern/kern_proc.c#2 edit .. //depot/projects/dtrace7/src/sys/kern/kern_thread.c#2 edit .. //depot/projects/dtrace7/src/sys/sys/eventhandler.h#2 edit Differences ... ==== //depot/projects/dtrace7/src/sys/kern/kern_proc.c#2 (text+ko) ==== @@ -54,6 +54,7 @@ #include <sys/user.h> #include <sys/jail.h> #include <sys/vnode.h> +#include <sys/eventhandler.h> #ifdef KTRACE #include <sys/uio.h> #include <sys/ktrace.h> @@ -130,6 +131,7 @@ struct proc *p; p = (struct proc *)mem; + EVENTHANDLER_INVOKE(process_ctor, p); return (0); } @@ -159,6 +161,7 @@ */ if (((p->p_flag & P_KTHREAD) != 0) && (td->td_altkstack != 0)) vm_thread_dispose_altkstack(td); + EVENTHANDLER_INVOKE(process_dtor, p); if (p->p_ksi != NULL) KASSERT(! KSI_ONQ(p->p_ksi), ("SIGCHLD queue")); } @@ -178,6 +181,7 @@ bzero(&p->p_mtx, sizeof(struct mtx)); mtx_init(&p->p_mtx, "process lock", NULL, MTX_DEF | MTX_DUPOK); mtx_init(&p->p_slock, "process slock", NULL, MTX_SPIN | MTX_RECURSE); + EVENTHANDLER_INVOKE(process_init, p); p->p_stats = pstats_alloc(); proc_linkup(p, td); sched_newproc(p, td); @@ -195,6 +199,7 @@ struct proc *p; p = (struct proc *)mem; + EVENTHANDLER_INVOKE(process_fini, p); pstats_free(p->p_stats); thread_free(FIRST_THREAD_IN_PROC(p)); mtx_destroy(&p->p_mtx); ==== //depot/projects/dtrace7/src/sys/kern/kern_thread.c#2 (text+ko) ==== @@ -49,6 +49,7 @@ #include <vm/vm.h> #include <vm/vm_extern.h> #include <vm/uma.h> +#include <sys/eventhandler.h> /* * thread related storage. @@ -126,6 +127,7 @@ * end of a context switch. */ td->td_critnest = 1; + EVENTHANDLER_INVOKE(thread_ctor, td); #ifdef AUDIT audit_thread_alloc(td); @@ -167,6 +169,7 @@ #ifdef AUDIT audit_thread_free(td); #endif + EVENTHANDLER_INVOKE(thread_dtor, td); free_unr(tid_unrhdr, td->td_tid); sched_newthread(td); } @@ -185,6 +188,7 @@ cpu_thread_setup(td); td->td_sleepqueue = sleepq_alloc(); td->td_turnstile = turnstile_alloc(); + EVENTHANDLER_INVOKE(thread_init, td); td->td_sched = (struct td_sched *)&td[1]; sched_newthread(td); umtx_thread_init(td); @@ -200,6 +204,7 @@ struct thread *td; td = (struct thread *)mem; + EVENTHANDLER_INVOKE(thread_fini, td); turnstile_free(td->td_turnstile); sleepq_free(td->td_sleepqueue); umtx_thread_fini(td); ==== //depot/projects/dtrace7/src/sys/sys/eventhandler.h#2 (text+ko) ==== @@ -182,11 +182,28 @@ typedef void (*exitlist_fn)(void *, struct proc *); typedef void (*forklist_fn)(void *, struct proc *, struct proc *, int); typedef void (*execlist_fn)(void *, struct proc *, struct image_params *); - +typedef void (*proc_ctor_fn)(void *, struct proc *); +typedef void (*proc_dtor_fn)(void *, struct proc *); +typedef void (*proc_init_fn)(void *, struct proc *); +typedef void (*proc_fini_fn)(void *, struct proc *); +EVENTHANDLER_DECLARE(process_ctor, proc_ctor_fn); +EVENTHANDLER_DECLARE(process_dtor, proc_dtor_fn); +EVENTHANDLER_DECLARE(process_init, proc_init_fn); +EVENTHANDLER_DECLARE(process_fini, proc_fini_fn); EVENTHANDLER_DECLARE(process_exit, exitlist_fn); EVENTHANDLER_DECLARE(process_fork, forklist_fn); EVENTHANDLER_DECLARE(process_exec, execlist_fn); +struct thread; +typedef void (*thread_ctor_fn)(void *, struct thread *); +typedef void (*thread_dtor_fn)(void *, struct thread *); +typedef void (*thread_fini_fn)(void *, struct thread *); +typedef void (*thread_init_fn)(void *, struct thread *); +EVENTHANDLER_DECLARE(thread_ctor, thread_ctor_fn); +EVENTHANDLER_DECLARE(thread_dtor, thread_dtor_fn); +EVENTHANDLER_DECLARE(thread_init, thread_init_fn); +EVENTHANDLER_DECLARE(thread_fini, thread_fini_fn); + typedef void (*uma_zone_chfn)(void *); EVENTHANDLER_DECLARE(nmbclusters_change, uma_zone_chfn); EVENTHANDLER_DECLARE(maxsockets_change, uma_zone_chfn);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200711152213.lAFMDkvw020447>
