On 1/29/19 5:12 AM, Florian Weimer wrote: > * Jens Axboe: > >> +#define IORING_MAX_ENTRIES 4096 > > Where does this constant come from? Should it really be exposed to > userspace? Seems pretty handy for the application to know what the limit is? >> +struct io_uring_params { >> + __u32 sq_entries; >> + __u32 cq_entries; >> + __u32 flags; >> + __u16 resv[10]; >> + struct io_sqring_offsets sq_off; >> + struct io_cqring_offsets cq_off; >> +}; > >> +struct io_sqring_offsets { >> + __u32 head; >> + __u32 tail; >> + __u32 ring_mask; >> + __u32 ring_entries; >> + __u32 flags; >> + __u32 dropped; >> + __u32 array; >> + __u32 resv[3]; >> +}; >> + >> +struct io_cqring_offsets { >> + __u32 head; >> + __u32 tail; >> + __u32 ring_mask; >> + __u32 ring_entries; >> + __u32 overflow; >> + __u32 cqes; >> + __u32 resv[4]; >> +}; > > Should the reserved fields include a __u64 member, to increase struct > alignment on architectures that might need it in the future? Sure, I can do that. >> +#define IORING_ENTER_GETEVENTS (1 << 0) > > Should this be unsigned, to match the u32 flags argument? (Otherwise > using 32 flags can be difficult). Good point, I've changed them all to be unsigned. -- Jens Axboe