Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 20 Aug 2008 09:38:44 +0100 (BST)
From:      Robert Watson <rwatson@FreeBSD.org>
To:        Ed Schouten <ed@FreeBSD.org>
Cc:        cvs-src@FreeBSD.org, src-committers@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   Re: cvs commit: src ObsoleteFiles.inc UPDATING src/bin/sh miscbltin.c src/etc login.conf src/etc/defaults devfs.rules src/lib/libc/stdlib Makefile.inc Symbol.map grantpt.3 ptsname.3 ptsname.c src/lib/libc/sys Makefile.inc Symbol.map getrlimit.2 ...
Message-ID:  <alpine.BSF.1.10.0808200937260.62454@fledge.watson.org>
In-Reply-To: <200808200836.m7K8aoi3023764@repoman.freebsd.org>
References:  <200808200836.m7K8aoi3023764@repoman.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help

On Wed, 20 Aug 2008, Ed Schouten wrote:

>  SVN rev 181905 on 2008-08-20 08:31:58Z by ed
>
>  Integrate the new MPSAFE TTY layer to the FreeBSD operating system.
>
>  The last half year I've been working on a replacement TTY layer for the
>  FreeBSD kernel. The new TTY layer was designed to improve the following:

Many congratulations on a commit that was a long time in coming!  We all 
really appreciate your picking this up and not only dealing with the 
long-standing problem of a lack of MPSAFE tty support, but also in adding new 
features such as revised pty code, etc!

Now to exercise it a bit and keep you busy on bizarre tty behavior quirks for 
months :-).

Robert N M Watson
Computer Laboratory
University of Cambridge

