numam-dpdk/lib/librte_eal/unix/eal_unix_timer.c
Fady Bader 03437f2dc8 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>
2020-06-23 18:33:20 +02:00

30 lines
577 B
C

/* 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;
}
}