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()