From a7893161786a6195cbb97d82969a49e02e56adac Mon Sep 17 00:00:00 2001 From: fly_1997 Date: Wed, 20 Nov 2024 09:39:14 +0800 Subject: [PATCH 1/5] remove old code --- src/plugin/collect/pmu/plugin/plugin.c | 136 ------------ src/plugin/collect/pmu/plugin/plugin_comm.c | 84 -------- src/plugin/collect/pmu/plugin/plugin_comm.h | 39 ---- .../collect/pmu/plugin/plugin_counting.c | 174 --------------- .../collect/pmu/plugin/plugin_counting.h | 35 --- .../plugin/plugin_napi_gro_receive_entry.c | 174 --------------- .../plugin/plugin_napi_gro_receive_entry.h | 35 --- .../collect/pmu/plugin/plugin_netif_rx.c | 173 --------------- .../collect/pmu/plugin/plugin_netif_rx.h | 35 --- .../collect/pmu/plugin/plugin_sampling.c | 176 ---------------- .../collect/pmu/plugin/plugin_sampling.h | 35 --- .../plugin/plugin_skb_copy_datagram_iovec.c | 174 --------------- .../plugin/plugin_skb_copy_datagram_iovec.h | 35 --- src/plugin/collect/pmu/plugin/plugin_spe.c | 174 --------------- src/plugin/collect/pmu/plugin/plugin_spe.h | 35 --- src/plugin/collect/pmu/plugin/plugin_uncore.c | 199 ------------------ src/plugin/collect/pmu/plugin/plugin_uncore.h | 35 --- src/plugin/collect/pmu/plugin/pmu_uncore.c | 142 ------------- src/plugin/collect/pmu/plugin/pmu_uncore.h | 45 ---- 19 files changed, 1935 deletions(-) delete mode 100644 src/plugin/collect/pmu/plugin/plugin.c delete mode 100644 src/plugin/collect/pmu/plugin/plugin_comm.c delete mode 100644 src/plugin/collect/pmu/plugin/plugin_comm.h delete mode 100644 src/plugin/collect/pmu/plugin/plugin_counting.c delete mode 100644 src/plugin/collect/pmu/plugin/plugin_counting.h delete mode 100644 src/plugin/collect/pmu/plugin/plugin_napi_gro_receive_entry.c delete mode 100644 src/plugin/collect/pmu/plugin/plugin_napi_gro_receive_entry.h delete mode 100644 src/plugin/collect/pmu/plugin/plugin_netif_rx.c delete mode 100644 src/plugin/collect/pmu/plugin/plugin_netif_rx.h delete mode 100644 src/plugin/collect/pmu/plugin/plugin_sampling.c delete mode 100644 src/plugin/collect/pmu/plugin/plugin_sampling.h delete mode 100644 src/plugin/collect/pmu/plugin/plugin_skb_copy_datagram_iovec.c delete mode 100644 src/plugin/collect/pmu/plugin/plugin_skb_copy_datagram_iovec.h delete mode 100644 src/plugin/collect/pmu/plugin/plugin_spe.c delete mode 100644 src/plugin/collect/pmu/plugin/plugin_spe.h delete mode 100644 src/plugin/collect/pmu/plugin/plugin_uncore.c delete mode 100644 src/plugin/collect/pmu/plugin/plugin_uncore.h delete mode 100644 src/plugin/collect/pmu/plugin/pmu_uncore.c delete mode 100644 src/plugin/collect/pmu/plugin/pmu_uncore.h diff --git a/src/plugin/collect/pmu/plugin/plugin.c b/src/plugin/collect/pmu/plugin/plugin.c deleted file mode 100644 index 0fc7dda..0000000 --- a/src/plugin/collect/pmu/plugin/plugin.c +++ /dev/null @@ -1,136 +0,0 @@ -/****************************************************************************** - * Copyright (c) 2024 Huawei Technologies Co., Ltd. All rights reserved. - * oeAware is licensed under Mulan PSL v2. - * You can use this software according to the terms and conditions of the Mulan PSL v2. - * You may obtain a copy of Mulan PSL v2 at: - * http://license.coscl.org.cn/MulanPSL2 - * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, - * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, - * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. - * See the Mulan PSL v2 for more details. - ******************************************************************************/ -#include "interface.h" -#include "plugin_sampling.h" -#include "plugin_counting.h" -#include "plugin_uncore.h" -#include "plugin_spe.h" -#include "plugin_netif_rx.h" -#include "plugin_napi_gro_receive_entry.h" -#include "plugin_skb_copy_datagram_iovec.h" - -#define INS_COLLECTOR_MAX 10 - -static struct Interface ins_collector[INS_COLLECTOR_MAX] = {0}; - -struct Interface sampling_collector = { - .get_version = sampling_get_version, - .get_description = sampling_get_description, - .get_priority = sampling_get_priority, - .get_type = sampling_get_type, - .get_dep = sampling_get_dep, - .get_name = sampling_get_name, - .get_period = sampling_get_period, - .enable = sampling_enable, - .disable = sampling_disable, - .get_ring_buf = sampling_get_ring_buf, - .run = sampling_run, -}; - -struct Interface counting_collector = { - .get_version = counting_get_version, - .get_description = counting_get_description, - .get_priority = counting_get_priority, - .get_type = counting_get_type, - .get_dep = counting_get_dep, - .get_name = counting_get_name, - .get_period = counting_get_period, - .enable = counting_enable, - .disable = counting_disable, - .get_ring_buf = counting_get_ring_buf, - .run = counting_run, -}; - -struct Interface uncore_collector = { - .get_version = uncore_get_version, - .get_description = uncore_get_description, - .get_priority = uncore_get_priority, - .get_type = uncore_get_type, - .get_dep = uncore_get_dep, - .get_name = uncore_get_name, - .get_period = uncore_get_period, - .enable = uncore_enable, - .disable = uncore_disable, - .get_ring_buf = uncore_get_ring_buf, - .run = uncore_run, -}; - -struct Interface spe_collector = { - .get_version = spe_get_version, - .get_description = spe_get_description, - .get_priority = spe_get_priority, - .get_type = spe_get_type, - .get_dep = spe_get_dep, - .get_name = spe_get_name, - .get_period = spe_get_period, - .enable = spe_enable, - .disable = spe_disable, - .get_ring_buf = spe_get_ring_buf, - .run = spe_run, -}; - -struct Interface netif_rx_collector = { - .get_version = netif_rx_get_version, - .get_description = netif_rx_get_description, - .get_priority = netif_rx_get_priority, - .get_type = netif_rx_get_type, - .get_dep = netif_rx_get_dep, - .get_name = netif_rx_get_name, - .get_period = netif_rx_get_period, - .enable = netif_rx_enable, - .disable = netif_rx_disable, - .get_ring_buf = netif_rx_get_ring_buf, - .run = netif_rx_run, -}; - -struct Interface g_napiGroRecEntryCollector = { - .get_version = NapiGroRecEntryGetVer, - .get_description = NapiGroRecEntryGetDes, - .get_priority = NapiGroRecEntryGetPriority, - .get_type = NapiGroRecEntryGetType, - .get_dep = NapiGroRecEntryGetDep, - .get_name = NapiGroRecEntryGetName, - .get_period = NapiGroRecEntryGetPeriod, - .enable = NapiGroRecEntryEnable, - .disable = NapiGroRecEntryDisable, - .get_ring_buf = NapiGroRecEntryGetBuf, - .run = NapiGroRecEntryRun, -}; - -struct Interface g_skbCopyDatagramIovecCollector = { - .get_version = SkbCopyDatagramIovecGetVer, - .get_description = SkbCopyDatagramIovecGetDes, - .get_priority = SkbCopyDatagramIovecGetPriority, - .get_type = SkbCopyDatagramIovecGetType, - .get_dep = SkbCopyDatagramIovecGetDep, - .get_name = SkbCopyDatagramIovecGetName, - .get_period = SkbCopyDatagramIovecGetPeriod, - .enable = SkbCopyDatagramIovecEnable, - .disable = SkbCopyDatagramIovecDisable, - .get_ring_buf = SkbCopyDatagramIovecGetBuf, - .run = SkbCopyDatagramIovecRun, -}; -int get_instance(struct Interface **interface) -{ - int ins_count = 0; - - ins_collector[ins_count++] = sampling_collector; - ins_collector[ins_count++] = counting_collector; - ins_collector[ins_count++] = uncore_collector; - ins_collector[ins_count++] = spe_collector; - ins_collector[ins_count++] = netif_rx_collector; - ins_collector[ins_count++] = g_napiGroRecEntryCollector; - ins_collector[ins_count++] = g_skbCopyDatagramIovecCollector; - *interface = &ins_collector[0]; - - return ins_count; -} diff --git a/src/plugin/collect/pmu/plugin/plugin_comm.c b/src/plugin/collect/pmu/plugin/plugin_comm.c deleted file mode 100644 index 401ef1f..0000000 --- a/src/plugin/collect/pmu/plugin/plugin_comm.c +++ /dev/null @@ -1,84 +0,0 @@ -/****************************************************************************** - * Copyright (c) 2024 Huawei Technologies Co., Ltd. All rights reserved. - * oeAware is licensed under Mulan PSL v2. - * You can use this software according to the terms and conditions of the Mulan PSL v2. - * You may obtain a copy of Mulan PSL v2 at: - * http://license.coscl.org.cn/MulanPSL2 - * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, - * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, - * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. - * See the Mulan PSL v2 for more details. - ******************************************************************************/ -#include -#include -#include -#include -#include "pmu.h" -#include "interface.h" - -struct DataRingBuf *init_buf(int buf_len, const char *instance_name) -{ - struct DataRingBuf *data_ringbuf; - - data_ringbuf = (struct DataRingBuf *)malloc(sizeof(struct DataRingBuf)); - if (!data_ringbuf) { - printf("malloc data_ringbuf failed\n"); - return NULL; - } - - (void)memset_s(data_ringbuf, sizeof(struct DataRingBuf), 0, sizeof(struct DataRingBuf)); - - data_ringbuf->instance_name = instance_name; - data_ringbuf->index = -1; - - data_ringbuf->buf = (struct DataBuf *)malloc(sizeof(struct DataBuf) * buf_len); - if (!data_ringbuf->buf) { - printf("malloc data_ringbuf buf failed\n"); - free(data_ringbuf); - data_ringbuf = NULL; - return NULL; - } - - (void)memset_s(data_ringbuf->buf, sizeof(struct DataBuf) * buf_len, 0, sizeof(struct DataBuf) * buf_len); - data_ringbuf->buf_len = buf_len; - - return data_ringbuf; -} - -void free_buf(struct DataRingBuf *data_ringbuf) -{ - if (!data_ringbuf) { - return; - } - - if (!data_ringbuf->buf) { - goto out; - } - - free(data_ringbuf->buf); - data_ringbuf->buf = NULL; - -out: - free(data_ringbuf); - data_ringbuf = NULL; -} - -void fill_buf(struct DataRingBuf *data_ringbuf, struct PmuData *pmu_data, int len) -{ - struct DataBuf *buf; - int index; - - index = (data_ringbuf->index + 1) % data_ringbuf->buf_len; - data_ringbuf->index = index; - data_ringbuf->count++; - buf = &data_ringbuf->buf[index]; - - if (buf->data != NULL) { - PmuDataFree(buf->data); - buf->data = NULL; - buf->len = 0; - } - - buf->len = len; - buf->data = (void *)pmu_data; -} diff --git a/src/plugin/collect/pmu/plugin/plugin_comm.h b/src/plugin/collect/pmu/plugin/plugin_comm.h deleted file mode 100644 index 1bdc239..0000000 --- a/src/plugin/collect/pmu/plugin/plugin_comm.h +++ /dev/null @@ -1,39 +0,0 @@ -/****************************************************************************** - * Copyright (c) 2024 Huawei Technologies Co., Ltd. All rights reserved. - * oeAware is licensed under Mulan PSL v2. - * You can use this software according to the terms and conditions of the Mulan PSL v2. - * You may obtain a copy of Mulan PSL v2 at: - * http://license.coscl.org.cn/MulanPSL2 - * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, - * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, - * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. - * See the Mulan PSL v2 for more details. - ******************************************************************************/ -#ifndef __PLUGIN_COMM_H__ -#define __PLUGIN_COMM_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -#define CYCLES_COUNTING_BUF_SIZE 10 -#define CYCLES_SAMPLING_BUF_SIZE 10 -#define UNCORE_BUF_SIZE 10 -#define SPE_BUF_SIZE 10 -#define NETIF_RX_BUF_SIZE 10 -#define NAPI_GRO_REC_ENTRY_BUF_SIZE 10 -#define SKB_COPY_DATAGRAM_IOVEC_BUF_SIZE 10 -#define NET_RECEIVE_TRACE_SAMPLE_PERIOD 10 - -struct DataRingBuf; -struct PmuData; - -struct DataRingBuf *init_buf(int buf_len, const char *instance_name); -void free_buf(struct DataRingBuf *data_ringbuf); -void fill_buf(struct DataRingBuf *data_ringbuf, struct PmuData *pmu_data, int len); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/src/plugin/collect/pmu/plugin/plugin_counting.c b/src/plugin/collect/pmu/plugin/plugin_counting.c deleted file mode 100644 index 39573fa..0000000 --- a/src/plugin/collect/pmu/plugin/plugin_counting.c +++ /dev/null @@ -1,174 +0,0 @@ -/****************************************************************************** - * Copyright (c) 2024 Huawei Technologies Co., Ltd. All rights reserved. - * oeAware is licensed under Mulan PSL v2. - * You can use this software according to the terms and conditions of the Mulan PSL v2. - * You may obtain a copy of Mulan PSL v2 at: - * http://license.coscl.org.cn/MulanPSL2 - * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, - * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, - * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. - * See the Mulan PSL v2 for more details. - ******************************************************************************/ -#include -#include -#include -#include -#include "pmu.h" -#include "pcerrc.h" -#include "interface.h" -#include "pmu_plugin.h" -#include "plugin_comm.h" -#include "plugin_counting.h" - -static bool counting_is_open = false; -static int counting_pd = -1; -static struct DataRingBuf *counting_buf = NULL; -struct PmuData *counting_data = NULL; - -static int counting_init() -{ - counting_buf = init_buf(CYCLES_COUNTING_BUF_SIZE, PMU_CYCLES_COUNTING); - if (!counting_buf) { - return -1; - } - - return 0; -} - -static void counting_fini() -{ - if (!counting_buf) { - return; - } - - free_buf(counting_buf); - counting_buf = NULL; -} - -static int counting_open() -{ - struct PmuAttr attr; - char *evtList[1]; - int pd; - - (void)memset_s(&attr, sizeof(struct PmuAttr), 0, sizeof(struct PmuAttr)); - - evtList[0] = "cycles"; - - attr.evtList = evtList; - attr.numEvt = 1; - attr.pidList = NULL; - attr.numPid = 0; - attr.cpuList = NULL; - attr.numCpu = 0; - - pd = PmuOpen(COUNTING, &attr); - if (pd == -1) { - printf("%s\n", Perror()); - return pd; - } - - counting_is_open = true; - return pd; -} - -static void counting_close() -{ - PmuClose(counting_pd); - counting_pd = -1; - counting_is_open = false; -} - -bool counting_enable() -{ - if (!counting_buf) { - int ret = counting_init(); - if (ret != 0) { - goto err; - } - } - - if (!counting_is_open) { - counting_pd = counting_open(); - if (counting_pd == -1) { - counting_fini(); - goto err; - } - } - - return PmuEnable(counting_pd) == 0; - -err: - return false; -} - -void counting_disable() -{ - PmuDisable(counting_pd); - counting_close(); - counting_fini(); -} - -const struct DataRingBuf *counting_get_ring_buf() -{ - return (const struct DataRingBuf *)counting_buf; -} - -static void counting_reflash_ring_buf() -{ - struct DataRingBuf *data_ringbuf; - int len; - - data_ringbuf = (struct DataRingBuf *)counting_buf; - if (!data_ringbuf) { - printf("counting_buf has no malloc\n"); - return; - } - - PmuDisable(counting_pd); - len = PmuRead(counting_pd, &counting_data); - PmuEnable(counting_pd); - - fill_buf(data_ringbuf, counting_data, len); -} - -void counting_run(const struct Param *param) -{ - (void)param; - counting_reflash_ring_buf(); -} - -const char *counting_get_version() -{ - return NULL; -} - -const char *counting_get_name() -{ - return PMU_CYCLES_COUNTING; -} - -const char *counting_get_description() -{ - return NULL; -} - -const char *counting_get_dep() -{ - return NULL; -} - -int counting_get_priority() -{ - return 0; -} - -int counting_get_type() -{ - return -1; -} - -int counting_get_period() -{ - return 100; -} diff --git a/src/plugin/collect/pmu/plugin/plugin_counting.h b/src/plugin/collect/pmu/plugin/plugin_counting.h deleted file mode 100644 index c414458..0000000 --- a/src/plugin/collect/pmu/plugin/plugin_counting.h +++ /dev/null @@ -1,35 +0,0 @@ -/****************************************************************************** - * Copyright (c) 2024 Huawei Technologies Co., Ltd. All rights reserved. - * oeAware is licensed under Mulan PSL v2. - * You can use this software according to the terms and conditions of the Mulan PSL v2. - * You may obtain a copy of Mulan PSL v2 at: - * http://license.coscl.org.cn/MulanPSL2 - * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, - * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, - * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. - * See the Mulan PSL v2 for more details. - ******************************************************************************/ -#ifndef __PLUGIN_COUNTING_H__ -#define __PLUGIN_COUNTING_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -const char *counting_get_version(); -const char *counting_get_name(); -const char *counting_get_description(); -const char *counting_get_dep(); -int counting_get_priority(); -int counting_get_type(); -int counting_get_period(); -bool counting_enable(); -void counting_disable(); -const struct DataRingBuf *counting_get_ring_buf(); -void counting_run(const struct Param *param); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/src/plugin/collect/pmu/plugin/plugin_napi_gro_receive_entry.c b/src/plugin/collect/pmu/plugin/plugin_napi_gro_receive_entry.c deleted file mode 100644 index 6c7b9a3..0000000 --- a/src/plugin/collect/pmu/plugin/plugin_napi_gro_receive_entry.c +++ /dev/null @@ -1,174 +0,0 @@ -/****************************************************************************** - * Copyright (c) 2024 Huawei Technologies Co., Ltd. All rights reserved. - * oeAware is licensed under Mulan PSL v2. - * You can use this software according to the terms and conditions of the Mulan PSL v2. - * You may obtain a copy of Mulan PSL v2 at: - * http://license.coscl.org.cn/MulanPSL2 - * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, - * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, - * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. - * See the Mulan PSL v2 for more details. - ******************************************************************************/ -#include -#include -#include -#include -#include "pmu.h" -#include "pcerrc.h" -#include "interface.h" -#include "pmu_plugin.h" -#include "plugin_comm.h" -#include "plugin_sampling.h" - -static bool g_samplingIsOpen = false; -static int g_samplingPd = -1; -static struct DataRingBuf *g_samplingBuf = NULL; -struct PmuData *g_pmuData = NULL; - -static int Init() -{ - g_samplingBuf = init_buf(NAPI_GRO_REC_ENTRY_BUF_SIZE, PMU_NAPI_GRO_REC_ENTRY); - if (!g_samplingBuf) { - return -1; - } - - return 0; -} - -static void Finish() -{ - if (!g_samplingBuf) { - return; - } - - free_buf(g_samplingBuf); - g_samplingBuf = NULL; -} - -static int Open() -{ - struct PmuAttr attr; - char *evtList[1]; - int pd; - - (void)memset_s(&attr, sizeof(struct PmuAttr), 0, sizeof(struct PmuAttr)); - - evtList[0] = "net:napi_gro_receive_entry"; - - attr.evtList = evtList; - attr.numEvt = 1; - attr.pidList = NULL; - attr.numPid = 0; - attr.cpuList = NULL; - attr.numCpu = 0; - attr.period = NET_RECEIVE_TRACE_SAMPLE_PERIOD; - - pd = PmuOpen(SAMPLING, &attr); - if (pd == -1) { - printf("%s\n", Perror()); - return pd; - } - - g_samplingIsOpen = true; - return pd; -} - -static void Close() -{ - PmuClose(g_samplingPd); - g_samplingPd = -1; - g_samplingIsOpen = false; -} - -bool NapiGroRecEntryEnable() -{ - if (!g_samplingBuf) { - int ret = Init(); - if (ret != 0) { - goto err; - } - } - - if (!g_samplingIsOpen) { - g_samplingPd = Open(); - if (g_samplingPd == -1) { - Finish(); - goto err; - } - } - - return PmuEnable(g_samplingPd) == 0; - -err: - return false; -} - -void NapiGroRecEntryDisable() -{ - PmuDisable(g_samplingPd); - Close(); - Finish(); -} - -const struct DataRingBuf *NapiGroRecEntryGetBuf() -{ - return (const struct DataRingBuf *)g_samplingBuf; -} - -static void NapiGroRecEntryReflashBuf() -{ - struct DataRingBuf *dataRingBuf; - int len; - - dataRingBuf = (struct DataRingBuf *)g_samplingBuf; - if (!dataRingBuf) { - printf("g_samplingBuf has not malloc\n"); - return; - } - - PmuDisable(g_samplingPd); - len = PmuRead(g_samplingPd, &g_pmuData); - PmuEnable(g_samplingPd); - fill_buf(dataRingBuf, g_pmuData, len); -} - -void NapiGroRecEntryRun(const struct Param *param) -{ - (void)param; - NapiGroRecEntryReflashBuf(); -} - -const char *NapiGroRecEntryGetVer() -{ - return NULL; -} - -const char *NapiGroRecEntryGetName() -{ - return PMU_NAPI_GRO_REC_ENTRY; -} - -const char *NapiGroRecEntryGetDes() -{ - return "event used to collect net queue info"; -} - -const char *NapiGroRecEntryGetDep() -{ - return NULL; -} - -int NapiGroRecEntryGetPriority() -{ - return 0; -} - -int NapiGroRecEntryGetType() -{ - return -1; -} - -int NapiGroRecEntryGetPeriod() -{ - return 100; // 100ms -} diff --git a/src/plugin/collect/pmu/plugin/plugin_napi_gro_receive_entry.h b/src/plugin/collect/pmu/plugin/plugin_napi_gro_receive_entry.h deleted file mode 100644 index 14469d9..0000000 --- a/src/plugin/collect/pmu/plugin/plugin_napi_gro_receive_entry.h +++ /dev/null @@ -1,35 +0,0 @@ -/****************************************************************************** - * Copyright (c) 2024 Huawei Technologies Co., Ltd. All rights reserved. - * oeAware is licensed under Mulan PSL v2. - * You can use this software according to the terms and conditions of the Mulan PSL v2. - * You may obtain a copy of Mulan PSL v2 at: - * http://license.coscl.org.cn/MulanPSL2 - * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, - * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, - * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. - * See the Mulan PSL v2 for more details. - ******************************************************************************/ -#ifndef __PMU_NAPI_GRO_RECEIVE_ENTRY_H__ -#define __PMU_NAPI_GRO_RECEIVE_ENTRY_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -const char *NapiGroRecEntryGetVer(); -const char *NapiGroRecEntryGetName(); -const char *NapiGroRecEntryGetDes(); -const char *NapiGroRecEntryGetDep(); -int NapiGroRecEntryGetPriority(); -int NapiGroRecEntryGetType(); -int NapiGroRecEntryGetPeriod(); -bool NapiGroRecEntryEnable(); -void NapiGroRecEntryDisable(); -const struct DataRingBuf *NapiGroRecEntryGetBuf(); -void NapiGroRecEntryRun(const struct Param *param); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/src/plugin/collect/pmu/plugin/plugin_netif_rx.c b/src/plugin/collect/pmu/plugin/plugin_netif_rx.c deleted file mode 100644 index 78f52d2..0000000 --- a/src/plugin/collect/pmu/plugin/plugin_netif_rx.c +++ /dev/null @@ -1,173 +0,0 @@ -/****************************************************************************** - * Copyright (c) 2024 Huawei Technologies Co., Ltd. All rights reserved. - * oeAware is licensed under Mulan PSL v2. - * You can use this software according to the terms and conditions of the Mulan PSL v2. - * You may obtain a copy of Mulan PSL v2 at: - * http://license.coscl.org.cn/MulanPSL2 - * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, - * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, - * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. - * See the Mulan PSL v2 for more details. - ******************************************************************************/ -#include -#include -#include -#include -#include "pmu.h" -#include "pcerrc.h" -#include "interface.h" -#include "pmu_plugin.h" -#include "plugin_comm.h" - -static bool event_is_open = false; -static int pmu_id = -1; -static struct DataRingBuf *ring_buf = NULL; -struct PmuData *pmu_data = NULL; - -static int init() -{ - ring_buf = init_buf(NETIF_RX_BUF_SIZE, PMU_NETIF_RX); - if (!ring_buf) { - return -1; - } - - return 0; -} - -static void finish() -{ - if (!ring_buf) { - return; - } - - free_buf(ring_buf); - ring_buf = NULL; -} - -static int open() -{ - struct PmuAttr attr; - char *evtList[1]; - int pd; - - (void)memset_s(&attr, sizeof(struct PmuAttr), 0, sizeof(struct PmuAttr)); - - evtList[0] = "net:netif_rx"; - - attr.evtList = evtList; - attr.numEvt = 1; - attr.pidList = NULL; - attr.numPid = 0; - attr.cpuList = NULL; - attr.numCpu = 0; - - pd = PmuOpen(COUNTING, &attr); - if (pd == -1) { - printf("%s\n", Perror()); - return pd; - } - - event_is_open = true; - return pd; -} - -static void netif_rx_close() -{ - PmuClose(pmu_id); - pmu_id = -1; - event_is_open = false; -} - -bool netif_rx_enable() -{ - if (!ring_buf) { - int ret = init(); - if (ret != 0) { - goto err; - } - } - - if (!event_is_open) { - pmu_id = open(); - if (pmu_id == -1) { - finish(); - goto err; - } - } - - return PmuEnable(pmu_id) == 0; - -err: - return false; -} - -void netif_rx_disable() -{ - PmuDisable(pmu_id); - netif_rx_close(); - finish(); -} - -const struct DataRingBuf *netif_rx_get_ring_buf() -{ - return (const struct DataRingBuf *)ring_buf; -} - -static void reflash_ring_buf() -{ - struct DataRingBuf *data_ringbuf; - int len; - - data_ringbuf = (struct DataRingBuf *)ring_buf; - if (!data_ringbuf) { - printf("ring_buf has not malloc\n"); - return; - } - - PmuDisable(pmu_id); - len = PmuRead(pmu_id, &pmu_data); - PmuEnable(pmu_id); - - fill_buf(data_ringbuf, pmu_data, len); -} - -void netif_rx_run(const struct Param *param) -{ - (void)param; - reflash_ring_buf(); -} - -const char *netif_rx_get_version() -{ - return NULL; -} - -const char *netif_rx_get_name() -{ - return PMU_NETIF_RX; -} - -const char *netif_rx_get_description() -{ - return NULL; -} - -const char *netif_rx_get_dep() -{ - return NULL; -} - -int netif_rx_get_priority() -{ - return 0; -} - -int netif_rx_get_type() -{ - return -1; -} - -int netif_rx_get_period() -{ - return 100; -} diff --git a/src/plugin/collect/pmu/plugin/plugin_netif_rx.h b/src/plugin/collect/pmu/plugin/plugin_netif_rx.h deleted file mode 100644 index 0c82936..0000000 --- a/src/plugin/collect/pmu/plugin/plugin_netif_rx.h +++ /dev/null @@ -1,35 +0,0 @@ -/****************************************************************************** - * Copyright (c) 2024 Huawei Technologies Co., Ltd. All rights reserved. - * oeAware is licensed under Mulan PSL v2. - * You can use this software according to the terms and conditions of the Mulan PSL v2. - * You may obtain a copy of Mulan PSL v2 at: - * http://license.coscl.org.cn/MulanPSL2 - * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, - * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, - * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. - * See the Mulan PSL v2 for more details. - ******************************************************************************/ -#ifndef __PLUGIN_NETIF_RX_H__ -#define __PLUGIN_NETIF_RX_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -const char *netif_rx_get_version(); -const char *netif_rx_get_name(); -const char *netif_rx_get_description(); -const char *netif_rx_get_dep(); -int netif_rx_get_priority(); -int netif_rx_get_type(); -int netif_rx_get_period(); -bool netif_rx_enable(); -void netif_rx_disable(); -const struct DataRingBuf *netif_rx_get_ring_buf(); -void netif_rx_run(const struct Param *param); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/src/plugin/collect/pmu/plugin/plugin_sampling.c b/src/plugin/collect/pmu/plugin/plugin_sampling.c deleted file mode 100644 index 35e5dfb..0000000 --- a/src/plugin/collect/pmu/plugin/plugin_sampling.c +++ /dev/null @@ -1,176 +0,0 @@ -/****************************************************************************** - * Copyright (c) 2024 Huawei Technologies Co., Ltd. All rights reserved. - * oeAware is licensed under Mulan PSL v2. - * You can use this software according to the terms and conditions of the Mulan PSL v2. - * You may obtain a copy of Mulan PSL v2 at: - * http://license.coscl.org.cn/MulanPSL2 - * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, - * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, - * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. - * See the Mulan PSL v2 for more details. - ******************************************************************************/ -#include -#include -#include -#include -#include "pmu.h" -#include "pcerrc.h" -#include "interface.h" -#include "pmu_plugin.h" -#include "plugin_comm.h" -#include "plugin_sampling.h" - -static bool sampling_is_open = false; -static int sampling_pd = -1; -static struct DataRingBuf *sampling_buf = NULL; -struct PmuData *sampling_data = NULL; - -static int sampling_init() -{ - sampling_buf = init_buf(CYCLES_SAMPLING_BUF_SIZE, PMU_CYCLES_SAMPLING); - if (!sampling_buf) { - return -1; - } - - return 0; -} - -static void sampling_fini() -{ - if (!sampling_buf) { - return; - } - - free_buf(sampling_buf); - sampling_buf = NULL; -} - -static int sampling_open() -{ - struct PmuAttr attr; - char *evtList[1]; - int pd; - - (void)memset_s(&attr, sizeof(struct PmuAttr), 0, sizeof(struct PmuAttr)); - - evtList[0] = "cycles"; - - attr.evtList = evtList; - attr.numEvt = 1; - attr.pidList = NULL; - attr.numPid = 0; - attr.cpuList = NULL; - attr.numCpu = 0; - attr.freq = 100; - attr.useFreq = 1; - - pd = PmuOpen(SAMPLING, &attr); - if (pd == -1) { - printf("%s\n", Perror()); - return pd; - } - - sampling_is_open = true; - return pd; -} - -static void sampling_close() -{ - PmuClose(sampling_pd); - sampling_pd = -1; - sampling_is_open = false; -} - -bool sampling_enable() -{ - if (!sampling_buf) { - int ret = sampling_init(); - if (ret != 0) { - goto err; - } - } - - if (!sampling_is_open) { - sampling_pd = sampling_open(); - if (sampling_pd == -1) { - sampling_fini(); - goto err; - } - } - - return PmuEnable(sampling_pd) == 0; - -err: - return false; -} - -void sampling_disable() -{ - PmuDisable(sampling_pd); - sampling_close(); - sampling_fini(); -} - -const struct DataRingBuf *sampling_get_ring_buf() -{ - return (const struct DataRingBuf *)sampling_buf; -} - -static void sampling_reflash_ring_buf() -{ - struct DataRingBuf *data_ringbuf; - int len; - - data_ringbuf = (struct DataRingBuf *)sampling_buf; - if (!data_ringbuf) { - printf("sampling_buf has not malloc\n"); - return; - } - - PmuDisable(sampling_pd); - len = PmuRead(sampling_pd, &sampling_data); - PmuEnable(sampling_pd); - - fill_buf(data_ringbuf, sampling_data, len); -} - -void sampling_run(const struct Param *param) -{ - (void)param; - sampling_reflash_ring_buf(); -} - -const char *sampling_get_version() -{ - return NULL; -} - -const char *sampling_get_name() -{ - return PMU_CYCLES_SAMPLING; -} - -const char *sampling_get_description() -{ - return NULL; -} - -const char *sampling_get_dep() -{ - return NULL; -} - -int sampling_get_priority() -{ - return 0; -} - -int sampling_get_type() -{ - return -1; -} - -int sampling_get_period() -{ - return 100; -} diff --git a/src/plugin/collect/pmu/plugin/plugin_sampling.h b/src/plugin/collect/pmu/plugin/plugin_sampling.h deleted file mode 100644 index 066d74f..0000000 --- a/src/plugin/collect/pmu/plugin/plugin_sampling.h +++ /dev/null @@ -1,35 +0,0 @@ -/****************************************************************************** - * Copyright (c) 2024 Huawei Technologies Co., Ltd. All rights reserved. - * oeAware is licensed under Mulan PSL v2. - * You can use this software according to the terms and conditions of the Mulan PSL v2. - * You may obtain a copy of Mulan PSL v2 at: - * http://license.coscl.org.cn/MulanPSL2 - * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, - * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, - * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. - * See the Mulan PSL v2 for more details. - ******************************************************************************/ -#ifndef __PLUGIN_SAMPLING_H__ -#define __PLUGIN_SAMPLING_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -const char *sampling_get_version(); -const char *sampling_get_name(); -const char *sampling_get_description(); -const char *sampling_get_dep(); -int sampling_get_priority(); -int sampling_get_type(); -int sampling_get_period(); -bool sampling_enable(); -void sampling_disable(); -const struct DataRingBuf *sampling_get_ring_buf(); -void sampling_run(const struct Param *param); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/src/plugin/collect/pmu/plugin/plugin_skb_copy_datagram_iovec.c b/src/plugin/collect/pmu/plugin/plugin_skb_copy_datagram_iovec.c deleted file mode 100644 index ae4abef..0000000 --- a/src/plugin/collect/pmu/plugin/plugin_skb_copy_datagram_iovec.c +++ /dev/null @@ -1,174 +0,0 @@ -/****************************************************************************** - * Copyright (c) 2024 Huawei Technologies Co., Ltd. All rights reserved. - * oeAware is licensed under Mulan PSL v2. - * You can use this software according to the terms and conditions of the Mulan PSL v2. - * You may obtain a copy of Mulan PSL v2 at: - * http://license.coscl.org.cn/MulanPSL2 - * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, - * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, - * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. - * See the Mulan PSL v2 for more details. - ******************************************************************************/ -#include -#include -#include -#include -#include "pmu.h" -#include "pcerrc.h" -#include "interface.h" -#include "pmu_plugin.h" -#include "plugin_comm.h" -#include "plugin_sampling.h" - -static bool g_samplingIsOpen = false; -static int g_samplingPd = -1; -static struct DataRingBuf *g_samplingBuf = NULL; -static struct PmuData *g_pmuData = NULL; - -static int Init() -{ - g_samplingBuf = init_buf(SKB_COPY_DATAGRAM_IOVEC_BUF_SIZE, PMU_SKB_COPY_DATEGRAM_IOVEC); - if (!g_samplingBuf) { - return -1; - } - - return 0; -} - -static void Finish() -{ - if (!g_samplingBuf) { - return; - } - - free_buf(g_samplingBuf); - g_samplingBuf = NULL; -} - -static int Open() -{ - struct PmuAttr attr; - char *evtList[1]; - int pd; - - (void)memset_s(&attr, sizeof(struct PmuAttr), 0, sizeof(struct PmuAttr)); - - evtList[0] = "skb:skb_copy_datagram_iovec"; - - attr.evtList = evtList; - attr.numEvt = 1; - attr.pidList = NULL; - attr.numPid = 0; - attr.cpuList = NULL; - attr.numCpu = 0; - attr.period = NET_RECEIVE_TRACE_SAMPLE_PERIOD; - - pd = PmuOpen(SAMPLING, &attr); - if (pd == -1) { - printf("%s\n", Perror()); - return pd; - } - - g_samplingIsOpen = true; - return pd; -} - -static void Close() -{ - PmuClose(g_samplingPd); - g_samplingPd = -1; - g_samplingIsOpen = false; -} - -bool SkbCopyDatagramIovecEnable() -{ - if (!g_samplingBuf) { - int ret = Init(); - if (ret != 0) { - goto err; - } - } - - if (!g_samplingIsOpen) { - g_samplingPd = Open(); - if (g_samplingPd == -1) { - Finish(); - goto err; - } - } - - return PmuEnable(g_samplingPd) == 0; - -err: - return false; -} - -void SkbCopyDatagramIovecDisable() -{ - PmuDisable(g_samplingPd); - Close(); - Finish(); -} - -const struct DataRingBuf *SkbCopyDatagramIovecGetBuf() -{ - return (const struct DataRingBuf *)g_samplingBuf; -} - -static void SkbCopyDatagramIovecReflashBuf() -{ - struct DataRingBuf *dataRingBuf; - int len; - - dataRingBuf = (struct DataRingBuf *)g_samplingBuf; - if (!dataRingBuf) { - printf("g_samplingBuf has not malloc\n"); - return; - } - - PmuDisable(g_samplingPd); - len = PmuRead(g_samplingPd, &g_pmuData); - PmuEnable(g_samplingPd); - fill_buf(dataRingBuf, g_pmuData, len); -} - -void SkbCopyDatagramIovecRun(const struct Param *param) -{ - (void)param; - SkbCopyDatagramIovecReflashBuf(); -} - -const char *SkbCopyDatagramIovecGetVer() -{ - return NULL; -} - -const char *SkbCopyDatagramIovecGetName() -{ - return PMU_SKB_COPY_DATEGRAM_IOVEC; -} - -const char *SkbCopyDatagramIovecGetDes() -{ - return "event used to collect recv skb addr info"; -} - -const char *SkbCopyDatagramIovecGetDep() -{ - return NULL; -} - -int SkbCopyDatagramIovecGetPriority() -{ - return 0; -} - -int SkbCopyDatagramIovecGetType() -{ - return -1; -} - -int SkbCopyDatagramIovecGetPeriod() -{ - return 100; // 100ms -} diff --git a/src/plugin/collect/pmu/plugin/plugin_skb_copy_datagram_iovec.h b/src/plugin/collect/pmu/plugin/plugin_skb_copy_datagram_iovec.h deleted file mode 100644 index 49c5202..0000000 --- a/src/plugin/collect/pmu/plugin/plugin_skb_copy_datagram_iovec.h +++ /dev/null @@ -1,35 +0,0 @@ -/****************************************************************************** - * Copyright (c) 2024 Huawei Technologies Co., Ltd. All rights reserved. - * oeAware is licensed under Mulan PSL v2. - * You can use this software according to the terms and conditions of the Mulan PSL v2. - * You may obtain a copy of Mulan PSL v2 at: - * http://license.coscl.org.cn/MulanPSL2 - * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, - * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, - * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. - * See the Mulan PSL v2 for more details. - ******************************************************************************/ -#ifndef __PLUGIN_SKB_COPY_DATAGRAM_IOVEC_H__ -#define __PLUGIN_SKB_COPY_DATAGRAM_IOVEC_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -const char *SkbCopyDatagramIovecGetVer(); -const char *SkbCopyDatagramIovecGetName(); -const char *SkbCopyDatagramIovecGetDes(); -const char *SkbCopyDatagramIovecGetDep(); -int SkbCopyDatagramIovecGetPriority(); -int SkbCopyDatagramIovecGetType(); -int SkbCopyDatagramIovecGetPeriod(); -bool SkbCopyDatagramIovecEnable(); -void SkbCopyDatagramIovecDisable(); -const struct DataRingBuf *SkbCopyDatagramIovecGetBuf(); -void SkbCopyDatagramIovecRun(const struct Param *param); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/src/plugin/collect/pmu/plugin/plugin_spe.c b/src/plugin/collect/pmu/plugin/plugin_spe.c deleted file mode 100644 index 52c31c3..0000000 --- a/src/plugin/collect/pmu/plugin/plugin_spe.c +++ /dev/null @@ -1,174 +0,0 @@ -/****************************************************************************** - * Copyright (c) 2024 Huawei Technologies Co., Ltd. All rights reserved. - * oeAware is licensed under Mulan PSL v2. - * You can use this software according to the terms and conditions of the Mulan PSL v2. - * You may obtain a copy of Mulan PSL v2 at: - * http://license.coscl.org.cn/MulanPSL2 - * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, - * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, - * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. - * See the Mulan PSL v2 for more details. - ******************************************************************************/ -#include -#include -#include -#include -#include "pmu.h" -#include "pcerrc.h" -#include "interface.h" -#include "pmu_plugin.h" -#include "plugin_comm.h" -#include "plugin_spe.h" - -static bool spe_is_open = false; -static int spe_pd = -1; -static struct DataRingBuf *spe_buf = NULL; -struct PmuData *spe_data = NULL; - -static int spe_init() -{ - spe_buf = init_buf(SPE_BUF_SIZE, PMU_SPE); - if (!spe_buf) { - return -1; - } - - return 0; -} - -static void spe_fini() -{ - if (!spe_buf) { - return; - } - - free_buf(spe_buf); - spe_buf = NULL; -} - -static int spe_open() -{ - struct PmuAttr attr; - int pd; - - (void)memset_s(&attr, sizeof(struct PmuAttr), 0, sizeof(struct PmuAttr)); - - attr.evtList = NULL; - attr.numEvt = 0; - attr.pidList = NULL; - attr.numPid = 0; - attr.cpuList = NULL; - attr.numCpu = 0; - attr.period = 2048; - attr.dataFilter = SPE_DATA_ALL; - attr.evFilter = SPE_EVENT_RETIRED; - attr.minLatency = 0x60; - - pd = PmuOpen(SPE_SAMPLING, &attr); - if (pd == -1) { - printf("%s\n", Perror()); - return pd; - } - - spe_is_open = true; - return pd; -} - -static void spe_close() -{ - PmuClose(spe_pd); - spe_pd = -1; - spe_is_open = false; -} - -bool spe_enable() -{ - if (!spe_buf) { - int ret = spe_init(); - if (ret != 0) { - goto err; - } - } - - if (!spe_is_open) { - spe_pd = spe_open(); - if (spe_pd == -1) { - spe_fini(); - goto err; - } - } - - return PmuEnable(spe_pd) == 0; - -err: - return false; -} - -void spe_disable() -{ - PmuDisable(spe_pd); - spe_close(); - spe_fini(); -} - -const struct DataRingBuf *spe_get_ring_buf() -{ - return (const struct DataRingBuf *)spe_buf; -} - -static void spe_reflash_ring_buf() -{ - struct DataRingBuf *data_ringbuf; - int len; - - data_ringbuf = (struct DataRingBuf *)spe_buf; - if (!data_ringbuf) { - printf("spe_buf has not malloc\n"); - return; - } - - // while using PMU_SPE, PmuRead internally calls PmuEnable and PmuDisable - len = PmuRead(spe_pd, &spe_data); - - fill_buf(data_ringbuf, spe_data, len); -} - -void spe_run(const struct Param *param) -{ - (void)param; - spe_reflash_ring_buf(); -} - -const char *spe_get_version() -{ - return NULL; -} - -const char *spe_get_name() -{ - return PMU_SPE; -} - -const char *spe_get_description() -{ - return NULL; -} - -const char *spe_get_dep() -{ - return NULL; -} - -int spe_get_priority() -{ - return 0; -} - -int spe_get_type() -{ - return -1; -} - -int spe_get_period() -{ - return 100; -} diff --git a/src/plugin/collect/pmu/plugin/plugin_spe.h b/src/plugin/collect/pmu/plugin/plugin_spe.h deleted file mode 100644 index 11bb71f..0000000 --- a/src/plugin/collect/pmu/plugin/plugin_spe.h +++ /dev/null @@ -1,35 +0,0 @@ -/****************************************************************************** - * Copyright (c) 2024 Huawei Technologies Co., Ltd. All rights reserved. - * oeAware is licensed under Mulan PSL v2. - * You can use this software according to the terms and conditions of the Mulan PSL v2. - * You may obtain a copy of Mulan PSL v2 at: - * http://license.coscl.org.cn/MulanPSL2 - * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, - * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, - * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. - * See the Mulan PSL v2 for more details. - ******************************************************************************/ -#ifndef __PLUGIN_SPE_H__ -#define __PLUGIN_SPE_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -const char *spe_get_version(); -const char *spe_get_name(); -const char *spe_get_description(); -const char *spe_get_dep(); -int spe_get_priority(); -int spe_get_type(); -int spe_get_period(); -bool spe_enable(); -void spe_disable(); -const struct DataRingBuf *spe_get_ring_buf(); -void spe_run(const struct Param *param); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/src/plugin/collect/pmu/plugin/plugin_uncore.c b/src/plugin/collect/pmu/plugin/plugin_uncore.c deleted file mode 100644 index 9b845db..0000000 --- a/src/plugin/collect/pmu/plugin/plugin_uncore.c +++ /dev/null @@ -1,199 +0,0 @@ -/****************************************************************************** - * Copyright (c) 2024 Huawei Technologies Co., Ltd. All rights reserved. - * oeAware is licensed under Mulan PSL v2. - * You can use this software according to the terms and conditions of the Mulan PSL v2. - * You may obtain a copy of Mulan PSL v2 at: - * http://license.coscl.org.cn/MulanPSL2 - * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, - * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, - * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. - * See the Mulan PSL v2 for more details. - ******************************************************************************/ -#include -#include -#include -#include -#include "pmu.h" -#include "pcerrc.h" -#include "interface.h" -#include "pmu_plugin.h" -#include "plugin_comm.h" -#include "plugin_uncore.h" -#include "pmu_uncore.h" - -static bool uncore_is_open = false; -static int uncore_pd = -1; -static struct DataRingBuf *uncore_buf = NULL; -struct PmuData *uncore_data = NULL; - -static int uncore_init() -{ - uncore_buf = init_buf(UNCORE_BUF_SIZE, PMU_UNCORE); - if (!uncore_buf) { - return -1; - } - - return 0; -} - -static void uncore_fini() -{ - if (!uncore_buf) { - return; - } - - free_buf(uncore_buf); - uncore_buf = NULL; -} - -static int uncore_open() -{ - struct PmuAttr attr; - struct uncore_config *rx_outer; - struct uncore_config *rx_sccl; - struct uncore_config *rx_ops_num; - int hha_num; - int pd = -1; - int ret; - - // Base on oeAware framework, uncore_open is called within uncore_enable. - // If pmu_uncore is not supported, it will generate a large number of error logs. - // So temporarily set uncore_is_open = true util oeAware framework provides open API. - uncore_is_open = true; - - ret = hha_uncore_config_init(); - if (ret != 0) { - printf("This system not support pmu_uncore\n"); - return pd; - } - - hha_num = get_uncore_hha_num(); - rx_outer = get_rx_outer(); - rx_sccl = get_rx_sccl(); - rx_ops_num = get_rx_ops_num(); - - char *evtList[hha_num * UNCORE_MAX]; - for (int i = 0; i < hha_num; i++) { - evtList[i + hha_num * RX_OUTER] = rx_outer[i].uncore_name; - evtList[i + hha_num * RX_SCCL] = rx_sccl[i].uncore_name; - evtList[i + hha_num * RX_OPS_NUM] = rx_ops_num[i].uncore_name; - } - - (void)memset_s(&attr, sizeof(struct PmuAttr), 0, sizeof(struct PmuAttr)); - - attr.evtList = evtList; - attr.numEvt = hha_num * UNCORE_MAX; - attr.pidList = NULL; - attr.numPid = 0; - attr.cpuList = NULL; - attr.numCpu = 0; - - pd = PmuOpen(COUNTING, &attr); - if (pd == -1) { - printf("%s\n", Perror()); - return pd; - } - - return pd; -} - -static void uncore_close() -{ - PmuClose(uncore_pd); - uncore_pd = -1; - uncore_is_open = false; -} - -bool uncore_enable() -{ - if (!uncore_buf) { - int ret = uncore_init(); - if (ret != 0) { - goto err; - } - } - - if (!uncore_is_open) { - uncore_pd = uncore_open(); - if (uncore_pd == -1) { - uncore_fini(); - goto err; - } - } - - return PmuEnable(uncore_pd) == 0; - -err: - return false; -} - -void uncore_disable() -{ - PmuDisable(uncore_pd); - uncore_close(); - uncore_fini(); -} - -const struct DataRingBuf *uncore_get_ring_buf() -{ - return (const struct DataRingBuf *)uncore_buf; -} - -static void uncore_reflash_ring_buf() -{ - struct DataRingBuf *data_ringbuf; - int len; - - data_ringbuf = (struct DataRingBuf *)uncore_buf; - if (!data_ringbuf) { - printf("uncore_buf has not malloc\n"); - return; - } - - PmuDisable(uncore_pd); - len = PmuRead(uncore_pd, &uncore_data); - PmuEnable(uncore_pd); - - fill_buf(data_ringbuf, uncore_data, len); -} - -void uncore_run(const struct Param *param) -{ - (void)param; - uncore_reflash_ring_buf(); -} - -const char *uncore_get_version() -{ - return NULL; -} - -const char *uncore_get_name() -{ - return PMU_UNCORE; -} - -const char *uncore_get_description() -{ - return NULL; -} - -const char *uncore_get_dep() -{ - return NULL; -} - -int uncore_get_priority() -{ - return 0; -} - -int uncore_get_type() -{ - return -1; -} - -int uncore_get_period() -{ - return 100; -} diff --git a/src/plugin/collect/pmu/plugin/plugin_uncore.h b/src/plugin/collect/pmu/plugin/plugin_uncore.h deleted file mode 100644 index a15d950..0000000 --- a/src/plugin/collect/pmu/plugin/plugin_uncore.h +++ /dev/null @@ -1,35 +0,0 @@ -/****************************************************************************** - * Copyright (c) 2024 Huawei Technologies Co., Ltd. All rights reserved. - * oeAware is licensed under Mulan PSL v2. - * You can use this software according to the terms and conditions of the Mulan PSL v2. - * You may obtain a copy of Mulan PSL v2 at: - * http://license.coscl.org.cn/MulanPSL2 - * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, - * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, - * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. - * See the Mulan PSL v2 for more details. - ******************************************************************************/ -#ifndef __PLUGIN_UNCORE_H__ -#define __PLUGIN_UNCORE_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -const char *uncore_get_version(); -const char *uncore_get_name(); -const char *uncore_get_description(); -const char *uncore_get_dep(); -int uncore_get_priority(); -int uncore_get_type(); -int uncore_get_period(); -bool uncore_enable(); -void uncore_disable(); -const struct DataRingBuf *uncore_get_ring_buf(); -void uncore_run(const struct Param *param); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/src/plugin/collect/pmu/plugin/pmu_uncore.c b/src/plugin/collect/pmu/plugin/pmu_uncore.c deleted file mode 100644 index 71dcda1..0000000 --- a/src/plugin/collect/pmu/plugin/pmu_uncore.c +++ /dev/null @@ -1,142 +0,0 @@ -/****************************************************************************** - * Copyright (c) 2024 Huawei Technologies Co., Ltd. All rights reserved. - * oeAware is licensed under Mulan PSL v2. - * You can use this software according to the terms and conditions of the Mulan PSL v2. - * You may obtain a copy of Mulan PSL v2 at: - * http://license.coscl.org.cn/MulanPSL2 - * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, - * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, - * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. - * See the Mulan PSL v2 for more details. - ******************************************************************************/ -#include -#include -#include -#include -#include -#include "pmu_uncore.h" - -static int hha_num = 0; -static struct uncore_config *uncore_rx_outer = NULL; -static struct uncore_config *uncore_rx_sccl = NULL; -static struct uncore_config *uncore_rx_ops_num = NULL; - -int get_uncore_hha_num() -{ - return hha_num; -} - -struct uncore_config *get_rx_outer() -{ - return uncore_rx_outer; -} - -struct uncore_config *get_rx_sccl() -{ - return uncore_rx_sccl; -} - -struct uncore_config *get_rx_ops_num() -{ - return uncore_rx_ops_num; -} - -static int read_single_uncore_event(const char *hha_name, struct uncore_config *uncore_event, const char *event_name) -{ - char hha_path[MAX_PATH_LEN] = {0}; - - // Read cfg - snprintf_truncated_s(hha_path, MAX_PATH_LEN, "%s/%s/", hha_name, event_name); - - strcpy(uncore_event->uncore_name, hha_path); - - return 0; -} - -static void free_namelist(int n, struct dirent **namelist) -{ - while (n--) { - free(namelist[n]); - } - free(namelist); -} - -static int hha_read_uncore_config(int n, struct dirent **namelist) -{ - int index = 0; - - while (index < n) { - if (read_single_uncore_event(namelist[index]->d_name, &uncore_rx_outer[index], "rx_outer") != 0) { - return -1; - } - if (read_single_uncore_event(namelist[index]->d_name, &uncore_rx_sccl[index], "rx_sccl") != 0) { - return -1; - } - if (read_single_uncore_event(namelist[index]->d_name, &uncore_rx_ops_num[index], "rx_ops_num") != 0) { - return -1; - } - - index++; - } - - return 0; -} - -static int hha_scandir_select(const struct dirent *ptr) -{ - int ret = 0; - if (strstr(ptr->d_name, "hha") != NULL) { - ret = 1; - } - - return ret; -} - -int hha_uncore_config_init(void) -{ - int ret; - struct dirent **namelist; - - hha_num = scandir(DEVICE_PATH, &namelist, hha_scandir_select, alphasort); - if (hha_num <= 0) { - printf("scandir failed\n"); - return -1; - } - - uncore_rx_outer = (struct uncore_config *)calloc(hha_num, sizeof(struct uncore_config)); - if (uncore_rx_outer == NULL) { - free_namelist(hha_num, namelist); - return -1; - } - uncore_rx_sccl = (struct uncore_config *)calloc(hha_num, sizeof(struct uncore_config)); - if (uncore_rx_sccl == NULL) { // free uncore_rx_sccl in function uncore_config_fini - free_namelist(hha_num, namelist); - return -1; - } - uncore_rx_ops_num = (struct uncore_config *)calloc(hha_num, sizeof(struct uncore_config)); - if (uncore_rx_ops_num == NULL) { // free uncore_rx_ops_num in function uncore_config_fini - free_namelist(hha_num, namelist); - return -1; - } - - ret = hha_read_uncore_config(hha_num, namelist); - free_namelist(hha_num, namelist); - - return ret; -} - -void uncore_config_fini(void) -{ -#define UNCORE_CONFIG_FREE(uncore_event) do { \ - if (uncore_event != NULL) { \ - free(uncore_event); \ - uncore_event = NULL; \ - } \ -} while (0) - - UNCORE_CONFIG_FREE(uncore_rx_outer); - UNCORE_CONFIG_FREE(uncore_rx_sccl); - UNCORE_CONFIG_FREE(uncore_rx_ops_num); - - hha_num = 0; -} diff --git a/src/plugin/collect/pmu/plugin/pmu_uncore.h b/src/plugin/collect/pmu/plugin/pmu_uncore.h deleted file mode 100644 index d49208c..0000000 --- a/src/plugin/collect/pmu/plugin/pmu_uncore.h +++ /dev/null @@ -1,45 +0,0 @@ -/****************************************************************************** - * Copyright (c) 2024 Huawei Technologies Co., Ltd. All rights reserved. - * oeAware is licensed under Mulan PSL v2. - * You can use this software according to the terms and conditions of the Mulan PSL v2. - * You may obtain a copy of Mulan PSL v2 at: - * http://license.coscl.org.cn/MulanPSL2 - * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, - * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, - * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. - * See the Mulan PSL v2 for more details. - ******************************************************************************/ -#ifndef __PMU_UNCORE_H__ -#define __PMU_UNCORE_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -#define UNCORE_NAME_SIZE 256 -#define MAX_PATH_LEN 256 -#define DEVICE_PATH "/sys/devices/" - -struct uncore_config { - char uncore_name[UNCORE_NAME_SIZE]; -}; - -enum uncore_type { - RX_OUTER, - RX_SCCL, - RX_OPS_NUM, - UNCORE_MAX, -}; - -int get_uncore_hha_num(void); -struct uncore_config *get_rx_outer(void); -struct uncore_config *get_rx_sccl(void); -struct uncore_config *get_rx_ops_num(void); -int hha_uncore_config_init(void); -void uncore_config_fini(void); - -#ifdef __cplusplus -} -#endif - -#endif -- 2.33.0