On Tue, Sep 26, 2023 at 11:58:37PM +0530, Jerin Jacob wrote: > On Mon, Sep 25, 2023 at 12:41 PM Mattias Rönnblom <hof...@lysator.liu.se> > wrote: > > > > On 2023-09-22 09:38, Mattias Rönnblom wrote: > > > > <snip> > > > > > +int > > > +rte_dispatcher_create(uint8_t id, uint8_t event_dev_id) > > > +{ > > > > > > There are two changes I'm considering: > > > > 1) Removing the "id" to identify the dispatcher, replacing it with an > > forward-declared rte_dispatcher struct pointer. > > > > struct rte_dispatcher; > > > > struct rte_dispatcher * > > rte_dispatcher_create(uint8_t event_dev_id); > > > > > > The original reason for using an integer id to identify a dispatcher is > > to make it look like everything else in Eventdev. I find this pattern a > > little awkward to use - in particular the fact the id is > > application-allocated (and thus require coordination between different > > part of the application in case multiple instances are used). > > > > 2) Adding a flags field to the create function "for future use". But > > since the API is experimental, there may not be that much need to > > attempt to be future-proof? > > > > Any thoughts are appreciated. > > IMO, better to have rte_dispatcher_create(struct > rte_dispatch_create_params *params) > for better future proofing with specific > rte_dispatch_crearte_params_init() API(No need to add reserved fields > in rte_dispatch_create_params now, may need only for before removing > experimental status) > > Just 2c. >
I don't like using structs in those cases, I'd much rather have a flags parameter, as flags can be checked for explicit zeros for future proofing, while a struct cannot be checked for extra space on the end for future fields added. Furthermore, if we need to add new parameters to the create function, I actually believe it is better to add them as explicit parameters rather than new fields to the struct. Struct fields can be missed by a user just recompiling, while new function parameters will be flagged by the compiler to make the user aware of the change. [There would be no change for ABI compatibility as function versioning would be usable in both cases] /Bruce