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