Date: Tue, 7 Nov 2000 10:45:04 -0800 (PST) From: Matt Dillon <dillon@earth.backplane.com> To: Jacques Fourie <jacques4i@yahoo.com> Cc: freebsd-hackers@FreeBSD.ORG Subject: Re: kernel stack size? Message-ID: <200011071845.eA7Ij4d81283@earth.backplane.com> References: <20001107132009.23436.qmail@web3504.mail.yahoo.com>
next in thread | previous in thread | raw e-mail | index | archive | help
:Hi : :Please excuse any silly questions, but I am stuck with :a problem that I can't find the answer for. : :I wrote a KLD module that performs encryption on :network packets in the kernel. Packets are intercepted :for encryption on a ethernet level (in ether_input() :and ether_output_frame() respectively). This module is :implemented on 4.1.1-RELEASE. : :For input packets I added my own NETISR as well as :interrupt queue. In the ether_input() routine the :packets are queued and a software interrupt scheduled. :Further processing on the packet then happens at a :priority of splnet(). : :If I do bulk data transfers (encrypted) everything :works fine until I run a shell script that does a :'ls -lR' in an infinite loop. A few "virtual time :alarm" messages appear and then a kernel panic. :Looking at the DDB output, it seems a lot like a :kernel stack overflow has resulted. Very strange :values for ebp and page faults on stack accesses is :making me think along these lines. : :Does anyone know where I can find more information :about the kernel stack at interrupt time (such as the :maximum size)? :I'm also not quite sure what the "virtual time alarm" :messages mean, can anyone help me out? : :jacques The stack is very small. You cannot safely allocate large structures on the stack -- I would limit your stack utilization to 256 bytes total to be safe. If you need to allocate large structures or arrays you need to do it at device-open and then save a reference that your interrupt can then use. -Matt To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200011071845.eA7Ij4d81283>