C++ code in a kernel module?

Don Bowman don at sandvine.com
Tue Sep 9 10:21:48 PDT 2003


> From: John Giacomoni [mailto:John.Giacomoni at colorado.edu]
> On Tuesday, Sep 9, 2003, at 00:29 America/Denver, Peter Jeremy wrote:
> 
> > On Mon, Sep 08, 2003 at 11:12:59PM -0400, Alexander Kabaev wrote:
> >> On Mon, 8 Sep 2003 23:02:33 -0400
> >> "Matthew Emmerton" <matt at compar.com> wrote:
> >>
> >>> I've been silently following this thread, and unless I missed
> >>> something, has anyone asked John why he wants/needs to 
> use C++ in the
> >>> kernel?
> >>>
> >> Tools, not policy :)
> >
> > True but if John explains more of what he is trying to do, maybe
> > someone can suggest either a way to avoid C++ or some insights as to
> > how he can get his C++ modules to work.
> >
> > Peter
> 
> simple, I have preexisting C++ code which we are currently
> using in userland and wish to push down into the kernel.
> 
> It would be ideal to keep the source bases the same without
> a rewrite to C.  Admitting of course the possibility of having
> to modify to be compatible with both use modes.
> 
> At present I am attempting to see what we can and cannot do
> in the kernel with C++

Speaking as someone who has implemented this for VxWorks
[which is similar to BSD in some ways], its not easy, but
its not impossible.

here's the things you have to do:

libstdc++/libgcc -> need to be linked in.
static constructors/destructors need to be called, exception
tables need to be linked.
libgcc does this and is called from crt. If you want it to 
work for loadable modules, same deal, call the 
constructors/add the exception tables when module is loaded.
thread-safety model in exception handling needs a .h file
written for it and placed in the compiler. I think thr-vxworks.h
was the one i wrote. 

none of this is impossible, or even particularly hard.
it will just take some time.
I think its very worthwhile, it would allow using 
e.g. STL, boost, etc in things like ipfw or other
add-ins that have complex proprietary and often
slower data structures. There's more to life than
SLIST.


More information about the freebsd-hackers mailing list