CVSROOT: /cvs Module name: src Changes by: dera...@cvs.openbsd.org 2024/03/29 00:47:05
Modified files: sys/sys : syscall_mi.h Log message: Remove the at-syscall-time check for msyscall(2)'s behaviour. msyscall(2) was a big coding effort to ensure that system calls could only be performed from static-binary/ld.so/libc.so/sigtramp regions of memory, by caching a uvm entry with a serial number; new mmap/mprotect calls would increment the map serial, and the entry would need to be looked up again. So the cost was O(1) in the usual case, but O(log n) with some locking if a map change required a new lookup. In the new world order, such regions are immutable so they cannot be changed/split by mmap/mprotect; also we know the precise entry locations of the syscalls due to system call pinning (ELF OPENBSD_SYSCALL and pinsyscalls(2)), and this is all done as O(1) without any locking. All the other parts of the subsystem will be ripped out but please run a kernel with this before I make changes to ld.so.. ok kettenis