Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 11 Feb 2009 22:51:02 +0100
From:      Christoph Mallon <christoph.mallon@gmx.de>
To:        Aniruddha Bohra <abohra@gmail.com>
Cc:        hackers@freebsd.org, Andriy Gapon <avg@icyb.net.ua>
Subject:   Re: a little bit of c++ in kernel [module]
Message-ID:  <49934846.10905@gmx.de>
In-Reply-To: <43a2dc1a0902110840t1e4c8856lb5b33cc153ea4acb@mail.gmail.com>
References:  <43a2dc1a0902101243w5ce35609x35dbe440c39d80a8@mail.gmail.com>	<4992D1B0.8020708@icyb.net.ua> <43a2dc1a0902110840t1e4c8856lb5b33cc153ea4acb@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Aniruddha Bohra schrieb:
> On Wed, Feb 11, 2009 at 8:25 AM, Andriy Gapon <avg@icyb.net.ua> wrote:
>> on 10/02/2009 22:43 Aniruddha Bohra said the following:
>>> You can see Click: http://read.cs.ucla.edu/click/
>>> It does not  run on FreeBSD >4.
>>> I have an old diff which builds on the work by Marko Zec and Bruce
>>> Simpson, that allows me to load the click module.
>>> http://www.cs.rutgers.edu/~bohra/click-1.5.0.diff
>> 1. options -fpermissive -fno-exceptions -fno-rtti are passed to c++ compiler
>> 2. there are new/delete implementations that use kernel malloc
>>
>> I think that #1 means that there are no exceptions, (non-trivial)
>> dynamic_cast and typeid for kernel c++ code.
> 
> Correct.

That's a pity. Lack of exceptions negates some major benefits of C++.

>> 1. do you use any global/static objects with constructors? did you have
>> to write any code to call on those constructors when the module is loaded?
> 
> Not sure about this one. But AFAIK, there are no global static objects
> with constructors in Click code.
> There is one router object that is always initialized and it is
> updated by writing to the clickfs file system.
> The other objects are created with new.
> 
>> 2. did you have to write any other run-time support code or platform
>> glue code (besides new/delete)?
> 
>  Apart from the new and delete, I think the other things were the
> pseudofs code to initialize the file system,
> the locks in include/click/sync.hh, the glue code in atomic.hh.
> 
> 
>> 3. I assume virtual inheritance can be used in kernel code? do you use it?

Virtual inheritence needs no support from the "outside", so it is available.

> Yes. For example, all objects inherit from "Element" and that defines
> virtual functions. (include/click/element.hh)

Virtual inheritance is something completely different than virtual methods.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?49934846.10905>