Thread (14 messages) 14 messages, 6 authors, 2008-12-16

Re: [PATCH v3 0/3] preadv & pwritev syscalls.

flat view

From: Kyle McMartin <hidden>
Date: 2008-12-16 17:02:21
Also in: linux-arch, lkml

On Tue, Dec 16, 2008 at 05:48:58PM +0100, Gerd Hoffmann wrote:
i.e. the ordering of the splitted argument depends on the os endianness?
What is the reason for this?
Eh? The splitting will occur at the C ABI level, not as a result of
glibc (though, it could be done that way if you really wanted, but then
you're just moving the wrapper up the chain.)

A 64-bit value on a 32-bit machine will look like, in a register pair,
like it looks in memory, with MSB/LSB ordering.
I'd prefer to have the ordering coded explicitly instead, like this:

asmlinkage int compat_sys_pwritev(unsigned long fd,
       const struct compat_iovec __user *vec, unsigned long vlen,
       unsigned pos_low, unsigned pos_high)
{
	loff_t pos = pos_low | (loff_t)pos_high << 32;
        [ ... ]
Sadly this isn't possible without a wrapper unless you can guarantee
it was passed low high instead of high low. Unless you munge it in
userspace, you can't.

regards, Kyle
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help