mirror of
https://github.com/torvalds/linux.git
synced 2026-09-24 06:24:02 +02:00
KVM: selftests: Add kvm_gettid() wrapper and convert users
Add a KVM wrapper for the gettid() syscall so that tests don't have to open code the syscall() themselves. Unfortunately, not all flavors of libc that KVM selftests support provide gettid(). Convert all existing users of the syscall to the new wrapper. Note, per the gettid() manpage[1], "This call is always successful", i.e. prefixing kvm_ to the syscall name is aligned with the goal of providing syscall wrappers that guarantee success. No functional changes intended. Link: https://man7.org/linux/man-pages/man2/gettid.2.html [1] Suggested-by: Sean Christopherson <seanjc@google.com> Signed-off-by: Josh Hilke <jrhilke@google.com> [sean: massage changelog] Link: https://patch.msgid.link/20260626213534.3866178-16-seanjc@google.com Signed-off-by: Sean Christopherson <seanjc@google.com>
This commit is contained in:
parent
25e268b76e
commit
4512b27766
|
|
@ -57,7 +57,7 @@ static void vcpu_worker(struct memstress_vcpu_args *vcpu_args)
|
|||
static int handle_uffd_page_request(int uffd_mode, int uffd,
|
||||
struct uffd_msg *msg)
|
||||
{
|
||||
pid_t tid = syscall(__NR_gettid);
|
||||
pid_t tid = kvm_gettid();
|
||||
u64 addr = msg->arg.pagefault.address;
|
||||
struct timespec start;
|
||||
struct timespec ts_diff;
|
||||
|
|
|
|||
|
|
@ -83,6 +83,11 @@ static inline int kvm_dup(int fd)
|
|||
return new_fd;
|
||||
}
|
||||
|
||||
static inline pid_t kvm_gettid(void)
|
||||
{
|
||||
return syscall(__NR_gettid);
|
||||
}
|
||||
|
||||
__KVM_SYSCALL_DEFINE(munmap, 2, void *, mem, size_t, size);
|
||||
__KVM_SYSCALL_DEFINE(close, 1, int, fd);
|
||||
__KVM_SYSCALL_DEFINE(fallocate, 4, int, fd, int, mode, loff_t, offset, loff_t, len);
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@
|
|||
#include <sys/syscall.h>
|
||||
|
||||
#include "kselftest.h"
|
||||
#include "kvm_syscalls.h"
|
||||
|
||||
#ifdef __GLIBC__
|
||||
#include <execinfo.h>
|
||||
|
|
@ -64,11 +65,6 @@ static void test_dump_stack(void)
|
|||
static void test_dump_stack(void) {}
|
||||
#endif
|
||||
|
||||
static pid_t _gettid(void)
|
||||
{
|
||||
return syscall(SYS_gettid);
|
||||
}
|
||||
|
||||
void __attribute__((noinline))
|
||||
test_assert(bool exp, const char *exp_str,
|
||||
const char *file, unsigned int line, const char *fmt, ...)
|
||||
|
|
@ -81,7 +77,7 @@ test_assert(bool exp, const char *exp_str,
|
|||
fprintf(stderr, "==== Test Assertion Failure ====\n"
|
||||
" %s:%u: %s\n"
|
||||
" pid=%d tid=%d errno=%d - %s\n",
|
||||
file, line, exp_str, getpid(), _gettid(),
|
||||
file, line, exp_str, getpid(), kvm_gettid(),
|
||||
errno, strerror(errno));
|
||||
test_dump_stack();
|
||||
if (fmt) {
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@
|
|||
#include "linux/kernel.h"
|
||||
|
||||
#include "test_util.h"
|
||||
#include "kvm_syscalls.h"
|
||||
|
||||
sigjmp_buf expect_sigbus_jmpbuf;
|
||||
|
||||
|
|
@ -395,7 +396,7 @@ long get_run_delay(void)
|
|||
long val[2];
|
||||
FILE *fp;
|
||||
|
||||
sprintf(path, "/proc/%ld/schedstat", syscall(SYS_gettid));
|
||||
sprintf(path, "/proc/%ld/schedstat", (long)kvm_gettid());
|
||||
fp = fopen(path, "r");
|
||||
/* Return MIN_RUN_DELAY_NS upon failure just to be safe */
|
||||
if (fscanf(fp, "%ld %ld ", &val[0], &val[1]) < 2)
|
||||
|
|
|
|||
|
|
@ -244,7 +244,7 @@ int main(int argc, char *argv[])
|
|||
vm = vm_create_with_one_vcpu(&vcpu, guest_code);
|
||||
|
||||
pthread_create(&migration_thread, NULL, migration_worker,
|
||||
(void *)(unsigned long)syscall(SYS_gettid));
|
||||
(void *)(unsigned long)kvm_gettid());
|
||||
|
||||
if (latency >= 0) {
|
||||
/*
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user