On Fri, Apr 10, 2020 at 11:48 AM Jerin Jacob <jerinjac...@gmail.com> wrote: >
Three more items are missing in this patch 1) Unit test case for new API 2) Make the new API __rte_experimal 3) Update the .map file > On Thu, Apr 9, 2020 at 8:33 PM <xiangxia.m....@gmail.com> wrote: > > > > From: Tonghao Zhang <xiangxia.m....@gmail.com> > > > > This patch introduces last-init queue, user can register a > > callback for theirs initialization. Running rte_last_init_run(), > > The above section needs to be rewritten wrt v2 changes. > > > the almost resource of DPDK are available, such as memzone, ring. > > With this way, user don't introduce additional codes in eal layer. > > > > [This patch will be used for next patch.] > > See below > > > > > > Signed-off-by: Tonghao Zhang <xiangxia.m....@gmail.com> > > --- > See above > > Move [This patch will be used for next patch.] here to avoid > unnecessary information in the git commit. > > > v2: > > * rename rte_last_init_register ->rte_init_register > > * rename rte_last_init struct ->rte_init > > * rename rte_init_cb ->rte_init_cb_t > > * free the rte_init node when not used. > > * remove rte_init and others to eal_private.h > > * add comments > > * fix checkpatch warning > > --- > > diff --git a/lib/librte_eal/include/rte_init.h > > b/lib/librte_eal/include/rte_init.h > > new file mode 100644 > > index 0000000..636efff > > --- /dev/null > > +++ b/lib/librte_eal/include/rte_init.h > > @@ -0,0 +1,59 @@ > > +/* SPDX-License-Identifier: BSD-3-Clause > > + * Copyright 2020 DPDK Community > > + */ > > + > > +#ifndef _RTE_INIT_H_ > > +#define _RTE_INIT_H_ > > @file section is missing. See > lib/librte_eal/common/include/rte_errno.h as example. > > > > +#ifdef __cplusplus > > +extern "C" { > > +#endif > > + > > +#include <stdio.h> > > +#include <sys/queue.h> > > <sys/queue.h> is not required in public API header file. > > > + > > +/** > > + * Implementation specific callback function which is > > + * responsible for specificed initialization. > > + * > > + * This is called when almost resources are available. > > + * > > + * @return > > + * 0 for successful callback > > + * Negative for unsuccessful callback with error value > > + */ > > +typedef int (*rte_init_cb_t)(const void *arg); > > + > > +/** > > + * rte_init type. > > + * > > + * The rte_init of RTE_INIT_PRE are called firstly, > > + * and then RTE_INIT_POST. > > + */ > > +enum rte_init_type { > > + RTE_INIT_PRE, > > Type specific comment is missing. > > Example as reference for formatting. > > /** > * Enumerate trace mode operation. > */ > enum rte_trace_mode_e { > /** > * In this mode, When no space left in trace buffer, the subsequent > * events overwrite the old events in the trace buffer. > */ > RTE_TRACE_MODE_OVERWRITE, > /** > * In this mode, When no space left on trace buffer, the subsequent > * events shall not be recorded in the trace buffer. > */ > RTE_TRACE_MODE_DISCARD, > }; > > > + RTE_INIT_POST > > +}; > > > > + > > +/** > > + * Register a rte_init callback. > > + * > > + * @param cb > > + * A pointer to a rte_init_cb structure, which will be used > > s/used/invoked? > > > + * in rte_eal_init(). > > + * > > + * @param arg > > + * The cb will use that as param. > > + * > > + * @param type > > + * The type of rte_init registered. > > + */ > > + > > +void rte_init_register(rte_init_cb_t cb, const void *arg, > > + enum rte_init_type type); > > + > > +#ifdef __cplusplus > > +} > > +#endif > > + > > +#endif /* _RTE_INIT_H_ */