Julian Elischer wrote: > Andrew Thompson wrote: > > > > Hi, > > > > > > Here is an aesthetic patch to change the usb kernel processes to threads, > > this hides them from the usual 'ps' output. Please test and review. > > > > ?1290 ??? ?DL ? ? 0:00.00 [usbus0] > > ?[lots and lots more...] > > ?1309 ??? ?DL ? ? 0:00.00 [usbus4] > > > > use kproc_kthread_add() > to create a seoarate usb process and make all the threads belong to > that process. > (kproc_kthread_add() will create a new process the first time > and add more threads to it the more it is run.) Patch updated with the various feedback. PID TT STAT TIME COMMAND 0 ?? DLs 0:00.38 [kernel] 1 ?? ILs 0:00.01 /sbin/init -- 2 ?? DL 0:09.66 [g_event] 3 ?? DL 0:00.20 [g_up] 4 ?? DL 0:00.20 [g_down] ... 18 ?? DL 0:00.06 [acpi_thermal] 19 ?? DL 0:00.04 [usb] % procstat -t 19 PID TID COMM TDNAME CPU PRI STATE WCHAN 19 100040 usb usbus0 0 20 sleep - 19 100041 usb usbus0 0 16 sleep - 19 100042 usb usbus0 0 20 sleep - 19 100043 usb usbus0 0 20 sleep - Andrew Index: usb_process.c =================================================================== --- usb_process.c (revision 196086) +++ usb_process.c (working copy) _at__at_ -63,10 +63,12 _at__at_ #endif #if (__FreeBSD_version >= 800000) +static struct proc *usbproc; #define USB_THREAD_CREATE(f, s, p, ...) \ - kproc_create((f), (s), (p), RFHIGHPID, 0, __VA_ARGS__) -#define USB_THREAD_SUSPEND(p) kproc_suspend(p,0) -#define USB_THREAD_EXIT(err) kproc_exit(err) + kproc_kthread_add((f), (s), &usbproc, (p), RFHIGHPID, \ + 0, "usb", __VA_ARGS__) +#define USB_THREAD_SUSPEND(p) kthread_suspend(p,0) +#define USB_THREAD_EXIT(err) kthread_exit() #else #define USB_THREAD_CREATE(f, s, p, ...) \ kthread_create((f), (s), (p), RFHIGHPID, 0, __VA_ARGS__) _at__at_ -207,8 +209,8 _at__at_ usb_proc_create(struct usb_process *up, struct mtx TAILQ_INIT(&up->up_qhead); - cv_init(&up->up_cv, "wmsg"); - cv_init(&up->up_drain, "dmsg"); + cv_init(&up->up_cv, "-"); + cv_init(&up->up_drain, "usbdrain"); if (USB_THREAD_CREATE(&usb_process, up, &up->up_ptr, pmesg)) { Index: usb_process.h =================================================================== --- usb_process.h (revision 196086) +++ usb_process.h (working copy) _at__at_ -49,7 +49,11 _at__at_ struct usb_process { struct cv up_cv; struct cv up_drain; +#if (__FreeBSD_version >= 800000) + struct thread *up_ptr; +#else struct proc *up_ptr; +#endif struct thread *up_curtd; struct mtx *up_mtx;Received on Fri Aug 14 2009 - 13:54:04 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:53 UTC