Re: [PATCH 30/56] microblaze_v2: includes SHM*, msgbuf

Arnd Bergmann
2008-05-04T21:11:29Z

On Sunday 04 May 2008, monstr@seznam.cz wrote:

> include/asm-microblaze/msgbuf.h | 41 +++++++++++++++++++++++++++++
> include/asm-microblaze/shmbuf.h | 52 +++++++++++++++++++++++++++++++++++++
> include/asm-microblaze/shmparam.h | 16 +++++++++++
> 3 files changed, 109 insertions(+), 0 deletions(-)
> create mode 100644 include/asm-microblaze/msgbuf.h
> create mode 100644 include/asm-microblaze/shmbuf.h
> create mode 100644 include/asm-microblaze/shmparam.h

Along with cleaning up the syscall interface, you should create asm-generic
versions of these files, ipcbuf.h and sembuf.h belong in the same category
(sysv IPC).

Unfortunately, most architectures have slightly different versions of them,
few of them really getting it right.
The version you have copied to microblaze is correct for little-endian
32 bit architectures, but not for big-endian architectures. The only
big-endian architectures that correctly implement padding are parisc,
powerpc, sparc, and the only one that gets 32 bit emulation right is
parisc (which, btw is a common scheme: if you want to know how to do
it, look at the parisc code).

I suppose it doesn't really matter much now, because SysV IPC is not
used a lot any more, and people have learned to live with the ill-defined
data structures. Most architectures have made the same mistake by
blindly copying the i386 version, so I'd suggest you take the version
you have and move that to asm-generic/{msg,shm,sem,ipc}buf.h, and
asm-generic/shmparam.h, so that every architecture using a copy of the
i386 headers can move to the generic one.