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 74B67A0524; Mon, 19 Apr 2021 20:04:25 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E8FAA413DE; Mon, 19 Apr 2021 20:04:24 +0200 (CEST) Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by mails.dpdk.org (Postfix) with ESMTP id 137AE413B0 for ; Mon, 19 Apr 2021 20:04:23 +0200 (CEST) Received: by linux.microsoft.com (Postfix, from userid 1061) id 6596E20B8000; Mon, 19 Apr 2021 11:04:22 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com 6596E20B8000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1618855462; bh=heBbFubsDhUoDZtqKk4HYhXlbGcFRuDEfP10ogxoMio=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=LOWLyNlzNneWre3pNqlX9TT6IErgtOfK5BlurgnoP1Fkp/s+xQuIFTZ7H4WASPVJp Anlk07v91v21+uytHXe7MYuZhpt1Xwt4o4MZNa+z0p8FztpdtiX0I5hWmzoA+7F9Si BsNXLHKKelFx1dB6ZxYTtFOjaTJZF/EVU3WJDnSM= Date: Mon, 19 Apr 2021 11:04:22 -0700 From: Jie Zhou To: Tal Shnaiderman Cc: "dev@dpdk.org" , "dmitry.kozliuk@gmail.com" , "xiaoyun.li@intel.com" , "roretzla@microsoft.com" , "pallavi.kadam@intel.com" , NBU-Contact-Thomas Monjalon , "bruce.richardson@intel.com" , "ferruh.yigit@intel.com" Message-ID: <20210419180422.GA19684@linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net> References: <1618594501-23795-10-git-send-email-jizh@linux.microsoft.com> <1618595864-27839-1-git-send-email-jizh@linux.microsoft.com> <1618595864-27839-6-git-send-email-jizh@linux.microsoft.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) Subject: Re: [dpdk-dev] [PATCH v5 5/9] 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" On Sun, Apr 18, 2021 at 05:20:42PM +0000, Tal Shnaiderman wrote: > > Subject: [dpdk-dev] [PATCH v5 5/9] app/testpmd: add > > clock_gettime_monotonic > > > > External email: Use caution opening links or attachments > > > > > > 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 > > + > > I think this change should be in EAL: > rte_get_time_monotonic(&cur_time) > > Windows implementation in windows\eal_timer.c > Unix implementation in unix\eal_unix_timer.c Originally and internally, the function was added into eal. But then restricted the functionality just inside testpmd to avoid currently seems unnecessary version change, per a discussion in community meeting several weeks back. If we believe eal support of clock_gettime for windows will benefit other drivers/apps now instead of future when real need comes up, I can move it back into eal. DmitryK and Tyler, any conern or inputs here? > > > 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