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 52F5B432E4; Thu, 9 Nov 2023 13:26:46 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 41E56406A2; Thu, 9 Nov 2023 13:26:46 +0100 (CET) Received: from szxga01-in.huawei.com (szxga01-in.huawei.com [45.249.212.187]) by mails.dpdk.org (Postfix) with ESMTP id 9D6AD40697 for ; Thu, 9 Nov 2023 13:26:43 +0100 (CET) Received: from kwepemm000004.china.huawei.com (unknown [172.30.72.56]) by szxga01-in.huawei.com (SkyGuard) with ESMTP id 4SR1MN4nzMzmXHG; Thu, 9 Nov 2023 20:23:28 +0800 (CST) Received: from [10.67.121.59] (10.67.121.59) by kwepemm000004.china.huawei.com (7.193.23.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.31; Thu, 9 Nov 2023 20:26:40 +0800 Message-ID: <93f4e6da-b73e-2a94-3bb0-42de0e8dbf31@huawei.com> Date: Thu, 9 Nov 2023 20:26:40 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.2.0 Subject: Re: [RESEND v7 2/3] ring: add telemetry cmd to list rings To: Jie Hai , , , , , , , CC: , References: <20230117091049.20194-1-haijie1@huawei.com> <20231109102046.1277893-1-haijie1@huawei.com> <20231109102046.1277893-3-haijie1@huawei.com> From: "lihuisong (C)" In-Reply-To: <20231109102046.1277893-3-haijie1@huawei.com> Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 8bit X-Originating-IP: [10.67.121.59] X-ClientProxiedBy: dggems704-chm.china.huawei.com (10.3.19.181) To kwepemm000004.china.huawei.com (7.193.23.18) X-CFilter-Loop: Reflected 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 Acked-by: Huisong Li 在 2023/11/9 18:20, Jie Hai 写道: > Add a telemetry command to list the rings used in the system. > 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 > Acked-by: Konstantin Ananyev > Reviewed-by: Honnappa Nagarahalli > Acked-by: Huisong Li > Acked-by: Chengwen Feng > Acked-by: Morten Brørup > --- > 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 057d25ff6f2f..6a10280fb093 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" > @@ -418,3 +419,42 @@ rte_ring_lookup(const char *name) > > return r; > } > + > +static void > +ring_walk(void (*func)(struct rte_ring *, void *), void *arg) > +{ > + struct rte_ring_list *ring_list; > + struct rte_tailq_entry *tailq_entry; > + > + ring_list = RTE_TAILQ_CAST(rte_ring_tailq.head, rte_ring_list); > + rte_mcfg_tailq_read_lock(); > + > + TAILQ_FOREACH(tailq_entry, ring_list, next) { > + (*func)((struct rte_ring *) tailq_entry->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); > + 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 rings. Takes no parameters"); > +}