cvs commit: src/bin/ps print.c ps.1 ps.c src/sys/dev/raid/vinum vinumdaemon.c src/sys/emulation/linux/i386 linux_ptrace.c src/sys/emulation/posix4 ksched.c src/sys/emulation/svr4 svr4_misc.c src/sys/i386/i386 db_trace.c pmap.c procfs_machdep.c ...

YONETANI Tomokazu qhwt+dfly at
Sat Nov 26 19:21:45 PST 2005

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.

More information about the Commits mailing list