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