On Mon, Nov 14, 2005 at 10:50:18AM -0800, Matthew Dillon wrote: > dillon 2005/11/14 10:50:18 PST > > DragonFly src repository > > Modified files: > bin/ps print.c ps.1 ps.c > sys/dev/raid/vinum vinumdaemon.c > sys/emulation/linux/i386 linux_ptrace.c > sys/emulation/posix4 ksched.c > sys/emulation/svr4 svr4_misc.c > sys/i386/i386 db_trace.c pmap.c procfs_machdep.c trap.c > sys/kern init_main.c kern_exit.c kern_fork.c > kern_proc.c kern_resource.c kern_sig.c > kern_synch.c lwkt_thread.c sys_generic.c > sys_process.c tty.c usched_bsd4.c > vfs_sync.c > sys/netproto/smb smb_subr.c > sys/sys kernel.h proc.h systm.h thread.h > sys/vfs/procfs procfs_ctl.c procfs_dbregs.c > procfs_fpregs.c procfs_regs.c > procfs_status.c > sys/vm pmap.h vm_fault.c vm_glue.c vm_meter.c > vm_pageout.c > usr.bin/systat pigs.c > usr.bin/top machine.c > Log: > Make tsleep/wakeup() MP SAFE for kernel threads and get us closer to > making it MP SAFE for user processes. Currently the code is operating > under the rule that access to a thread structure requires cpu locality of > reference, and access to a proc structure requires the Big Giant Lock. The > two are not mutually exclusive so, for example, tsleep/wakeup on a proc > needs both cpu locality of reference *AND* the BGL. This was true with the > old tsleep/wakeup and has now been documented.
Ok, I managed to narrow down. After this commit, both on UP and SMP kernel, pressing ctrl+Z while browsing a manpage does not give control to the shell. And this is still reproducible on HEAD. - you need to press Enter following ctrl+Z to suspend a single cat command waiting for stdin, instead of just a ctrl+Z - this doesn't happen trying to suspend a simpler job like $ cat | cat | less - if I send SIGCONT to the rightmost one of the piped process(i.e. less) it starts responding to keystrokes again I don't remember whether I've seen this when I was using tsleep0x-patched system, but I doubt it since I often suspend manpage and do something in the same terminal rather than opening a new one.
