usb kthreads
Andrew Thompson
andy at fud.org.nz
Fri Aug 21 12:57:46 UTC 2009
On 13/08/2009, at 18:54, Julian Elischer <julian at elischer.org> 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]
>> After the patch they can be seen as kernel threads.
>> PID TID COMM TDNAME CPU PRI STATE
>> WCHAN 0 100000 kernel swapper 0 68
>> sleep sched 0 100009 kernel firmware taskq
>> 0 92 sleep - 0 100020 kernel kqueue
>> taskq 0 92 sleep - 0 100021 kernel
>> acpi_task_0 0 92 sleep - 0 100022
>> kernel acpi_task_1 0 92 sleep - 0
>> 100023 kernel acpi_task_2 0 92 sleep
>> - 0 100027 kernel thread taskq 0 92
>> sleep - 0 100031 kernel bwi0 taskq
>> 0 16 sleep - 0 100032 kernel bwi0
>> taskq 0 16 sleep - 0 100106
>> kernel usbus0 0 20 sleep wmsg 0
>> 100107 kernel usbus0 0 16 sleep
>> wmsg 0 100108 kernel usbus0 0 20
>> sleep wmsg 0 100109 kernel usbus0
>> 0 20 sleep wmsg [ ... ]
>> 0 100127 kernel usbus4 0 20 sleep
>> wmsg Andrew
>
> 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.)
I have found a problem with this use of kproc_kthread_add where all
the threads can exit (unload all hci modules) and the proc exits. On
the next thread add it panics on a stale proc pointer. It may be
easier just to use kthread_create which adds on proc0.
Andrew
More information about the freebsd-current
mailing list