lkml.org 
[lkml]   [1999]   [Jan]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: C++ in kernel (was Re: exception in a device driver)
According to Alexander Viro:
> On Sat, 16 Jan 1999, Chip Salzenberg wrote:
> > Stroupstrup's design rule: "Constructors acquite resources;
> > destructors release them."
>
> So, you are going to allocate an object in stack for each
> semaphore you are holding?

Yup.

> shitload of overhead even if we'll do it in assembler

I doubt that very strongly. Consider that the object need not be
polymorphic; all it needs is a pointer member. And if you use a
template class, you don't even need the pointer, so it'll be 100% as
efficient as the C version (except one byte for the object itself
(zero-length objects are not allowed (yet))).

Given:

template <semaphore_t *SEM>
class hold {
public:
hold() { down(SEM); }
~hold() { up(SEM); }
};

The code would look like:

void random_function()
{
hold<&one_semaphore> hold1;
hold<&other_semaphore> hold2;
// ...
}

--
Chip Salzenberg - a.k.a. - <chip@perlsupport.com>
"When do you work?" "Whenever I'm not busy."

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:49    [W:0.071 / U:0.020 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site