timer: move from common to Unix directory

EAL common timer doesn't compile under Windows.

Compilation log:
error LNK2019:
unresolved external symbol nanosleep referenced in function
rte_delay_us_sleep
error LNK2019:
unresolved external symbol get_tsc_freq referenced in function set_tsc_freq
error LNK2019:
unresolved external symbol sleep referenced in function set_tsc_freq

The reason was that some functions called POSIX functions.
The solution was to move POSIX dependent functions from common to Unix.

Signed-off-by: Fady Bader <fady@mellanox.com>
Reviewed-by: Tal Shnaiderman <talshn@mellanox.com>
Acked-by: Ranjit Menon <ranjit.menon@intel.com>
This commit is contained in:
Fady Bader 2020-06-18 09:55:21 +03:00 committed by Thomas Monjalon
parent 26a6946a86
commit 03437f2dc8
5 changed files with 32 additions and 22 deletions

View File

@ -35,28 +35,6 @@ rte_delay_us_block(unsigned int us)
rte_pause();
}
void
rte_delay_us_sleep(unsigned int us)
{
struct timespec wait[2];
int ind = 0;
wait[0].tv_sec = 0;
if (us >= US_PER_S) {
wait[0].tv_sec = us / US_PER_S;
us -= wait[0].tv_sec * US_PER_S;
}
wait[0].tv_nsec = 1000 * us;
while (nanosleep(&wait[ind], &wait[1 - ind]) && errno == EINTR) {
/*
* Sleep was interrupted. Flip the index, so the 'remainder'
* will become the 'request' for a next call.
*/
ind = 1 - ind;
}
}
uint64_t
rte_get_tsc_hz(void)
{

View File

@ -78,6 +78,7 @@ SRCS-$(CONFIG_RTE_EXEC_ENV_FREEBSD) += rte_reciprocal.c
# from unix dir
SRCS-$(CONFIG_RTE_EXEC_ENV_FREEBSD) += eal_file.c
SRCS-$(CONFIG_RTE_EXEC_ENV_FREEBSD) += eal_unix_memory.c
SRCS-$(CONFIG_RTE_EXEC_ENV_FREEBSD) += eal_unix_timer.c
# from arch dir
SRCS-$(CONFIG_RTE_EXEC_ENV_FREEBSD) += rte_cpuflags.c

View File

@ -86,6 +86,7 @@ SRCS-$(CONFIG_RTE_EXEC_ENV_LINUX) += rte_reciprocal.c
# from unix dir
SRCS-$(CONFIG_RTE_EXEC_ENV_LINUX) += eal_file.c
SRCS-$(CONFIG_RTE_EXEC_ENV_LINUX) += eal_unix_memory.c
SRCS-$(CONFIG_RTE_EXEC_ENV_LINUX) += eal_unix_timer.c
# from arch dir
SRCS-$(CONFIG_RTE_EXEC_ENV_LINUX) += rte_cpuflags.c

View File

@ -0,0 +1,29 @@
/* SPDX-License-Identifier: BSD-3-Clause
* Copyright 2020 Mellanox Technologies, Ltd
*/
#include <time.h>
#include <rte_cycles.h>
void
rte_delay_us_sleep(unsigned int us)
{
struct timespec wait[2];
int ind = 0;
wait[0].tv_sec = 0;
if (us >= US_PER_S) {
wait[0].tv_sec = us / US_PER_S;
us -= wait[0].tv_sec * US_PER_S;
}
wait[0].tv_nsec = 1000 * us;
while (nanosleep(&wait[ind], &wait[1 - ind]) && errno == EINTR) {
/*
* Sleep was interrupted. Flip the index, so the 'remainder'
* will become the 'request' for a next call.
*/
ind = 1 - ind;
}
}

View File

@ -4,4 +4,5 @@
sources += files(
'eal_file.c',
'eal_unix_memory.c',
'eal_unix_timer.c',
)