Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: linux emulation take two



On Tue, Jun 02, 2015 at 03:34:31PM +0000, Christos Zoulas wrote:
> In article <20150602134017.GC10950%quark.internal.precedence.co.uk@localhost>,
> Patrick Welche  <prlw1%cam.ac.uk@localhost> wrote:
> >Starting again... On the same -current/amd64 computer, with suse 13.2
> >installed, /emul/linux32/usr/bin/xeyes fails with:
> 
> There is no chance those will work under linux32. You need to
> convert the msghdr structures and the iov's... Copying the
> sendmsg/recvmsg code from linux/common/linux_socket.c to
> linux32/common/linux32_socket.c, adjusting the structs, and then
> doing the iov conversions like they are done in
> netbsd32/netbsd32_socket.c is what needs to be done to get those
> working. Give it a try! It should not be too hard, all the bits
> are there.

I've been having a good crack at it - this bit doesn't look promising though:

/*
 * Linux alignment requirement for CMSG struct manipulation.
 * Linux aligns on (size_t) boundary on all architectures.
 * Fortunately for linux, linux_cmsghdr is always size_t aligned !
 * since no padding is added between the header and data.
 * XXX: this code isn't right for the compat32 code.
 */
struct linux_cmsghdr {
        size_t  cmsg_len;       /* NB not socklen_t */
        int     cmsg_level;
        int     cmsg_type;
    /*  unsigned char __cmsg_data[0]; */
};


P


Home | Main Index | Thread Index | Old Index