Andrew Thompson wrote: > 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 - the thread names have full printf capability.. how about giving them different names :-) usbus%d-%d > > > 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 - 15:48:55 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:53 UTC