On Tue, Jan 15, 2019 at 3:56 AM Jens Axboe <axboe@xxxxxxxxx> wrote: > diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h > index 542757a4c898..e36c264d74e8 100644 > --- a/include/linux/syscalls.h > +++ b/include/linux/syscalls.h > @@ -314,6 +314,8 @@ asmlinkage long sys_io_uring_setup(u32 entries, > struct io_uring_params __user *p); > asmlinkage long sys_io_uring_enter(unsigned int fd, u32 to_submit, > u32 min_complete, u32 flags); > +asmlinkage long sys_io_uring_register(unsigned int fd, unsigned op, > + void __user *arg); > Would it be possible to make this a typed pointer instead? If this needs to be extended later to pass a different structure, a new system call may be better for consistency than overloading the argument in various ways. > + * io_uring_register(2) opcodes and arguments > + */ > +#define IORING_REGISTER_BUFFERS 0 > +#define IORING_UNREGISTER_BUFFERS 1 > + > +struct io_uring_register_buffers { > + union { > + struct iovec *iovecs; > + __u64 pad; > + }; > + __u32 nr_iovecs; > +}; As before, I'd suggest making this structure compatible between 32-bit and 64-bit architectectures, by avoiding pointer and implied padding fields. Arnd