Current-Users archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: sendmmsg() on NetBSD vs Linux
In article <25322.1446399621%andromeda.noi.kre.to@localhost>,
Robert Elz <kre%munnari.OZ.AU@localhost> wrote:
> Date: Sun, 1 Nov 2015 15:41:04 +0000 (UTC)
> From: mlelstv%serpens.de@localhost (Michael van Elst)
> Message-ID: <n15bqg$3og$1%serpens.de@localhost>
>
> | That is a bug in the NetBSD sendmmsg() implementation.
>
>I'm not sure that's necessarily true. On neither Linux nor NetBSD
>is the msg_hdr field of the struct mmsghdr declared const (the
>mmsghdr itself cannot be, as the msg_len field is intended to be modified).
>
>To me this suggests that user code should not rely upon the sendmmsg()
>call leaving the msg_hdr field untouched (on either linux or NetBSD).
>
>Certainly nothing in the man pages (on either system) suggests that
>doing so is safe.
>
>Relying on undocumented behaviour of the actual linux implementation
>is not wise.
>
>Whether or not NetBSD should be copying back the modified msg_hdr is
>a whole other question - it seems to me, that the sys call would run
>faster if only the msg_len fields were copied back, the msghdr struct
>is 3 pointers, 2 socklen_t's and 2 int's (plus likely alignment padding).
>Maybe doing one big copyout() is better than a bunch of much smaller
>ones, and maybe it depends upon the actual way that the kernel/user
>mem mapping is achieved - it might be better one way on some ports and
>the other on others.
Well, the recvmmsg code did not do it, and it was simple enough to make
both sides do the same :-)... I.e. not scribble to the userland struct
unnecessarily.
christos
Home |
Main Index |
Thread Index |
Old Index