diff --git a/src/kernel/emulation/linux/CMakeLists.txt b/src/kernel/emulation/linux/CMakeLists.txt index 188a28c4a..345c477b6 100644 --- a/src/kernel/emulation/linux/CMakeLists.txt +++ b/src/kernel/emulation/linux/CMakeLists.txt @@ -132,6 +132,7 @@ set(emulation_sources ext/clock_nanosleep.c ext/clock_gettime.c wqueue/bsdthread_register.c + ext/sched_yield.c syscalls-amd64.asm ) diff --git a/src/kernel/emulation/linux/ext/sched_yield.c b/src/kernel/emulation/linux/ext/sched_yield.c new file mode 100644 index 000000000..481e21137 --- /dev/null +++ b/src/kernel/emulation/linux/ext/sched_yield.c @@ -0,0 +1,8 @@ +#include "../base.h" +#include + +void __linux_sched_yield(void) +{ + LINUX_SYSCALL0(__NR_sched_yield); +} + diff --git a/src/kernel/mach_server/client/mach_traps.c b/src/kernel/mach_server/client/mach_traps.c index f6c96eb29..5797f655d 100644 --- a/src/kernel/mach_server/client/mach_traps.c +++ b/src/kernel/mach_server/client/mach_traps.c @@ -478,15 +478,16 @@ kern_return_t macx_backing_store_recovery( return KERN_FAILURE; } +extern void __linux_sched_yield(); boolean_t swtch_pri(int pri) { - UNIMPLEMENTED_TRAP(); + __linux_sched_yield(); return 0; } boolean_t swtch(void) { - UNIMPLEMENTED_TRAP(); + __linux_sched_yield(); return 0; }