On Wed, Nov 18, 2009 at 08:04:18AM +0100, Heiko Carstens wrote: > Please note that other architectures (I think at least arm and powerpc) put > 64 bit values into even/odd register pairs and add padding if the first free > available register is an odd one. So any of the following interfaces should > work for all architectures: > > long sys_fanotify_mark(int fanotify_fd, unsigned int flags, > int fd, const char __user *pathname, > u32 mask_high, u32 mask_low); > > long sys_fanotify_mark(int fanotify_fd, unsigned int flags, > u64 mask, > int fd, const char __user *pathname); > > long sys_fanotify_mark(u64 mask, > int fanotify_fd, unsigned int flags, > int fd, const char __user *pathname); Correct - but the splitting is unnecessary pain for some platforms like 64-bit userland on 64-bit MIPS where the 64-bit argument would be passed in a single register so I have preference for the 2nd or 3rd suggestion. The 1st prototype has the advantage of avoiding the need for a compat wrapper which otherwise would look like: long compat_sys_fanotify_mark(int fanotify_fd, unsigned int flags, u32 a2, u32 a3, int fd, const char __user *pathname); { /* assuming 2nd suggested prototype from above */ return sys_fanotify_mark(fd, flags, merge64(a2, a3), fd, pathname); } I'd prefer to see the compat code carrying the burden. Ralf -- To unsubscribe from this list: send the line "unsubscribe linux-next" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html