>
>  - Improved driver model:
>
>    The old TTY layer has a driver model that is not abstract enough to
>    make it friendly to use. A good example is the output path, where the
>    device drivers directly access the output buffers. This means that an
>    in-kernel PPP implementation must always convert network buffers into
>    TTY buffers.
>
>    If a PPP implementation would be built on top of the new TTY layer
>    (still needs a hooks layer, though), it would allow the PPP
>    implementation to directly hand the data to the TTY driver.
>
>  - Improved hotplugging:
>
>    With the old TTY layer, it isn't entirely safe to destroy TTY's from
>    the system. This implementation has a two-step destructing design,
>    where the driver first abandons the TTY. After all threads have left
>    the TTY, the TTY layer calls a routine in the driver, which can be
>    used to free resources (unit numbers, etc).
>
>    The pts(4) driver also implements this feature, which means
>    posix_openpt() will now return PTY's that are created on the fly.
>
>  - Improved performance:
>
>    One of the major improvements is the per-TTY mutex, which is expected
>    to improve scalability when compared to the old Giant locking.
>    Another change is the unbuffered copying to userspace, which is both
>    used on TTY device nodes and PTY masters.
>
>  Upgrading should be quite straightforward. Unlike previous versions,
>  existing kernel configuration files do not need to be changed, except
>  when they reference device drivers that are listed in UPDATING.
>
>  Obtained from:          //depot/projects/mpsafetty/...
>  Approved by:            philip (ex-mentor)
>  Discussed:              on the lists, at BSDCan, at the DevSummit
>  Sponsored by:           Snow B.V., the Netherlands
>  dcons(4) fixed by:      kan
>
>  Revision  Changes      Path
>  1.155     +3 -0        src/ObsoleteFiles.inc
>  1.539     +19 -0       src/UPDATING
>  1.36      +4 -1        src/bin/sh/miscbltin.c
>  1.6       +2 -1        src/etc/defaults/devfs.rules
>  1.52      +1 -0        src/etc/login.conf
>  1.55      +6 -6        src/lib/libc/stdlib/Makefile.inc
>  1.8       +0 -1        src/lib/libc/stdlib/Symbol.map
>  1.4       +0 -225      src/lib/libc/stdlib/grantpt.3 (dead)
>  1.1       +160 -0      src/lib/libc/stdlib/ptsname.3 (new)
>  1.1       +95 -0       src/lib/libc/stdlib/ptsname.c (new)
>  1.137     +2 -2        src/lib/libc/sys/Makefile.inc
>  1.18      +1 -0        src/lib/libc/sys/Symbol.map
>  1.25      +3 -1        src/lib/libc/sys/getrlimit.2
>  1.1       +135 -0      src/lib/libc/sys/posix_openpt.2 (new)
>  1.62      +3 -2        src/lib/libutil/login.conf.5
>  1.27      +13 -12      src/lib/libutil/login_class.c
>  1.426     +1 -0        src/share/man/man4/Makefile
>  1.57      +7 -1        src/share/man/man4/ddb.4
>  1.1       +181 -0      src/share/man/man4/pts.4 (new)
>  1.20      +48 -201     src/share/man/man4/pty.4
>  1.34      +20 -4       src/share/man/man4/termios.4
>  1.507     +1 -1        src/sys/amd64/conf/GENERIC
>  1.14      +1 -0        src/sys/bsm/audit_kevents.h
>  1.86      +2 -1        src/sys/compat/freebsd32/freebsd32_syscall.h
>  1.77      +1 -0        src/sys/compat/freebsd32/freebsd32_syscalls.c
>  1.87      +1 -0        src/sys/compat/freebsd32/freebsd32_sysent.c
>  1.102     +1 -0        src/sys/compat/freebsd32/syscalls.master
>  1.142     +7 -2        src/sys/compat/linux/linux_ioctl.c
>  1.93      +11 -1       src/sys/compat/linux/linux_stats.c
>  1.1504    +1 -8        src/sys/conf/NOTES
>  1.1331    +5 -3        src/sys/conf/files
>  1.636     +1 -1        src/sys/conf/options
>  1.7       +1 -1        src/sys/dev/dcons/dcons.h
>  1.23      +48 -345     src/sys/dev/dcons/dcons_os.c
>  1.41      +158 -252    src/sys/dev/nmdm/nmdm.c
>  1.40      +32 -111     src/sys/dev/ofw/ofw_console.c
>  1.21      +3 -4        src/sys/dev/syscons/schistory.c
>  1.43      +2 -3        src/sys/dev/syscons/scmouse.c
>  1.24      +1 -1        src/sys/dev/syscons/scterm-sc.c
>  1.26      +4 -8        src/sys/dev/syscons/scvesactl.c
>  1.40      +6 -12       src/sys/dev/syscons/scvidctl.c
>  1.461     +156 -171    src/sys/dev/syscons/syscons.c
>  1.91      +15 -9       src/sys/dev/syscons/syscons.h
>  1.31      +32 -103     src/sys/dev/syscons/sysmouse.c
>  1.25      +1 -2        src/sys/dev/uart/uart_core.c
>  1.30      +72 -93      src/sys/dev/uart/uart_tty.c
>  1.67      +131 -203    src/sys/dev/usb/ucom.c
>  1.11      +5 -3        src/sys/dev/usb/ucomvar.h
>  1.39      +16 -11      src/sys/dev/usb/uftdi.c
>  1.72      +2 -2        src/sys/dev/usb/umodem.c
>  1.165     +0 -3        src/sys/fs/devfs/devfs_vnops.c
>  1.497     +1 -1        src/sys/i386/conf/GENERIC
>  1.10      +1 -1        src/sys/i386/conf/XBOX
>  1.32      +17 -2       src/sys/i386/ibcs2/ibcs2_ioctl.c
>  1.99      +1 -1        src/sys/ia64/conf/GENERIC
>  1.26      +1 -1        src/sys/ia64/conf/SKI
>  1.31      +40 -100     src/sys/ia64/ia64/ssc.c
>  1.294     +1 -1        src/sys/kern/init_main.c
>  1.241     +2 -1        src/sys/kern/init_sysent.c
>  1.99      +3 -3        src/sys/kern/kern_acct.c
>  1.220     +0 -11       src/sys/kern/kern_conf.c
>  1.337     +12 -0       src/sys/kern/kern_descrip.c
>  1.312     +28 -34      src/sys/kern/kern_exit.c
>  1.266     +30 -27      src/sys/kern/kern_proc.c
>  1.190     +25 -0       src/sys/kern/kern_resource.c
>  1.131     +14 -10      src/sys/kern/subr_prf.c
>  1.225     +2 -1        src/sys/kern/syscalls.c
>  1.244     +1 -0        src/sys/kern/syscalls.master
>  1.25      +27 -0       src/sys/kern/systrace_args.c
>  1.282     +1374 -2852  src/sys/kern/tty.c
>  1.40      +32 -23      src/sys/kern/tty_compat.c
>  1.25      +0 -205      src/sys/kern/tty_conf.c (dead)
>  1.145     +12 -3       src/sys/kern/tty_cons.c
>  1.2       +4 -10       src/sys/kern/tty_info.c
>  1.1       +502 -0      src/sys/kern/tty_inq.c (new)
>  1.1       +365 -0      src/sys/kern/tty_outq.c (new)
>  1.19      +516 -783    src/sys/kern/tty_pts.c
>  1.160     +60 -752     src/sys/kern/tty_pty.c
>  1.1       +1131 -0     src/sys/kern/tty_ttydisc.c (new)
>  1.4       +0 -9        src/sys/modules/nmdm/Makefile
>  1.4       +1 -6        src/sys/modules/rc/Makefile
>  1.18      +1 -1        src/sys/pc98/cbus/scterm-sck.c
>  1.309     +2 -2        src/sys/pc98/conf/GENERIC
>  1.93      +1 -1        src/sys/pc98/conf/NOTES
>  1.82      +1 -1        src/sys/powerpc/conf/GENERIC
>  1.140     +1 -1        src/sys/sparc64/conf/GENERIC
>  1.21      +1 -1        src/sys/sun4v/conf/GENERIC
>  1.9       +49 -113     src/sys/sun4v/sun4v/hvcons.c
>  1.243     +0 -3        src/sys/sys/conf.h
>  1.81      +1 -0        src/sys/sys/file.h
>  1.193     +0 -141      src/sys/sys/linedisc.h (dead)
>  1.363     +1 -1        src/sys/sys/param.h
>  1.518     +4 -5        src/sys/sys/proc.h
>  1.33      +2 -1        src/sys/sys/resource.h
>  1.54      +2 -0        src/sys/sys/resourcevar.h
>  1.222     +3 -2        src/sys/sys/syscall.h
>  1.177     +3 -2        src/sys/sys/syscall.mk
>  1.226     +6 -1        src/sys/sys/sysproto.h
>  1.23      +13 -6       src/sys/sys/termios.h
>  1.104     +5 -18       src/sys/sys/tty.h
>  1.28      +2 -1        src/sys/sys/ttycom.h
>  1.21      +1 -0        src/sys/sys/ttydefaults.h
>  1.1       +158 -0      src/sys/sys/ttydevsw.h (new)
>  1.1       +105 -0      src/sys/sys/ttydisc.h (new)
>  1.1       +157 -0      src/sys/sys/ttyqueue.h (new)
>  1.77      +1 -0        src/sys/sys/user.h
>  1.70      +52 -0       src/usr.bin/fstat/fstat.c
>  1.6       +3 -1        src/usr.bin/procstat/procstat.1
>  1.7       +5 -0        src/usr.bin/procstat/procstat_files.c
>  1.50      +39 -76      src/usr.sbin/pstat/pstat.8
>  1.105     +53 -87      src/usr.sbin/pstat/pstat.c
>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?alpine.BSF.1.10.0808200937260.62454>