Module Name: src Committed By: thorpej Date: Fri Oct 23 00:25:45 UTC 2020
Modified Files: src/sys/kern: kern_sleepq.c src/sys/sys: lwp.h sleepq.h Log Message: - sleepq_block(): Add a new LWP flag, LW_CATCHINTR, that is used to track the intent to catch signals while sleeping. Initialize this flag based on the catch_p argument to sleepq_block(), and rather than test catch_p when awakened, test LW_CATCHINTR. This allows the intent to change (based on whatever criteria the owner of the sleepq wishes) while the LWP is asleep. This is separate from LW_SINTR in order to leave all other logic around LW_SINTR unaffected. - In sleepq_transfer(), adjust also LW_CATCHINTR based on the catch_p argument. Also allow the new LWP lock argument to be NULL, which will cause the lwp_setlock() call to be skipped; this allows transfer to another sleepq that is known to be protected by the same lock. - Add a new function, sleepq_uncatch(), that will transition an LWP from "interruptible sleep" to "uninterruptible sleep" on its current sleepq. To generate a diff of this commit: cvs rdiff -u -r1.68 -r1.69 src/sys/kern/kern_sleepq.c cvs rdiff -u -r1.211 -r1.212 src/sys/sys/lwp.h cvs rdiff -u -r1.31 -r1.32 src/sys/sys/sleepq.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.