On 2023-09-27 10:13, Bruce Richardson wrote:
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]


I will just have the create() function take the eventdev id, only, and thus make no attempt at "future-proofing". Then we will see what the future holds; flags, function parameters, or function parameters packed into structs.

Reply via email to