lkml.org 
[lkml]   [2006]   [Apr]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: C++ pushback
    On Tue, 25 Apr 2006 11:22:32 +0200, Xavier Bestel <xavier.bestel@free.fr> wrote:

    >
    > Yes, "if". With straight C, it's immediatly obvious the kmalloc() is the
    > only function with side-effects and special requirements - an
    > experienced hacker won't even look it up. With C++ those may be hidden
    > behind each object or object member, that's the philosophy of the
    > language.
    > The problem is that in kernel mode you must know precisely when and how
    > you allocate memory.
    >

    Don't mix allocation with initialization.
    Well, lets see:

    struct xxx {
    struct yyy* y;
    int z;
    }

    xxx_init(struct xxx* x)
    {
    z = 0;
    y = kmalloc(GPF_KERNEL,sizeof(struct yyy));
    yyy_init(y);
    }

    Now, if on other source file you read:
    ...
    struct xxx* x;
    x = kmallloc(GPF_KERNEL,sizeof(struct xxx));
    xxx_init(x);
    ..
    struct xxx x2;
    xxx_init(&x2);

    How do you know what xxx_init() does without looking at it ?
    Cay you have just the allocation without init ? What happens if you forget it ?
    What happens if you cut'n'paste from other driver and let something like

    struct xxx* x;
    x = kmallloc(GPF_KERNEL,sizeof(struct qqqqq));
    xxx_init(x);

    The only difference it that
    x = new(GPF_KERNEL) XXX;

    always does what it has to do correctly. What does XXX() constructor ?
    You have to look at it, same as xxx_init().

    As I said in other answer: I'm not advocating to include C++ support in
    current kernel. I just say that the only valid argument is that
    'KERNEL IS C', and interfacing C with C++ just would add bloat and errors.
    There is no technical argument to reject to write an OS kernel in C++.
    It would not be slower nor more complicated, and it will be probably safer
    because it leaves less things (from thost you always _must_ do) to
    programmers memories.

    --
    J.A. Magallon <jamagallon()able!es> \ Software is like sex:
    werewolf!able!es \ It's better when it's free
    Mandriva Linux release 2006.1 (Cooker) for i586
    Linux 2.6.16-jam9 (gcc 4.1.1 20060330 (prerelease)) #1 SMP PREEMPT Tue
    [unhandled content-type:application/pgp-signature]
    \
     
     \ /
      Last update: 2006-04-25 22:22    [W:3.922 / U:0.028 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site