--- a/src/syscall/mod.rs +++ b/src/syscall/mod.rs @@ -28,6 +28,11 @@ sync::CleanLockToken, }; +/// Local syscall numbers not yet in the redox_syscall crate. +/// These are allocated from the 987+ range to avoid collisions with crate numbers. +pub const SYS_SCHED_SETAFFINITY: usize = 987; +pub const SYS_SCHED_GETAFFINITY: usize = 988; + /// Debug pub mod debug; @@ -220,6 +225,10 @@ unlinkat(fd, UserSlice::ro(c, d)?, e, f as _, g as _, token).map(|()| 0) } SYS_YIELD => sched_yield(token).map(|()| 0), + + // P17-3: CPU affinity syscalls. Numbers allocated locally (not yet in redox_syscall crate). + SYS_SCHED_SETAFFINITY => sched_setaffinity(b, UserSlice::ro(c, d)?, token), + SYS_SCHED_GETAFFINITY => sched_getaffinity(b, UserSlice::wo(c, d)?, token), SYS_NANOSLEEP => nanosleep( UserSlice::ro(b, size_of::())?, UserSlice::wo(c, size_of::())?.none_if_null(),