2021-10-20 00:05 (UTC+0530), Harman Kalra: > Making changes to the interrupt framework to use interrupt handle > APIs to get/set any field. Direct access to any of the fields > should be avoided to avoid any ABI breakage in future.
I get and accept the point why EAL also should use the API. However, mentioning ABI is still a wrong wording. There is no ABI between EAL structures and EAL functions by definition of ABI. > > Signed-off-by: Harman Kalra <hka...@marvell.com> > --- > lib/eal/freebsd/eal_interrupts.c | 92 ++++++---- > lib/eal/linux/eal_interrupts.c | 287 +++++++++++++++++++------------ > 2 files changed, 234 insertions(+), 145 deletions(-) > > diff --git a/lib/eal/freebsd/eal_interrupts.c > b/lib/eal/freebsd/eal_interrupts.c [...] > @@ -135,9 +137,18 @@ rte_intr_callback_register(const struct rte_intr_handle > *intr_handle, > ret = -ENOMEM; > goto fail; > } else { > - src->intr_handle = *intr_handle; > - TAILQ_INIT(&src->callbacks); > - TAILQ_INSERT_TAIL(&intr_sources, src, next); > + src->intr_handle = rte_intr_instance_alloc(); > + if (src->intr_handle == NULL) { > + RTE_LOG(ERR, EAL, "Can not create intr > instance\n"); > + free(callback); > + ret = -ENOMEM; goto fail? > + } else { > + rte_intr_instance_copy(src->intr_handle, > + intr_handle); > + TAILQ_INIT(&src->callbacks); > + TAILQ_INSERT_TAIL(&intr_sources, src, > + next); > + } > } > } > [...] > @@ -213,7 +226,7 @@ rte_intr_callback_unregister_pending(const struct > rte_intr_handle *intr_handle, > struct rte_intr_callback *cb, *next; > > /* do parameter checking first */ > - if (intr_handle == NULL || intr_handle->fd < 0) { > + if (intr_handle == NULL || rte_intr_fd_get(intr_handle) < 0) { The handle is checked for NULL inside the accessor, here and in other places: grep -R 'intr_handle == NULL ||' lib/eal > RTE_LOG(ERR, EAL, > "Unregistering with invalid input parameter\n"); > return -EINVAL; > diff --git a/lib/eal/linux/eal_interrupts.c b/lib/eal/linux/eal_interrupts.c [...]