From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 8C987A0577; Mon, 13 Apr 2020 17:08:57 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 1BB1A1C11B; Mon, 13 Apr 2020 17:03:24 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by dpdk.org (Postfix) with ESMTP id 1B1591BEE7 for ; Mon, 13 Apr 2020 17:03:23 +0200 (CEST) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 03DF1giO023220; Mon, 13 Apr 2020 08:03:22 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding : content-type; s=pfpt0818; bh=2O7a0qKi8wCJO6efUve7SRBRN5aUrDA5UJIqAhNFFvE=; b=e0+CHWgpNiOqf8J2EP97a1a7pV1qpVrTP44o3Gnt0k4QU4coBsjXewSqNhQtNoH2JZTq 3dWAsL9FSpjFLvI6xKuZQNW9iq+yffycYuWWRTYYu3RTOuSFjtj4OPGgN8ezWmTUF6CL deGUqBXzQ5FlKIDB63xDORCCmJejspvCmFYXDkOAyU1bMKU5jy1tb3OnxNK5YkqCO7QA VKT1YeR9J2BpBIouB3I0LA0SJqPtWsQaxVGmkFtPAoZaNP9IvsYLrF/ngdealcza7gfI wLalvpJk/baxRHsPIYTp58mehRcknJ77kOj+tpGfbRL32la8XB2sB0AWouoaousrZ53X sA== Received: from sc-exch03.marvell.com ([199.233.58.183]) by mx0b-0016f401.pphosted.com with ESMTP id 30bddkpfcd-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Mon, 13 Apr 2020 08:03:22 -0700 Received: from DC5-EXCH01.marvell.com (10.69.176.38) by SC-EXCH03.marvell.com (10.93.176.83) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Mon, 13 Apr 2020 08:03:20 -0700 Received: from DC5-EXCH01.marvell.com (10.69.176.38) by DC5-EXCH01.marvell.com (10.69.176.38) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Mon, 13 Apr 2020 08:03:20 -0700 Received: from maili.marvell.com (10.69.176.80) by DC5-EXCH01.marvell.com (10.69.176.38) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Mon, 13 Apr 2020 08:03:19 -0700 Received: from jerin-lab.marvell.com (jerin-lab.marvell.com [10.28.34.14]) by maili.marvell.com (Postfix) with ESMTP id 513793F7045; Mon, 13 Apr 2020 08:03:16 -0700 (PDT) From: To: John McNamara , Marko Kovacevic , Jerin Jacob , "Sunil Kumar Kori" CC: , , , , Date: Mon, 13 Apr 2020 20:31:09 +0530 Message-ID: <20200413150116.734047-27-jerinj@marvell.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200413150116.734047-1-jerinj@marvell.com> References: <20200403153709.3703448-1-jerinj@marvell.com> <20200413150116.734047-1-jerinj@marvell.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.138, 18.0.676 definitions=2020-04-13_07:2020-04-13, 2020-04-13 signatures=0 Subject: [dpdk-dev] [PATCH v5 26/33] eal/trace: add trace mode configuration parameter X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Sunil Kumar Kori Trace library exposes --trace-mode eal parameter to configure event record mode when ring buffers are full. Signed-off-by: Sunil Kumar Kori --- doc/guides/linux_gsg/eal_args.include.rst | 12 ++++++ lib/librte_eal/common/eal_common_options.c | 17 ++++++++ .../common/eal_common_trace_utils.c | 40 +++++++++++++++++++ lib/librte_eal/common/eal_options.h | 2 + lib/librte_eal/common/eal_trace.h | 1 + 5 files changed, 72 insertions(+) diff --git a/doc/guides/linux_gsg/eal_args.include.rst b/doc/guides/linux_gsg/eal_args.include.rst index b921c83b8..361c7cf67 100644 --- a/doc/guides/linux_gsg/eal_args.include.rst +++ b/doc/guides/linux_gsg/eal_args.include.rst @@ -176,6 +176,18 @@ Debugging options By default, size of trace output file is ``1MB`` and parameter must be specified once only. +* ``--trace-mode=`` + + Specify the mode of update of trace output file. Either update on a file + can be wrapped or discarded when file size reaches its maximum limit. + For example: + + To ``discard`` update on trace output file:: + + --trace-mode=d or --trace-mode=discard + + Default mode is ``overwrite`` and parameter must be specified once only. + Other options ~~~~~~~~~~~~~ diff --git a/lib/librte_eal/common/eal_common_options.c b/lib/librte_eal/common/eal_common_options.c index aea743e6f..6999cabc4 100644 --- a/lib/librte_eal/common/eal_common_options.c +++ b/lib/librte_eal/common/eal_common_options.c @@ -71,6 +71,7 @@ eal_long_options[] = { {OPT_TRACE, 1, NULL, OPT_TRACE_NUM }, {OPT_TRACE_DIR, 1, NULL, OPT_TRACE_DIR_NUM }, {OPT_TRACE_BUF_SIZE, 1, NULL, OPT_TRACE_BUF_SIZE_NUM }, + {OPT_TRACE_MODE, 1, NULL, OPT_TRACE_MODE_NUM }, {OPT_MASTER_LCORE, 1, NULL, OPT_MASTER_LCORE_NUM }, {OPT_MBUF_POOL_OPS_NAME, 1, NULL, OPT_MBUF_POOL_OPS_NAME_NUM}, {OPT_NO_HPET, 0, NULL, OPT_NO_HPET_NUM }, @@ -1450,6 +1451,15 @@ eal_parse_common_option(int opt, const char *optarg, break; } + case OPT_TRACE_MODE_NUM: { + if (eal_trace_mode_args_save(optarg) < 0) { + RTE_LOG(ERR, EAL, "invalid parameters for --" + OPT_TRACE_MODE "\n"); + return -1; + } + break; + } + case OPT_LCORES_NUM: if (eal_parse_lcores(optarg) < 0) { RTE_LOG(ERR, EAL, "invalid parameter for --" @@ -1741,6 +1751,13 @@ eal_common_usage(void) " 'KBytes' and 'MBytes' respectively.\n" " Default is 1MB and parameter must be\n" " specified once only.\n" + " --"OPT_TRACE_MODE"=\n" + " Specify the mode of update of trace\n" + " output file. Either update on a file can\n" + " be wrapped or discarded when file size\n" + " reaches its maximum limit.\n" + " Default mode is 'overwrite' and parameter\n" + " must be specified once only.\n" " -v Display version information on startup\n" " -h, --help This help\n" " --"OPT_IN_MEMORY" Operate entirely in memory. This will\n" diff --git a/lib/librte_eal/common/eal_common_trace_utils.c b/lib/librte_eal/common/eal_common_trace_utils.c index b4ac79c95..5b2906677 100644 --- a/lib/librte_eal/common/eal_common_trace_utils.c +++ b/lib/librte_eal/common/eal_common_trace_utils.c @@ -223,6 +223,46 @@ trace_bufsz_args_apply(void) trace->buff_len = 1024 * 1024; /* 1MB */ } +int +eal_trace_mode_args_save(const char *optarg) +{ + struct trace *trace = trace_obj_get(); + size_t len = strlen(optarg); + unsigned long tmp; + char *pattern; + + if (optarg == NULL) { + trace_err("no optarg is passed"); + return -EINVAL; + } + + if (len == 0) { + trace_err("value is not provided with option"); + return -EINVAL; + } + + pattern = (char *)calloc(1, len + 2); + if (pattern == NULL) { + trace_err("fail to allocate memory"); + return -ENOMEM; + } + + sprintf(pattern, "%s*", optarg); + + if (fnmatch(pattern, "overwrite", 0) == 0) + tmp = RTE_TRACE_MODE_OVERWRITE; + else if (fnmatch(pattern, "discard", 0) == 0) + tmp = RTE_TRACE_MODE_DISCARD; + else { + free(pattern); + return -EINVAL; + } + + trace->mode = tmp; + free(pattern); + return 0; +} + int eal_trace_dir_args_save(char const *optarg) { diff --git a/lib/librte_eal/common/eal_options.h b/lib/librte_eal/common/eal_options.h index 3e9a54f3a..90ead1b7c 100644 --- a/lib/librte_eal/common/eal_options.h +++ b/lib/librte_eal/common/eal_options.h @@ -39,6 +39,8 @@ enum { OPT_TRACE_DIR_NUM, #define OPT_TRACE_BUF_SIZE "trace-bufsz" OPT_TRACE_BUF_SIZE_NUM, +#define OPT_TRACE_MODE "trace-mode" + OPT_TRACE_MODE_NUM, #define OPT_MASTER_LCORE "master-lcore" OPT_MASTER_LCORE_NUM, #define OPT_MBUF_POOL_OPS_NAME "mbuf-pool-ops-name" diff --git a/lib/librte_eal/common/eal_trace.h b/lib/librte_eal/common/eal_trace.h index 890d1d1ee..25401ad84 100644 --- a/lib/librte_eal/common/eal_trace.h +++ b/lib/librte_eal/common/eal_trace.h @@ -115,6 +115,7 @@ void eal_trace_fini(void); int eal_trace_args_save(const char *optarg); void eal_trace_args_free(void); int eal_trace_dir_args_save(const char *optarg); +int eal_trace_mode_args_save(const char *optarg); int eal_trace_bufsz_args_save(const char *optarg); #endif /* __EAL_TRACE_H */ -- 2.25.1