[dpdk-dev] [RFC PATCH 1/5] graph: introduce graph subsystem

Jerin Jacob jerinjacobk at gmail.com
Sun Feb 2 12:08:55 CET 2020


On Sun, Feb 2, 2020 at 4:05 PM Stephen Hemminger
<stephen at networkplumber.org> wrote:
>
> On Fri, 31 Jan 2020 22:31:57 +0530
> <jerinj at marvell.com> wrote:
>
> > +     /* Create graph object */
> > +     graph = calloc(1, sizeof(*graph));
> > +     if (graph == NULL)
> > +             set_err(ENOMEM, fail, "failed to calloc graph object");
>
> This won't be safe if used in primary/secondary process model.
> You would need to use rte_calloc etc to allow this.

That memory used only local housekeeping purposes. Down in the
function, it creates a graph reel from
the memzone with all the required data for fast path. see graph_fp_mem_create()

workers/secondary process get the real fast path graph object through
rte_graph_lookup() which
returns the "struct rte_graph *". Followed by invoking
rte_graph_walk(struct rte_graph *graph)
for the graph walk.

struct rte_graph *
rte_graph_lookup(const char *name)
{
        const struct rte_memzone *mz;
        struct rte_graph *rc = NULL;

        mz = rte_memzone_lookup(name);
        if (mz)
                rc = mz->addr;

        return graph_mem_fixup_secondray(rc);
}


More information about the dev mailing list