From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D9589C433B4 for ; Mon, 19 Apr 2021 23:20:38 +0000 (UTC) Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by mail.kernel.org (Postfix) with ESMTP id 7679861354 for ; Mon, 19 Apr 2021 23:20:38 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7679861354 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.microsoft.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=dev-bounces@dpdk.org Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id DFAE9414D9; Tue, 20 Apr 2021 01:20:13 +0200 (CEST) Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by mails.dpdk.org (Postfix) with ESMTP id 0C6DD40685 for ; Tue, 20 Apr 2021 01:20:07 +0200 (CEST) Received: from linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net (linux.microsoft.com [13.77.154.182]) by linux.microsoft.com (Postfix) with ESMTPSA id D030D20B83DA; Mon, 19 Apr 2021 16:20:05 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com D030D20B83DA DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1618874405; bh=SPSV9RlZ1v1VwJUeBI5U07x3rL0cpfwGcqGveOg3NVw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=rEpYtYmrMCfXOvaKxuYxUEOY0m+itTOCikFsy7QTQ7M/4OO+nnDEbIiu7c51NanA7 Yoxwcc+6jPdXQKrQV9ZjNrOHDkMp8evQKey5yDpCfR6g/p6nRBD+Rtu1qEkH8FUMVq N28YaR+ZfO1c2DP6TEMe9TRNu6qKGZfsj4xP+mhE= From: Jie Zhou To: dev@dpdk.org Cc: dmitry.kozliuk@gmail.com, xiaoyun.li@intel.com, roretzla@microsoft.com, pallavi.kadam@intel.com, thomas@monjalon.net, bruce.richardson@intel.com, ferruh.yigit@intel.com Date: Mon, 19 Apr 2021 16:19:55 -0700 Message-Id: <1618874400-26819-6-git-send-email-jizh@linux.microsoft.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1618874400-26819-1-git-send-email-jizh@linux.microsoft.com> References: <1618595864-27839-1-git-send-email-jizh@linux.microsoft.com> <1618874400-26819-1-git-send-email-jizh@linux.microsoft.com> Subject: [dpdk-dev] [PATCH v6 05/10] app/testpmd: add clock_gettime_monotonic 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 Sender: "dev" Add clock_gettime_monotonic for testpmd on Windows Signed-off-by: Jie Zhou Signed-off-by: Jie Zhou --- app/test-pmd/config.c | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c index ef0b9784d..a5f8fec5b 100644 --- a/app/test-pmd/config.c +++ b/app/test-pmd/config.c @@ -63,6 +63,12 @@ #define NS_PER_SEC 1E9 +#ifdef RTE_EXEC_ENV_WINDOWS +#define _clock_gettime_monotonic(cur_time) clock_gettime_monotonic(&cur_time) +#else +#define _clock_gettime_monotonic(cur_time) clock_gettime(CLOCK_TYPE_ID, &cur_time) +#endif + static char *flowtype_to_str(uint16_t flow_type); static const struct { @@ -170,6 +176,27 @@ print_ethaddr(const char *name, struct rte_ether_addr *eth_addr) printf("%s%s", name, buf); } +#ifdef RTE_EXEC_ENV_WINDOWS +static int +clock_gettime_monotonic(struct timespec *tp) +{ + LARGE_INTEGER pf, pc; + LONGLONG nsec; + + if (QueryPerformanceFrequency(&pf) == 0) + return -1; + + if (QueryPerformanceCounter(&pc) == 0) + return -1; + + nsec = pc.QuadPart * NS_PER_SEC / pf.QuadPart; + tp->tv_sec = nsec / NS_PER_SEC; + tp->tv_nsec = nsec - tp->tv_sec * NS_PER_SEC; + + return 0; +} +#endif + void nic_stats_display(portid_t port_id) { @@ -186,6 +213,8 @@ nic_stats_display(portid_t port_id) static const char *nic_stats_border = "########################"; + int ret; + if (port_id_is_invalid(port_id, ENABLED_WARN)) { print_valid_ports(); return; @@ -202,7 +231,9 @@ nic_stats_display(portid_t port_id) "%-"PRIu64"\n", stats.opackets, stats.oerrors, stats.obytes); diff_ns = 0; - if (clock_gettime(CLOCK_TYPE_ID, &cur_time) == 0) { + + ret = _clock_gettime_monotonic(cur_time); + if (ret == 0) { uint64_t ns; ns = cur_time.tv_sec * NS_PER_SEC; -- 2.30.0.vfs.0.2