From 30cf1713522c4c6e15544ff7c73d10892ec86ae4 Mon Sep 17 00:00:00 2001 From: Guy Kaneti Date: Thu, 22 Oct 2020 10:11:11 +0300 Subject: [PATCH] app/regex: add job context Store mbuf pointer associated with that job. Signed-off-by: Guy Kaneti Acked-by: Ori Kam --- app/test-regex/main.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/app/test-regex/main.c b/app/test-regex/main.c index 3deaf3c80d..ac6152dea7 100644 --- a/app/test-regex/main.c +++ b/app/test-regex/main.c @@ -35,6 +35,10 @@ enum app_args { ARG_NUM_OF_ITERATIONS, }; +struct job_ctx { + struct rte_mbuf *mbuf; +}; + static void usage(const char *prog_name) { @@ -268,6 +272,7 @@ run_regex(struct rte_mempool *mbuf_mp, uint32_t nb_jobs, time_t start; time_t end; double time; + struct job_ctx *jobs_ctx; shinfo.free_cb = extbuf_free_cb; @@ -277,6 +282,12 @@ run_regex(struct rte_mempool *mbuf_mp, uint32_t nb_jobs, return -ENOMEM; } + jobs_ctx = rte_malloc(NULL, sizeof(struct job_ctx)*nb_jobs, 0); + if (!jobs_ctx) { + printf("Error, can't allocate memory for jobs_ctx.\n"); + return -ENOMEM; + } + /* Allocate the jobs and assign each job with an mbuf. */ for (i = 0; i < nb_jobs; i++) { ops[i] = rte_malloc(NULL, sizeof(*ops[0]) + nb_max_matches * @@ -319,6 +330,7 @@ run_regex(struct rte_mempool *mbuf_mp, uint32_t nb_jobs, long act_job_len = RTE_MIN(job_len, buf_len - pos); rte_pktmbuf_attach_extbuf(ops[i]->mbuf, &buf[pos], 0, act_job_len, &shinfo); + jobs_ctx[i].mbuf = ops[i]->mbuf; ops[i]->mbuf->data_len = job_len; ops[i]->mbuf->pkt_len = act_job_len; ops[i]->user_id = i; @@ -388,13 +400,13 @@ run_regex(struct rte_mempool *mbuf_mp, uint32_t nb_jobs, } end: for (i = 0; i < actual_jobs; i++) { - if (ops[i]) { - if (ops[i]->mbuf) - rte_pktmbuf_free(ops[i]->mbuf); + if (ops[i]) rte_free(ops[i]); - } + if (jobs_ctx[i].mbuf) + rte_pktmbuf_free(jobs_ctx[i].mbuf); } rte_free(ops); + rte_free(jobs_ctx); if (buf) rte_free(buf); return res; -- 2.20.1