Re: [RFC,PATCH 2/4] Deprecate synchronize_kernel, GPL replacement

From: Paul E. McKenney
Date: Mon Apr 04 2005 - 16:47:36 EST


On Mon, Apr 04, 2005 at 12:26:50AM +0200, Arnd Bergmann wrote:
> On Sünndag 03 April 2005 20:50, Paul E. McKenney wrote:
> > I couldn't find any way to suppress the "deprecated" warning that is
> > generated by the "&sym" in the last line of the __EXPORT_SYMBOL()
> > macro.  Anyone know a way of doing this?  There doesn't seem to me
> > to be any point to giving the warning on the EXPORT_SYMBOL() -- and
> > it does clutter up compiler output with useless "deprecated" warnings.
>
> You can define an inline function that is marked __deprecated and calls
> the exported function:
>
> extern void __synchronize_kernel(void);
> static inline __deprecated synchronize_kernel(void)
> {
> __synchronize_kernel();
> }
> ===
> void __synchronize_kernel(void)
> {
> synchronize_rcu();
> }
> EXPORT_SYMBOL(__synchronize_kernel);

Cute! This would indeed deprecate synchronize_kernel() everywhere, while
at the same time avoiding a "deprecated" warning on any EXPORT_SYMBOL().
However, it would provide a new symbol, __synchronize_kernel(), that
could be called from any module, but with no "deprecated" warning.

> You could even make __synchronize_kernel() static to let it only be used
> by modules, but that might create some confusion about the interface.

-That- is an interesting trick!

Thinking about this more, it seems like getting the warning in modules
but not in mainline is OK. If uses creep into the mainline, we can always
just change them when they are noticed. In the worst case, it is still
easy to simply update them when we remove synchronize_kernel() next April,
right?

Thanx, Paul
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/