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:
parent
26a6946a86
commit
03437f2dc8
@ -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)
|
||||
{
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
29
lib/librte_eal/unix/eal_unix_timer.c
Normal file
29
lib/librte_eal/unix/eal_unix_timer.c
Normal 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;
|
||||
}
|
||||
}
|
@ -4,4 +4,5 @@
|
||||
sources += files(
|
||||
'eal_file.c',
|
||||
'eal_unix_memory.c',
|
||||
'eal_unix_timer.c',
|
||||
)
|
||||
|
Loading…
Reference in New Issue
Block a user