Re: [PATCH RFC] [1/9] Core module symbol namespaces code and intro.

Stephen Hemminger
2007-11-26T18:26:59Z

On Mon, 26 Nov 2007 12:28:14 +1100
Rusty Russell <rusty@rustcorp.com.au> wrote:

> On Monday 26 November 2007 07:27:03 Roland Dreier wrote:
> > > This patch allows to export symbols only for specific modules by
> > > introducing symbol name spaces. A module name space has a white
> > > list of modules that are allowed to import symbols for it; all others
> > > can't use the symbols.
> > >
> > > It adds two new macros:
> > >
> > > MODULE_NAMESPACE_ALLOW(namespace, module);
> >
> > I definitely like the idea of organizing exported symbols into
> > namespaces. However, I feel like it would make more sense to have
> > something like
> >
> > MODULE_NAMESPACE_IMPORT(namespace);
>
> Except C doesn't have namespaces and this mechanism doesn't create them. So
> this is just complete and utter makework; as I said before, noone's going to
> confuse all those udp_* functions if they're not in the udp namespace.
>
> For better or worse, this is not C++.
>

Agreed. On first glance, I was intrigued but:

1) Why is everyone so concerned that export symbol space is large?
- does it cost cpu or running memory?
- does it cause bugs?
- or are you just worried about "evil modules"?

2) These aren't real namespaces
- all global names still have to be unique
- still have to handle the "non-modular build" namespace conflicts
- there isn't a big problem with conflicting symbols today.

So why bother adding complexity.
--
Stephen Hemminger <shemminger@linux-foundation.org>