On Tue, Nov 26, 2024 at 01:01:03PM +0000, Pavel Begunkov wrote: > On 11/25/24 07:06, Anuj Gupta wrote: > ... > > + /* type specific struct here */ > > + struct io_uring_attr_pi pi; > > +}; > > This also looks PI specific but with a generic name. Or are > attribute structures are supposed to be unionised? Yes, attribute structures would be unionised here. This is done so that "attr_type" always remains at the top. When there are multiple attributes this structure would look something like this: /* attribute information along with type */ struct io_uring_attr { enum io_uring_attr_type attr_type; /* type specific struct here */ union { struct io_uring_attr_pi pi; struct io_uring_attr_x x; struct io_uring_attr_y y; }; }; And then on the application side for sending attribute x, one would do: io_uring_attr attr; attr.type = TYPE_X; prepare_attr(&attr.x);