From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 1415A42454; Sun, 22 Jan 2023 17:41:02 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id BBE7F40223; Sun, 22 Jan 2023 17:41:01 +0100 (CET) Received: from forward500c.mail.yandex.net (forward500c.mail.yandex.net [178.154.239.208]) by mails.dpdk.org (Postfix) with ESMTP id ADDF740150 for ; Sun, 22 Jan 2023 17:40:59 +0100 (CET) Received: from sas2-eda296917d2e.qloud-c.yandex.net (sas2-eda296917d2e.qloud-c.yandex.net [IPv6:2a02:6b8:c14:251e:0:640:eda2:9691]) by forward500c.mail.yandex.net (Yandex) with ESMTP id EC8BA5E7FA; Sun, 22 Jan 2023 19:40:58 +0300 (MSK) Received: by sas2-eda296917d2e.qloud-c.yandex.net (smtp/Yandex) with ESMTPSA id uesx8luejuQ1-hLBXyN45; Sun, 22 Jan 2023 19:40:58 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1674405658; bh=JNG0VJMzG1N9ZKTIa+U30Ym/wvihq12hanG5HdlB3ic=; h=From:In-Reply-To:Cc:Date:References:To:Subject:Message-ID; b=Yid1gtveJdCxNMpk3BgWN2JZXQik2v98XfRNHjFQ9g9FYlr0aG2rav8gpniuMOf2a 0bgTw4tFT4cf9GAw8DgUqPyBQcE//St6ixmq+eusB5hjSQt5Zi3t1E0CtI07gs3/GH 8Kn6hPjSJvTrJdTmy/qCv0OrckWP2I5YpayUbBlo= Authentication-Results: sas2-eda296917d2e.qloud-c.yandex.net; dkim=pass header.i=@yandex.ru Message-ID: <8e561371-f993-8d0a-c147-c86099a33118@yandex.ru> Date: Sun, 22 Jan 2023 16:40:56 +0000 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.4.2 Subject: Re: [PATCH v2 1/2] ring: add ring list telemetry cmd Content-Language: en-US To: Jie Hai , honnappa.nagarahalli@arm.com, dev@dpdk.org Cc: liudongdong3@huawei.com References: <20230117091049.20194-1-haijie1@huawei.com> <20230117130333.8707-1-haijie1@huawei.com> <20230117130333.8707-2-haijie1@huawei.com> From: Konstantin Ananyev In-Reply-To: <20230117130333.8707-2-haijie1@huawei.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Hi Jie, > This patch supports the list of rings with telemetry cmd. > An example using this command is shown below: > > --> /ring/list > { > "/ring/list": [ > "HT_0000:7d:00.2", > "MP_mb_pool_0" > ] > } > > Signed-off-by: Jie Hai > --- > lib/ring/meson.build | 1 + > lib/ring/rte_ring.c | 40 ++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 41 insertions(+) > > diff --git a/lib/ring/meson.build b/lib/ring/meson.build > index c20685c689ac..7fca958ed7fa 100644 > --- a/lib/ring/meson.build > +++ b/lib/ring/meson.build > @@ -18,3 +18,4 @@ indirect_headers += files ( > 'rte_ring_rts.h', > 'rte_ring_rts_elem_pvt.h', > ) > +deps += ['telemetry'] > diff --git a/lib/ring/rte_ring.c b/lib/ring/rte_ring.c > index cddaf6b2876f..bb1dafd4d1ca 100644 > --- a/lib/ring/rte_ring.c > +++ b/lib/ring/rte_ring.c > @@ -22,6 +22,7 @@ > #include > #include > #include > +#include > > #include "rte_ring.h" > #include "rte_ring_elem.h" > @@ -419,3 +420,42 @@ rte_ring_lookup(const char *name) > > return r; > } > + > +static void > +rte_ring_walk(void (*func)(struct rte_ring *, void *), void *arg) As a nit: it is a static function, so I think we can skip 'rte_' prefix for it. Apart from that: Acked-by: Konstantin Ananyev > +{ > + struct rte_ring_list *ring_list; > + struct rte_tailq_entry *te; > + > + ring_list = RTE_TAILQ_CAST(rte_ring_tailq.head, rte_ring_list); > + rte_mcfg_tailq_read_lock(); > + > + TAILQ_FOREACH(te, ring_list, next) { > + (*func)((struct rte_ring *) te->data, arg); > + } > + > + rte_mcfg_tailq_read_unlock(); > +} > + > +static void > +ring_list_cb(struct rte_ring *r, void *arg) > +{ > + struct rte_tel_data *d = (struct rte_tel_data *)arg; > + > + rte_tel_data_add_array_string(d, r->name); > +} > + > +static int > +ring_handle_list(const char *cmd __rte_unused, > + const char *params __rte_unused, struct rte_tel_data *d) > +{ > + rte_tel_data_start_array(d, RTE_TEL_STRING_VAL); > + rte_ring_walk(ring_list_cb, d); > + return 0; > +} > + > +RTE_INIT(ring_init_telemetry) > +{ > + rte_telemetry_register_cmd("/ring/list", ring_handle_list, > + "Returns list of available ring. Takes no parameters"); > +}