kthread/kproc diff 2
Julian Elischer
julian at elischer.org
Wed Oct 24 23:10:14 PDT 2007
newest version..
this version has been tested somewhat, and adds a new function.
the new function, when given a pointer to a pointer to a proc, will
make a new kproc when the proc * is NULL (i.e. the first time it is called)
and fill it in, and therafter, add new kthreads to that process.
it has a rather clumsy name of kproc_kthread_create, so if you don't
like it sugeest something better.. it uses kproc_create and kthread_create.
after applying this patch top -SH shows the following:
last pid: 35036; load averages: 0.24, 0.05, 0.09 up 0+08:15:52
23:04:13
85 processes: 5 running, 62 sleeping, 18 waiting
CPU states: 0.1% user, 0.0% nice, 0.0% system, 0.0% interrupt, 99.9%
idle
Mem: 39M Active, 792M Inact, 138M Wired, 1060K Cache, 112M Buf, 2038M Free
Swap: 6144M Total, 6144M Free
PID USERNAME PRI NICE SIZE RES STATE C TIME WCPU COMMAND
10 root 171 ki31 0K 32K CPU3 3 30.3H 98.97% {idle: cpu3}
10 root 171 ki31 0K 32K CPU2 2 30.3H 98.97% {idle: cpu2}
10 root 171 ki31 0K 32K CPU0 0 30.3H 98.58% {idle: cpu0}
10 root 171 ki31 0K 32K RUN 1 30.3H 98.14% {idle: cpu1}
25 root 20 - 0K 8K syncer 2 2:12 0.73% syncer
11 root -32 - 0K 136K WAIT 0 15:55 0.54% {swi4:
clock sio}
11 root -24 - 0K 136K WAIT 0 15:55 0.00% {swi6:
Giant task}
11 root -24 - 0K 136K WAIT 1 15:55 0.00% {swi6: task
queue}
11 root -28 - 0K 136K WAIT 2 15:55 0.00% {swi5: +}
11 root -36 - 0K 136K WAIT 0 15:55 0.00% {swi3: vm}
11 root -40 - 0K 136K WAIT 0 15:55 0.00% {swi2: cambio}
11 root -44 - 0K 136K WAIT 0 15:55 0.00% {swi1: net}
11 root -48 - 0K 136K WAIT 0 15:55 0.00% {swi0: uart
sio}
11 root -52 - 0K 136K WAIT 0 15:55 0.00% {irq9: acpi0}
11 root -60 - 0K 136K WAIT 0 15:55 0.00% {irq12: psm0}
11 root -60 - 0K 136K WAIT 0 15:55 0.00% {irq1: atkbd0}
11 root -64 - 0K 136K WAIT 0 15:55 0.00% {irq5: ohci0}
11 root -64 - 0K 136K WAIT 0 15:55 0.00% {irq15: ata1}
11 root -64 - 0K 136K WAIT 0 15:55 0.00% {irq14: ata0}
11 root -68 - 0K 136K WAIT 0 15:55 0.00% {irq28: bge0}
11 root -68 - 0K 136K WAIT 0 15:55 0.00% {irq20: fxp0}
11 root -68 - 0K 136K WAIT 0 15:55 0.00% {irq29: bge1}
19 root -68 - 0K 8K - 2 4:56 0.00% dummynet
12 root -16 - 0K 8K - 1 0:16 0.00% yarrow
2 root -8 - 0K 8K - 2 0:06 0.00% g_event
3 root -8 - 0K 8K - 2 0:05 0.00% g_up
[etc]
top -S just shows:
last pid: 35040; load averages: 0.09, 0.04, 0.08 up 0+08:16:48
23:05:09
85 processes: 5 running, 62 sleeping, 18 waiting
CPU states: 0.1% user, 0.0% nice, 0.0% system, 0.0% interrupt, 99.9%
idle
Mem: 39M Active, 792M Inact, 138M Wired, 1060K Cache, 112M Buf, 2038M Free
Swap: 6144M Total, 6144M Free
PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND
10 root 4 171 ki31 0K 32K CPU0 0 30.3H 396.09% idled
11 root 17 -60 - 0K 136K WAIT 0 15:56 0.00% interd
19 root 1 -68 - 0K 8K - 2 4:56 0.00% dummynet
25 root 1 20 - 0K 8K syncer 1 2:12 0.00% syncer
[etc]
other current kprocs can be turned into kthreads with minimal
(usually a few seconds) edits
note kthread_create() has grown an extra argument, a struct proc *
that is used to tell it which kproc to add the thread to.
comments?
code-reviews?
ps -auxH -Otdnam gives output different from what I'd expect
and strange messages appear on the console. so comments on that
(the ps diffs) are definitly requested.
More information about the freebsd-current
mailing list