tech-kern archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
calling soo_write() from itimer handler
Hello,
I have kernel 10.1 rebuilt with DEBUG LOCKDEBUG and DIAGNOSTIC flags to
test my kernel module.
Kernel module contains one second periodic timer (itimer_init()
itimer_set()...) and it's timer handler calls soo_write().
soo_write() send several bytes of data received in user mode.
When used release kernel 10.1 then it runs and soo_write() does its work
fine. In my debug version of kernel compiled with above flags it stops
on assert_sleepable(), stack is added below.
My questions are:
If soo_write() cannot be called from software interrupt what should I
change to call soo_write() on kernel timer tick ?
and
What can be danger if I ignore it in release version of kernel ?
and
Can I disable only this one check with some runtime kernel flag when
used my custom built kernel ?
3 0xffffffff80e3b417 in panic (fmt=fmt@entry=0xffffffff816cb9d8 "%s: %s
caller=%p") at /usr/src/sys/kern/subr_prf.c:208
#4 0xffffffff80dd9ce8 in assert_sleepable () at
/usr/src/sys/kern/kern_lock.c:106
#5 0xffffffff80e382a1 in pool_cache_get_paddr (pc=0xfffff1afc9228040,
flags=flags@entry=257, pap=pap@entry=0x0 <pslist_reader_first>)
at /usr/src/sys/kern/subr_pool.c:2722
#6 0xffffffff80e70c64 in m_get (how=how@entry=0, type=type@entry=1) at
/usr/src/sys/kern/uipc_mbuf.c:538
#7 0xffffffff80e70d7c in m_gethdr (how=how@entry=0, type=type@entry=1)
at /usr/src/sys/kern/uipc_mbuf.c:567
#8 0xffffffff80e7bda9 in sosend (so=0xfffff1ae189a1978, addr=0x0
<pslist_reader_first>, uio=0xffffc70384d88e68, top=<optimized out>,
control=0x0 <pslist_reader_first>, flags=0, l=0xfffff1adc465b340)
at /usr/src/sys/kern/uipc_socket.c:1004
#9 0xffffffff80e5ba19 in soo_write (fp=<optimized out>,
offset=<optimized out>, uio=<optimized out>, cred=<optimized out>,
flags=<optimized out>)
at /usr/src/sys/kern/sys_socket.c:119
#10 0xffffffff8200222f in SendMsgToUser ()
#11 0xffffffff82004849 in MySetSyncUserObject ()
#12 0xffffffff820162b1 in MyCounterTimer ()
#13 0xffffffff82004a53 in NetBSDTimerHandler ()
#14 0xffffffff80e0d60f in itimer_callout (arg=0xfffff1addffe6a38) at
/usr/src/sys/kern/kern_time.c:843
#15 0xffffffff80e10642 in callout_softclock (v=<optimized out>) at
/usr/src/sys/kern/kern_timeout.c:861
#16 0xffffffff80dffa9d in softint_execute (s=2, l=0xfffff1adc465b340) at
/usr/src/sys/kern/kern_softint.c:597
Home |
Main Index |
Thread Index |
Old Index