mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-25 21:24:08 +08:00
selftests/bpf: Fix usleep() implementation
nanosleep syscall expects pointer to struct timespec, not nanoseconds directly. Current implementation fulfills its purpose of invoking nanosleep syscall, but doesn't really provide sleeping capabilities, which can cause flakiness for tests relying on usleep() to wait for something. Fixes: ec12a57b822c ("selftests/bpf: Guarantee that useep() calls nanosleep() syscall") Signed-off-by: Andrii Nakryiko <andriin@fb.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org> Link: https://lore.kernel.org/bpf/20200313061837.3685572-1-andriin@fb.com Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
parent
1afbcd9466
commit
4e1fd25d19
@ -35,7 +35,16 @@ struct prog_test_def {
|
||||
*/
|
||||
int usleep(useconds_t usec)
|
||||
{
|
||||
return syscall(__NR_nanosleep, usec * 1000UL);
|
||||
struct timespec ts;
|
||||
|
||||
if (usec > 999999) {
|
||||
ts.tv_sec = usec / 1000000;
|
||||
ts.tv_nsec = usec % 1000000;
|
||||
} else {
|
||||
ts.tv_sec = 0;
|
||||
ts.tv_nsec = usec;
|
||||
}
|
||||
return nanosleep(&ts, NULL);
|
||||
}
|
||||
|
||||
static bool should_run(struct test_selector *sel, int num, const char *name)
|
||||
|
Loading…
Reference in New Issue
Block a user