Skip to content

Commit 0f5a394

Browse files
committed
Implement basic sched_getaffinity
1 parent 3e4530e commit 0f5a394

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

lib/tinykvm/linux/system_calls.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#include <cstring>
44
#include <fcntl.h>
55
#include <netinet/in.h>
6+
#include <sched.h>
67
#include <signal.h>
78
#include <sys/eventfd.h>
89
#include <sys/epoll.h>
@@ -2126,9 +2127,15 @@ void Machine::setup_linux_system_calls(bool unsafe_syscalls)
21262127
SYS_sched_getaffinity, [](vCPU& cpu) { // sched_getaffinity
21272128
/* SYS sched_getaffinity */
21282129
auto& regs = cpu.registers();
2130+
cpu_set_t* cpuset = CPU_ALLOC(1);
2131+
CPU_ZERO(cpuset);
2132+
CPU_SET(0, cpuset);
2133+
cpu.machine().copy_to_guest(regs.rdx, cpuset, sizeof(*cpuset));
2134+
CPU_FREE(cpuset);
21292135
regs.rax = 0;
21302136
cpu.set_registers(regs);
2131-
SYSPRINT("sched_getaffinity() = %lld\n", regs.rax);
2137+
SYSPRINT("sched_getaffinity(pid=%lld, cpusetsize=%lld, mask=0x%llX) = %lld\n",
2138+
regs.rdi, regs.rsi, regs.rdx, regs.rax);
21322139
});
21332140
Machine::install_syscall_handler(
21342141
SYS_getdents64, [](vCPU& cpu) { // GETDENTS64

0 commit comments

Comments
 (0)