Re: [PATCH] [2.5] include/asm-generic/bitops.h {set,clear}_bit return void

Arnd Bergmann (arnd@arndb.de)
Wed, 16 Apr 2003 00:46:20 +0200


On Tuesday 15 April 2003 23:34, Robert Love wrote:
> > The point of asm-generic is not to use the files, but to give porters a
> > hint about the functionality. Quoting asm-generic/bitops.h:
> >
> > /* For the benefit of those who are trying to port Linux to another
> > * architecture, here are some C-language equivalents. You should
> > * recode these in the native assembly language, if at all possible.
> > * To guarantee atomicity, these routines call cli() and sti() to
> > * disable interrupts while they operate. (You have to provide inline
> > * routines to cli() and sti().) */
> >
> > Or is this comment wrong, too?
>
> Well, the cli() and sti() part is definitely wrong for 2.5.
>
> It is wrong though to assume that nothing will use these; someone may
> copy them directly (and then they do not work) or someone may #include
> this file.

AFAICS, the meaning of the asm-generic directory has completely changed
during the 2.4/2.5 timeframe. They are now meant to be included from
other header files, with the exception of unaligned.h and bitops.h.

These two files are now worthless for the purpose they were meant for. When
someone wants to start a new architecture, the maintained architectures
are the place to look at. For example, the parisc and ia64 implementations
of bitops.h are both generic enough to be used for a new architecture
and they actually are SMP safe and complete, while the asm-generic
variant has been broken since linux-2.0!

> I like Arnd's suggestion to just remove these functions and all other
> instances of them -- assuming in fact they are never used.

I actually meant removing the asm-generic/bitops.h file, not the functions.

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