Should define __u32?

walt
2008-12-28T22:25:01Z

Hi Alan and Linus,

A little background to explain the reason for my question:

My linux distribution just updated /usr/include/linux to 2.6.28,
which broke the compilation of wine.

The cause for the breakage is this commit by Linus:
commit c26c56c0f40e200e61d1390629c806f6adaffbcc
Author: Alan Cox <alan@redhat.com>
Date: Mon Oct 13 10:37:48 2008 +0100
tty: Cris has a nice RS485 ioctl so we should steal it

That commit introduced this new struct in serial.h:

+struct serial_rs485 {
+ __u32 flags; /* RS485 feature flags */
+#define SER_RS485_ENABLED (1 << 0)
+#define SER_RS485_RTS_ON_SEND (1 << 1)
+#define SER_RS485_RTS_AFTER_SEND (1 << 2)
+ __u32 delay_rts_before_send; /* Milliseconds */
+ __u32 padding[6]; /* Memory is cheap, new structs
+ are a royal PITA .. */
+};

The proximate cause of the wine breakage is the __u32, which
wasn't used in serial.h until now.

So, my question is: who should be responsible for defining
that __u32, the author of serial.h or the author of the wine
code that includes serial.h?

I'm not a professional programmer, just a hobbyist who loves
doing this stuff. When I try to trace the chain of definitions
in /usr/include I'm generally overwhelmed by the complexity of
what seems to be an endless chain of includes.

Could you give me The Big Picture here? (For example I'm assuming
that POSIX plays a confounding role in all of this, but I don't know
just how.)

Many thanks for any clues!