Re: share COMPATIBLE_IOCTL()s across architectures

Andi Kleen
2003-03-20T20:13:52Z

On Thu, 2003-03-20 at 20:32, Pavel Machek wrote:
> Hi!
>
> > This patche moves common COMPATIBLE_IOCTLs to
> > include/linux/compat_ioctl.h, enabling pretty nice cleanups:
> >
> > Please be careful. For anything non-trivial there can be major
> > differences between compat layers.
>
> I'm trying to be carefull. How common are ioctls that are
> COMPATIBLE_IOCTL(foo) on one arch, but not on another? So far I tried
> to decide, and mostly decided that one architecture was simply
> missing...

The only issue I'm aware of are structures with long long. IA64 and
x86-64 are special in that long long has a different alignmnet in 32bit
and 64bit (4 bytes in 32bit, 8 bytes in 64bit). All the other archs with
compat code have always 8 byte alignment. This means if sparc64 doesn't
do a conversion, but x86-64 does you cannot put it into the COMPAT_IOCTL
list. Make sure you only use the common set.

Fortunately long long is not that common and many uses of it are already
8 byte aligned, but not all are.

-Andi