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>