On Tue, Apr 20, 2021 at 09:09:52AM +0000, Ananyev, Konstantin wrote: > > > > > > Add clock_gettime_monotonic for testpmd on Windows > > > > Signed-off-by: Jie Zhou <j...@microsoft.com> > > Signed-off-by: Jie Zhou <j...@linux.microsoft.com> > > --- > > 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 > > Do we really need to pollute testpmd code with all these ifdefs? > Might be better to move it into a separate .h?
Thanks Konstantin for the suggestion. In V7 move this into config.h, together with the NS_PER_SEC def etc. > > > +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 > > +