Re: usr/include/linux/soundcard.h warnings for 'make headers_check'

Arnd Bergmann
2009-02-04T14:02:45Z

On Wednesday 04 February 2009, Jaswinder Singh Rajput wrote:
> > +#define _SEQ_EXTERN extern
> > +#define SEQ_USE_EXTBUF() \
> > +             _SEQ_EXTERN unsigned char _seqbuf[]; \
> > +             _SEQ_EXTERN int _seqbuflen;_SEQ_EXTERN int _seqbufptr
>
> hmm, you rename snake as rope, but actually snake is still there ;-)

Yes, that's true.

The alternative would be to remove all those macros entirely, breaking
also the applications from number 2 in my list.

I see this header as another example of the byteorder.h type where
a kernel header provides functionality that is used by existing
applications. While it should have been part of a library to start
with, we cannot change it any more now without breaking stuff.

Maybe a comment should be added to clarify this.

Arnd <><

--- a/include/linux/soundcard.h
+++ b/include/linux/soundcard.h
@@ -1050,7 +1050,17 @@ typedef struct mixer_vol_table {
* Some convenience macros to simplify programming of the
* /dev/sequencer interface
*
- * These macros define the API which should be used when possible.
+ * This is a legacy interface for applications written against
+ * the OSSlib-3.8 style interface. It is no longer possible
+ * to actually link against OSSlib with this header, but we
+ * still provide these macros for programs using them.
+ *
+ * If you want to use OSSlib, it is recommended that you get
+ * the GPL version of OSS-4.x and build against that version
+ * of the header.
+ *
+ * We redefine the extern keyword so that make headers_check
+ * does not complain about SEQ_USE_EXTBUF.
*/
#define SEQ_DECLAREBUF() SEQ_USE_EXTBUF()