From owner-freebsd-hackers@FreeBSD.ORG Wed Feb 11 21:51:06 2009 Return-Path: Delivered-To: hackers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0598F1065680 for ; Wed, 11 Feb 2009 21:51:06 +0000 (UTC) (envelope-from christoph.mallon@gmx.de) Received: from mail.gmx.net (mail.gmx.net [213.165.64.20]) by mx1.freebsd.org (Postfix) with SMTP id 602138FC13 for ; Wed, 11 Feb 2009 21:51:05 +0000 (UTC) (envelope-from christoph.mallon@gmx.de) Received: (qmail invoked by alias); 11 Feb 2009 21:51:03 -0000 Received: from p54A3F0A0.dip.t-dialin.net (EHLO tron.homeunix.org) [84.163.240.160] by mail.gmx.net (mp069) with SMTP; 11 Feb 2009 22:51:03 +0100 X-Authenticated: #1673122 X-Provags-ID: V01U2FsdGVkX1/lt1YaEmbln9zXdvyYJhIz4mYUpX0I7LrarUT65A ejXH5xTEsaAbVO Message-ID: <49934846.10905@gmx.de> Date: Wed, 11 Feb 2009 22:51:02 +0100 From: Christoph Mallon User-Agent: Thunderbird 2.0.0.19 (X11/20090103) MIME-Version: 1.0 To: Aniruddha Bohra References: <43a2dc1a0902101243w5ce35609x35dbe440c39d80a8@mail.gmail.com> <4992D1B0.8020708@icyb.net.ua> <43a2dc1a0902110840t1e4c8856lb5b33cc153ea4acb@mail.gmail.com> In-Reply-To: <43a2dc1a0902110840t1e4c8856lb5b33cc153ea4acb@mail.gmail.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Y-GMX-Trusted: 0 X-FuHaFi: 0.53 Cc: hackers@freebsd.org, Andriy Gapon Subject: Re: a little bit of c++ in kernel [module] X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 11 Feb 2009 21:51:09 -0000 Aniruddha Bohra schrieb: > On Wed, Feb 11, 2009 at 8:25 AM, Andriy Gapon 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.