CVSROOT: /cvs Module name: src Changes by: clau...@cvs.openbsd.org 2024/10/17 03:11:35
Modified files: sys/kern : kern_sig.c kern_synch.c sys/sys : signalvar.h sys/ufs/mfs : mfs_vfsops.c Log message: Shortcut cursig when called during sleep setup. Add deep flag as function argument which is used by the sleep API but nowhere else. Both calls to sleep_signal_check() should skip the ugly bits of cursig(). In cursig() if deep once it is clear a signal will be taken keep the signal on the thread siglist and return. sleep_signal_check() will then return EINTR or ERESTART based on the signal context. There is no reason to do more in this special case. Especially stop/cont and the ptrace trap must be skipped here. Once the call makes it to userret the signal will be picked up again and handled in a safe location. Stopping singals need some additional logic since we don't want to abort the sleep just to stop a process. Since our SIGSTOP handling requires a major rewrite this will be posponed until then. OK mpi@