kern/99979: Get Ready for Kernel Module in C++

M. Warner Losh imp at bsdimp.com
Sat Jul 15 19:47:37 UTC 2006


In message: <20060714074419.GC14113 at britannica.bec.de>
            Joerg Sonnenberger <joerg at britannica.bec.de> writes:
: On Thu, Jul 13, 2006 at 11:16:18AM +0530, Kamal R. Prasad wrote:
: > Im sorry I didn't understand you. setjmp() stores a few register contents
: > [notably ip] in a jmpbuf -which are restored after a longjmp(). How is the
: > try/catch mechanism more efficient than a setjmp()/longjmp() in terms of
: > space/time complexity?
: 
: Because you have to run setjmp for *every* try{}, independent of whether
: it is ever actually needed.

It is worse than even that.

You have to run setjmp for every frame, because there could be an
exception thrown from a lower frame to an upper frame and you have to
cleanup your frame when that happens.  Variables go out of scope, and
must be destructed, etc.

Warner


More information about the freebsd-hackers mailing list