diff -ur stock/linux-2.1.114/Documentation/Configure.help linux-2.1.114-smp/Documentation/Configure.help --- stock/linux-2.1.114/Documentation/Configure.help Mon Aug 3 03:06:20 1998 +++ linux-2.1.114-smp/Documentation/Configure.help Mon Aug 3 13:40:09 1998 @@ -1170,6 +1170,26 @@ Say Y here to enable support in the dumb serial driver to support the HUB6 card. +Unix98 PTY support +CONFIG_UNIX98_PTYS + Linux traditionally uses BSD-like /dev/ptyxx and /dev/ttyxx names + for pseudo-ttys (PTYs). This scheme has a number or problems. The + GNU C library 2.1 and later, however, supports the Unix98 naming + standard, using a cloning device /dev/ptmx and numbered devices in a + subdirectory /dev/pts/xxx. The device nodes in /dev/pts can be + automatically generated by the devpts virtual filesystem. + + Say Y here if you are uncertain, unless you are very short on memory. + +Maximum number of Unix98 PTYs in use (0-2048) +CONFIG_UNIX98_PTY_COUNT + The maximum number of Unix98 PTYs that can be used at any one time. + The default is 256, and should be enough for desktop systems, + however, server machines which support incoming telnet/rlogin/ssh + connections may want to increase this. When not in use, each + additional set of 256 PTYs occupy approximately 8K of kernel memory + on 32-bit architectures. + TGA Console Support CONFIG_TGA_CONSOLE Many Alpha systems (e.g the Multia) are shipped with a graphics card @@ -6495,10 +6515,7 @@ /dev/pts/2, for example. The GNU C library glibc 2.1 contains the requisite support for this mode of operation. - This code is also available as a module called devpts.o ( = code - which can be inserted in and removed from the running kernel - whenever you want). If you want to compile it as a module, say M - here and read Documentation/modules.txt. + Say Y here if you have enabled support for Unix98 PTYs. Macintosh partition map support CONFIG_MAC_PARTITION diff -ur stock/linux-2.1.114/arch/alpha/config.in linux-2.1.114-smp/arch/alpha/config.in --- stock/linux-2.1.114/arch/alpha/config.in Fri Jul 10 15:18:29 1998 +++ linux-2.1.114-smp/arch/alpha/config.in Mon Aug 3 13:40:09 1998 @@ -248,11 +248,11 @@ fi endmenu +source drivers/char/Config.in + source fs/Config.in source fs/nls/Config.in - -source drivers/char/Config.in if [ "$CONFIG_VT" = "y" ]; then mainmenu_option next_comment diff -ur stock/linux-2.1.114/arch/alpha/defconfig linux-2.1.114-smp/arch/alpha/defconfig --- stock/linux-2.1.114/arch/alpha/defconfig Sun Jul 19 20:44:33 1998 +++ linux-2.1.114-smp/arch/alpha/defconfig Mon Aug 3 13:40:09 1998 @@ -196,6 +196,7 @@ # CONFIG_DGRS is not set # CONFIG_EEXPRESS_PRO100 is not set # CONFIG_NE2K_PCI is not set +# CONFIG_TLAN is not set # CONFIG_NET_POCKET is not set # CONFIG_FDDI is not set # CONFIG_DLCI is not set @@ -223,36 +224,6 @@ # CONFIG_CD_NO_IDESCSI is not set # -# Filesystems -# -# CONFIG_QUOTA is not set -# CONFIG_MINIX_FS is not set -CONFIG_EXT2_FS=y -CONFIG_ISO9660_FS=y -# CONFIG_JOLIET is not set -# CONFIG_FAT_FS is not set -# CONFIG_MSDOS_FS is not set -# CONFIG_UMSDOS_FS is not set -# CONFIG_VFAT_FS is not set -CONFIG_PROC_FS=y -CONFIG_NFS_FS=y -# CONFIG_NFSD is not set -CONFIG_SUNRPC=y -CONFIG_LOCKD=y -# CONFIG_CODA_FS is not set -# CONFIG_SMB_FS is not set -# CONFIG_HPFS_FS is not set -# CONFIG_NTFS_FS is not set -# CONFIG_SYSV_FS is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_ROMFS_FS is not set -# CONFIG_AUTOFS_FS is not set -# CONFIG_UFS_FS is not set -# CONFIG_MAC_PARTITION is not set -# CONFIG_NLS is not set - -# # Character devices # CONFIG_VT=y @@ -261,6 +232,8 @@ # CONFIG_SERIAL_CONSOLE is not set # CONFIG_SERIAL_EXTENDED is not set # CONFIG_SERIAL_NONSTANDARD is not set +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=256 CONFIG_MOUSE=y # CONFIG_ATIXL_BUSMOUSE is not set # CONFIG_BUSMOUSE is not set @@ -276,12 +249,42 @@ # CONFIG_VIDEO_DEV is not set # CONFIG_NVRAM is not set # CONFIG_JOYSTICK is not set -# CONFIG_MISC_RADIO is not set # # Ftape, the floppy tape device driver # # CONFIG_FTAPE is not set + +# +# Filesystems +# +# CONFIG_QUOTA is not set +# CONFIG_MINIX_FS is not set +CONFIG_EXT2_FS=y +CONFIG_ISO9660_FS=y +# CONFIG_JOLIET is not set +# CONFIG_FAT_FS is not set +# CONFIG_MSDOS_FS is not set +# CONFIG_UMSDOS_FS is not set +# CONFIG_VFAT_FS is not set +CONFIG_PROC_FS=y +CONFIG_NFS_FS=y +# CONFIG_NFSD is not set +CONFIG_SUNRPC=y +CONFIG_LOCKD=y +# CONFIG_CODA_FS is not set +# CONFIG_SMB_FS is not set +# CONFIG_HPFS_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_SYSV_FS is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_ROMFS_FS is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_UFS_FS is not set +CONFIG_DEVPTS_FS=y +# CONFIG_MAC_PARTITION is not set +# CONFIG_NLS is not set # # Console drivers diff -ur stock/linux-2.1.114/arch/i386/config.in linux-2.1.114-smp/arch/i386/config.in --- stock/linux-2.1.114/arch/i386/config.in Sun Jul 12 22:36:20 1998 +++ linux-2.1.114-smp/arch/i386/config.in Mon Aug 3 13:40:09 1998 @@ -115,11 +115,11 @@ fi endmenu +source drivers/char/Config.in + source fs/Config.in source fs/nls/Config.in - -source drivers/char/Config.in if [ "$CONFIG_VT" = "y" ]; then mainmenu_option next_comment diff -ur stock/linux-2.1.114/arch/i386/defconfig linux-2.1.114-smp/arch/i386/defconfig --- stock/linux-2.1.114/arch/i386/defconfig Mon Aug 3 03:06:20 1998 +++ linux-2.1.114-smp/arch/i386/defconfig Mon Aug 3 13:40:09 1998 @@ -218,36 +218,6 @@ # CONFIG_CD_NO_IDESCSI is not set # -# Filesystems -# -# CONFIG_QUOTA is not set -# CONFIG_MINIX_FS is not set -CONFIG_EXT2_FS=y -CONFIG_ISO9660_FS=y -# CONFIG_JOLIET is not set -# CONFIG_FAT_FS is not set -# CONFIG_MSDOS_FS is not set -# CONFIG_UMSDOS_FS is not set -# CONFIG_VFAT_FS is not set -CONFIG_PROC_FS=y -CONFIG_NFS_FS=y -CONFIG_NFSD=y -CONFIG_SUNRPC=y -CONFIG_LOCKD=y -# CONFIG_CODA_FS is not set -# CONFIG_SMB_FS is not set -# CONFIG_HPFS_FS is not set -# CONFIG_NTFS_FS is not set -# CONFIG_SYSV_FS is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_ROMFS_FS is not set -CONFIG_AUTOFS_FS=y -# CONFIG_UFS_FS is not set -# CONFIG_MAC_PARTITION is not set -# CONFIG_NLS is not set - -# # Character devices # CONFIG_VT=y @@ -256,6 +226,8 @@ # CONFIG_SERIAL_CONSOLE is not set # CONFIG_SERIAL_EXTENDED is not set # CONFIG_SERIAL_NONSTANDARD is not set +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=256 CONFIG_MOUSE=y # CONFIG_ATIXL_BUSMOUSE is not set # CONFIG_BUSMOUSE is not set @@ -276,6 +248,37 @@ # Ftape, the floppy tape device driver # # CONFIG_FTAPE is not set + +# +# Filesystems +# +# CONFIG_QUOTA is not set +# CONFIG_MINIX_FS is not set +CONFIG_EXT2_FS=y +CONFIG_ISO9660_FS=y +# CONFIG_JOLIET is not set +# CONFIG_FAT_FS is not set +# CONFIG_MSDOS_FS is not set +# CONFIG_UMSDOS_FS is not set +# CONFIG_VFAT_FS is not set +CONFIG_PROC_FS=y +CONFIG_NFS_FS=y +CONFIG_NFSD=y +CONFIG_SUNRPC=y +CONFIG_LOCKD=y +# CONFIG_CODA_FS is not set +# CONFIG_SMB_FS is not set +# CONFIG_HPFS_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_SYSV_FS is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_ROMFS_FS is not set +CONFIG_AUTOFS_FS=y +# CONFIG_UFS_FS is not set +CONFIG_DEVPTS_FS=y +# CONFIG_MAC_PARTITION is not set +# CONFIG_NLS is not set # # Console drivers diff -ur stock/linux-2.1.114/arch/m68k/config.in linux-2.1.114-smp/arch/m68k/config.in --- stock/linux-2.1.114/arch/m68k/config.in Mon Aug 3 03:06:20 1998 +++ linux-2.1.114-smp/arch/m68k/config.in Mon Aug 3 13:40:09 1998 @@ -240,15 +240,6 @@ fi fi -source fs/Config.in - -if [ "$CONFIG_VME" = "n" ]; then - define_bool CONFIG_FB y - source drivers/video/Config.in -fi - -source fs/nls/Config.in - mainmenu_option next_comment comment 'Character devices' @@ -343,6 +334,14 @@ fi endmenu +source fs/Config.in + +if [ "$CONFIG_VME" = "n" ]; then + define_bool CONFIG_FB y + source drivers/video/Config.in +fi + +source fs/nls/Config.in mainmenu_option next_comment comment 'Sound support' diff -ur stock/linux-2.1.114/arch/mips/config.in linux-2.1.114-smp/arch/mips/config.in --- stock/linux-2.1.114/arch/mips/config.in Fri May 8 00:13:22 1998 +++ linux-2.1.114-smp/arch/mips/config.in Mon Aug 3 13:40:09 1998 @@ -194,11 +194,11 @@ fi fi +source drivers/char/Config.in + source fs/Config.in source fs/nls/Config.in - -source drivers/char/Config.in mainmenu_option next_comment comment 'Sound' diff -ur stock/linux-2.1.114/arch/mips/defconfig linux-2.1.114-smp/arch/mips/defconfig --- stock/linux-2.1.114/arch/mips/defconfig Fri May 8 00:13:23 1998 +++ linux-2.1.114-smp/arch/mips/defconfig Mon Aug 3 13:40:09 1998 @@ -51,7 +51,7 @@ # CONFIG_MODULES is not set # -# Floppy, IDE, and other block devices +# Block devices # CONFIG_BLK_DEV_FD=y CONFIG_BLK_DEV_IDE=y @@ -74,6 +74,7 @@ # Additional Block Devices # # CONFIG_BLK_DEV_LOOP is not set +# CONFIG_BLK_DEV_NBD is not set # CONFIG_BLK_DEV_MD is not set # CONFIG_BLK_DEV_RAM is not set # CONFIG_BLK_DEV_XD is not set @@ -94,7 +95,6 @@ # CONFIG_IP_MULTICAST is not set # CONFIG_IP_ADVANCED_ROUTER is not set # CONFIG_IP_PNP is not set -# CONFIG_IP_ACCT is not set # CONFIG_IP_ROUTER is not set # CONFIG_NET_IPIP is not set # CONFIG_NET_IPGRE is not set @@ -157,12 +157,11 @@ # CONFIG_SCSI_NCR53C406A is not set # CONFIG_SCSI_NCR53C7xx is not set CONFIG_SCSI_NCR53C8XX=y -# CONFIG_SCSI_NCR53C8XX_NVRAM_DETECT is not set -# CONFIG_SCSI_NCR53C8XX_TAGGED_QUEUE is not set -# CONFIG_SCSI_NCR53C8XX_IOMAPPED is not set +CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8 CONFIG_SCSI_NCR53C8XX_MAX_TAGS=4 CONFIG_SCSI_NCR53C8XX_SYNC=5 -# CONFIG_SCSI_NCR53C8XX_NO_DISCONNECT is not set +# CONFIG_SCSI_NCR53C8XX_PROFILE is not set +# CONFIG_SCSI_NCR53C8XX_IOMAPPED is not set # CONFIG_SCSI_PAS16 is not set # CONFIG_SCSI_PCI2000 is not set # CONFIG_SCSI_PCI2220I is not set @@ -174,7 +173,6 @@ # CONFIG_SCSI_T128 is not set # CONFIG_SCSI_U14_34F is not set # CONFIG_SCSI_ULTRASTOR is not set -CONFIG_JAZZ_ESP=y # # Network device support @@ -196,9 +194,10 @@ # CONFIG_CS89x0 is not set # CONFIG_DE4X5 is not set # CONFIG_DEC_ELCP is not set -# CONFIG_DEC_ELCP is not set # CONFIG_DGRS is not set # CONFIG_EEXPRESS_PRO100 is not set +# CONFIG_NE2K_PCI is not set +# CONFIG_TLAN is not set # CONFIG_NET_POCKET is not set # CONFIG_FDDI is not set # CONFIG_DLCI is not set @@ -214,12 +213,14 @@ # AX.25 network device drivers # # CONFIG_MKISS is not set +# CONFIG_6PACK is not set # CONFIG_BPQETHER is not set # CONFIG_DMASCC is not set # CONFIG_SCC is not set # CONFIG_BAYCOM_SER_FDX is not set # CONFIG_BAYCOM_SER_HDX is not set # CONFIG_BAYCOM_PAR is not set +# CONFIG_BAYCOM_EPP is not set # CONFIG_SOUNDMODEM is not set # @@ -234,6 +235,31 @@ CONFIG_CDROM=y # +# Character devices +# +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +CONFIG_SERIAL=y +# CONFIG_SERIAL_CONSOLE is not set +# CONFIG_SERIAL_EXTENDED is not set +# CONFIG_SERIAL_NONSTANDARD is not set +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=256 +# CONFIG_MOUSE is not set +# CONFIG_QIC02_TAPE is not set +# CONFIG_APM is not set +# CONFIG_WATCHDOG is not set +# CONFIG_RTC is not set +# CONFIG_VIDEO_DEV is not set +# CONFIG_NVRAM is not set +# CONFIG_JOYSTICK is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set + +# # Filesystems # # CONFIG_QUOTA is not set @@ -260,6 +286,7 @@ # CONFIG_ROMFS_FS is not set # CONFIG_AUTOFS_FS is not set # CONFIG_UFS_FS is not set +CONFIG_DEVPTS_FS=y # CONFIG_MAC_PARTITION is not set CONFIG_NLS=y @@ -292,30 +319,6 @@ # CONFIG_NLS_ISO8859_8 is not set # CONFIG_NLS_ISO8859_9 is not set # CONFIG_NLS_KOI8_R is not set - -# -# Character devices -# -CONFIG_VT=y -CONFIG_VT_CONSOLE=y -CONFIG_SERIAL=y -# CONFIG_SERIAL_CONSOLE is not set -# CONFIG_SERIAL_EXTENDED is not set -# CONFIG_SERIAL_NONSTANDARD is not set -# CONFIG_MOUSE is not set -# CONFIG_QIC02_TAPE is not set -# CONFIG_APM is not set -# CONFIG_WATCHDOG is not set -# CONFIG_RTC is not set -# CONFIG_VIDEO_DEV is not set -# CONFIG_NVRAM is not set -# CONFIG_JOYSTICK is not set -# CONFIG_MISC_RADIO is not set - -# -# Ftape, the floppy tape device driver -# -# CONFIG_FTAPE is not set # # Sound diff -ur stock/linux-2.1.114/arch/ppc/config.in linux-2.1.114-smp/arch/ppc/config.in --- stock/linux-2.1.114/arch/ppc/config.in Wed Jun 24 14:44:00 1998 +++ linux-2.1.114-smp/arch/ppc/config.in Mon Aug 3 13:40:09 1998 @@ -170,13 +170,13 @@ fi endmenu -source fs/Config.in - -source fs/nls/Config.in - source drivers/video/Config.in source drivers/char/Config.in + +source fs/Config.in + +source fs/nls/Config.in #mainmenu_option next_comment #comment 'Sound' diff -ur stock/linux-2.1.114/arch/ppc/defconfig linux-2.1.114-smp/arch/ppc/defconfig --- stock/linux-2.1.114/arch/ppc/defconfig Fri May 8 00:18:13 1998 +++ linux-2.1.114-smp/arch/ppc/defconfig Mon Aug 3 13:40:09 1998 @@ -1,5 +1,5 @@ # -# Automatically generated make config: don't edit +# Automatically generated by make menuconfig: don't edit # # @@ -34,7 +34,8 @@ CONFIG_BINFMT_MISC=m # CONFIG_BINFMT_JAVA is not set # CONFIG_PARPORT is not set -# CONFIG_ABSTRACT_CONSOLE is not set +# CONFIG_FB is not set +CONFIG_ABSCON_COMPAT=y CONFIG_PMAC_CONSOLE=y CONFIG_MAC_KEYBOARD=y CONFIG_MAC_FLOPPY=y @@ -56,14 +57,10 @@ # CONFIG_PNP is not set # -# Floppy, IDE, and other block devices +# Block devices # # CONFIG_BLK_DEV_FD is not set CONFIG_BLK_DEV_IDE=y - -# -# Please see Documentation/ide.txt for help/info on IDE drives -# # CONFIG_BLK_DEV_HD_IDE is not set CONFIG_BLK_DEV_IDEDISK=y CONFIG_BLK_DEV_IDECD=y @@ -74,10 +71,6 @@ # CONFIG_BLK_DEV_RZ1000 is not set # CONFIG_BLK_DEV_IDEPCI is not set # CONFIG_IDE_CHIPSETS is not set - -# -# Additional Block Devices -# # CONFIG_BLK_DEV_LOOP is not set # CONFIG_BLK_DEV_NBD is not set # CONFIG_BLK_DEV_MD is not set @@ -101,25 +94,16 @@ CONFIG_IP_MULTICAST=y # CONFIG_IP_ADVANCED_ROUTER is not set # CONFIG_IP_PNP is not set -# CONFIG_IP_ACCT is not set # CONFIG_IP_ROUTER is not set # CONFIG_NET_IPIP is not set # CONFIG_NET_IPGRE is not set # CONFIG_IP_MROUTE is not set CONFIG_IP_ALIAS=y # CONFIG_SYN_COOKIES is not set - -# -# (it is safe to leave these untouched) -# CONFIG_INET_RARP=y CONFIG_IP_NOSR=y CONFIG_SKB_LARGE=y # CONFIG_IPV6 is not set - -# -# -# # CONFIG_IPX is not set CONFIG_ATALK=m # CONFIG_X25 is not set @@ -132,25 +116,16 @@ # CONFIG_NET_HW_FLOWCONTROL is not set # CONFIG_CPU_IS_SLOW is not set # CONFIG_NET_SCHED is not set -# CONFIG_NET_PROFILE is not set # # SCSI support # CONFIG_SCSI=y - -# -# SCSI support type (disk, tape, CD-ROM) -# CONFIG_BLK_DEV_SD=y CONFIG_CHR_DEV_ST=y CONFIG_BLK_DEV_SR=y CONFIG_BLK_DEV_SR_VENDOR=y # CONFIG_CHR_DEV_SG is not set - -# -# Some SCSI devices (e.g. CD jukebox) support multiple LUNs -# # CONFIG_SCSI_MULTI_LUN is not set CONFIG_SCSI_CONSTANTS=y # CONFIG_SCSI_LOGGING is not set @@ -205,6 +180,7 @@ # CONFIG_EQUALIZER is not set CONFIG_NET_ETHERNET=y CONFIG_MACE=y +# CONFIG_BMAC is not set # CONFIG_NET_VENDOR_3COM is not set # CONFIG_LANCE is not set # CONFIG_NET_VENDOR_SMC is not set @@ -221,9 +197,11 @@ CONFIG_DEC_ELCP=m # CONFIG_DGRS is not set # CONFIG_EEXPRESS_PRO100 is not set +# CONFIG_LNE390 is not set +# CONFIG_NE2K_PCI is not set +# CONFIG_TLAN is not set # CONFIG_ES3210 is not set # CONFIG_EPIC100 is not set -# CONFIG_TLAN is not set # CONFIG_ZNET is not set # CONFIG_NET_POCKET is not set # CONFIG_FDDI is not set @@ -232,10 +210,6 @@ # CONFIG_COPS is not set # CONFIG_IPDDP is not set CONFIG_PPP=m - -# -# CCP compressors for PPP are only built as modules. -# # CONFIG_SLIP is not set # CONFIG_NET_RADIO is not set # CONFIG_TR is not set @@ -257,6 +231,31 @@ # CONFIG_CD_NO_IDESCSI is not set # +# Character devices +# +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +# CONFIG_SERIAL is not set +# CONFIG_SERIAL_EXTENDED is not set +# CONFIG_SERIAL_NONSTANDARD is not set +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=256 +# CONFIG_MOUSE is not set +# CONFIG_UMISC is not set +# CONFIG_QIC02_TAPE is not set +# CONFIG_APM is not set +# CONFIG_WATCHDOG is not set +# CONFIG_RTC is not set +# CONFIG_VIDEO_DEV is not set +CONFIG_NVRAM=y +# CONFIG_JOYSTICK is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set + +# # Filesystems # # CONFIG_QUOTA is not set @@ -283,8 +282,8 @@ # CONFIG_ROMFS_FS is not set CONFIG_AUTOFS_FS=y # CONFIG_UFS_FS is not set -# CONFIG_ADFS_FS is not set CONFIG_DEVPTS_FS=y +# CONFIG_ADFS_FS is not set CONFIG_MAC_PARTITION=y CONFIG_NLS=y @@ -317,28 +316,3 @@ # CONFIG_NLS_ISO8859_8 is not set # CONFIG_NLS_ISO8859_9 is not set # CONFIG_NLS_KOI8_R is not set - -# -# Character devices -# -CONFIG_VT=y -CONFIG_VT_CONSOLE=y -# CONFIG_SOFTCURSOR is not set -# CONFIG_SERIAL is not set -# CONFIG_SERIAL_EXTENDED is not set -# CONFIG_SERIAL_NONSTANDARD is not set -# CONFIG_MOUSE is not set -# CONFIG_UMISC is not set -# CONFIG_QIC02_TAPE is not set -# CONFIG_APM is not set -# CONFIG_WATCHDOG is not set -# CONFIG_RTC is not set -# CONFIG_VIDEO_DEV is not set -CONFIG_NVRAM=y -# CONFIG_JOYSTICK is not set -# CONFIG_MISC_RADIO is not set - -# -# Ftape, the floppy tape device driver -# -# CONFIG_FTAPE is not set diff -ur stock/linux-2.1.114/arch/sparc/config.in linux-2.1.114-smp/arch/sparc/config.in --- stock/linux-2.1.114/arch/sparc/config.in Fri Jul 10 15:18:30 1998 +++ linux-2.1.114-smp/arch/sparc/config.in Mon Aug 3 13:40:09 1998 @@ -194,3 +194,4 @@ fi bool 'Magic SysRq key' CONFIG_MAGIC_SYSRQ endmenu + diff -ur stock/linux-2.1.114/drivers/char/Config.in linux-2.1.114-smp/drivers/char/Config.in --- stock/linux-2.1.114/drivers/char/Config.in Fri Jul 24 11:10:17 1998 +++ linux-2.1.114-smp/drivers/char/Config.in Mon Aug 3 13:40:09 1998 @@ -40,6 +40,10 @@ fi tristate 'Hayes ESP serial port support' CONFIG_ESPSERIAL fi +bool 'Unix98 PTY support' CONFIG_UNIX98_PTYS +if [ "$CONFIG_UNIX98_PTYS" = "y" ]; then + int 'Maximum number of Unix98 PTYs in use (0-2048)' CONFIG_UNIX98_PTY_COUNT 256 +fi if [ "$CONFIG_PARPORT" != "n" ]; then dep_tristate 'Parallel printer support' CONFIG_PRINTER $CONFIG_PARPORT if [ "$CONFIG_PRINTER" != "n" ]; then diff -ur stock/linux-2.1.114/drivers/char/pty.c linux-2.1.114-smp/drivers/char/pty.c --- stock/linux-2.1.114/drivers/char/pty.c Tue Apr 7 07:52:04 1998 +++ linux-2.1.114-smp/drivers/char/pty.c Mon Aug 3 13:40:09 1998 @@ -35,9 +35,9 @@ #define PTY_MAGIC 0x5001 static struct tty_driver pty_driver, pty_slave_driver; -static struct tty_driver old_pty_driver, old_pty_slave_driver; static int pty_refcount; +/* Note: one set of tables for BSD and one for Unix98 */ static struct tty_struct *pty_table[NR_PTYS]; static struct termios *pty_termios[NR_PTYS]; static struct termios *pty_termios_locked[NR_PTYS]; @@ -46,6 +46,20 @@ static struct termios *ttyp_termios_locked[NR_PTYS]; static struct pty_struct pty_state[NR_PTYS]; +#ifdef CONFIG_UNIX98_PTYS +/* These are global because they are accessed in tty_io.c */ +struct tty_driver ptm_driver[UNIX98_NR_MAJORS]; +struct tty_driver pts_driver[UNIX98_NR_MAJORS]; + +static struct tty_struct *ptm_table[UNIX98_NR_MAJORS][NR_PTYS]; +static struct termios *ptm_termios[UNIX98_NR_MAJORS][NR_PTYS]; +static struct termios *ptm_termios_locked[UNIX98_NR_MAJORS][NR_PTYS]; +static struct tty_struct *pts_table[UNIX98_NR_MAJORS][NR_PTYS]; +static struct termios *pts_termios[UNIX98_NR_MAJORS][NR_PTYS]; +static struct termios *pts_termios_locked[UNIX98_NR_MAJORS][NR_PTYS]; +static struct pty_struct ptm_state[UNIX98_NR_MAJORS][NR_PTYS]; +#endif + #define MIN(a,b) ((a) < (b) ? (a) : (b)) static void pty_close(struct tty_struct * tty, struct file * filp) @@ -267,7 +281,7 @@ line = MINOR(tty->device) - tty->driver.minor_start; if ((line < 0) || (line >= NR_PTYS)) goto out; - pty = pty_state + line; + pty = (struct pty_struct *)(tty->driver.driver_state) + line; tty->driver_data = pty; retval = -EIO; @@ -294,6 +308,10 @@ __initfunc(int pty_init(void)) { + int i; + + /* Traditional BSD devices */ + memset(&pty_state, 0, sizeof(pty_state)); memset(&pty_driver, 0, sizeof(struct tty_driver)); pty_driver.magic = TTY_DRIVER_MAGIC; @@ -314,6 +332,7 @@ pty_driver.table = pty_table; pty_driver.termios = pty_termios; pty_driver.termios_locked = pty_termios_locked; + pty_driver.driver_state = pty_state; pty_driver.other = &pty_slave_driver; pty_driver.open = pty_open; @@ -337,37 +356,58 @@ pty_slave_driver.table = ttyp_table; pty_slave_driver.termios = ttyp_termios; pty_slave_driver.termios_locked = ttyp_termios_locked; + pty_slave_driver.driver_state = pty_state; pty_slave_driver.other = &pty_driver; - old_pty_driver = pty_driver; - old_pty_driver.driver_name = "compat_pty_master"; - old_pty_driver.proc_entry = 0; - old_pty_driver.major = TTY_MAJOR; - old_pty_driver.minor_start = 128; - old_pty_driver.num = (NR_PTYS > 64) ? 64 : NR_PTYS; - old_pty_driver.other = &old_pty_slave_driver; - - old_pty_slave_driver = pty_slave_driver; - old_pty_slave_driver.driver_name = "compat_pty_slave"; - old_pty_slave_driver.proc_entry = 0; - old_pty_slave_driver.major = TTY_MAJOR; - old_pty_slave_driver.minor_start = 192; - old_pty_slave_driver.num = (NR_PTYS > 64) ? 64 : NR_PTYS; - old_pty_slave_driver.other = &old_pty_driver; + if (tty_register_driver(&pty_driver)) + panic("Couldn't register pty driver"); + if (tty_register_driver(&pty_slave_driver)) + panic("Couldn't register pty slave driver"); - /* only the master pty gets this ioctl (which is why we + /* + * only the master pty gets this ioctl (which is why we * assign it here, instead of up with the rest of the * pty_driver initialization. */ pty_driver.ioctl = pty_ioctl; - if (tty_register_driver(&pty_driver)) - panic("Couldn't register pty driver"); - if (tty_register_driver(&pty_slave_driver)) - panic("Couldn't register pty slave driver"); - if (tty_register_driver(&old_pty_driver)) - panic("Couldn't register compat pty driver"); - if (tty_register_driver(&old_pty_slave_driver)) - panic("Couldn't register compat pty slave driver"); + /* Unix98 devices */ +#ifdef CONFIG_UNIX98_PTYS + printk("pty: %d Unix98 ptys configured\n", UNIX98_NR_MAJORS*NR_PTYS); + for ( i = 0 ; i < UNIX98_NR_MAJORS ; i++ ) { + ptm_driver[i] = pty_driver; + ptm_driver[i].name = "ptm"; + ptm_driver[i].proc_entry = 0; + ptm_driver[i].major = UNIX98_PTY_MASTER_MAJOR+i; + ptm_driver[i].minor_start = 0; + ptm_driver[i].num = NR_PTYS; + ptm_driver[i].other = &pts_driver[i]; + ptm_driver[i].table = ptm_table[i]; + ptm_driver[i].termios = ptm_termios[i]; + ptm_driver[i].termios_locked = ptm_termios_locked[i]; + ptm_driver[i].driver_state = ptm_state[i]; + + pts_driver[i] = pty_slave_driver; + pts_driver[i].name = "pts"; + pts_driver[i].proc_entry = 0; + pts_driver[i].major = UNIX98_PTY_SLAVE_MAJOR+i; + pts_driver[i].minor_start = 0; + pts_driver[i].num = ptm_driver[i].num; + pts_driver[i].other = &ptm_driver[i]; + pts_driver[i].table = pts_table[i]; + pts_driver[i].termios = pts_termios[i]; + pts_driver[i].termios_locked = pts_termios_locked[i]; + pts_driver[i].driver_state = ptm_state[i]; + + ptm_driver[i].ioctl = pty_ioctl; + + if (tty_register_driver(&ptm_driver[i])) + panic("Couldn't register Unix98 ptm driver major %d", + ptm_driver[i].major); + if (tty_register_driver(&pts_driver[i])) + panic("Couldn't register Unix98 pts driver major %d", + pts_driver[i].major); + } +#endif return 0; } diff -ur stock/linux-2.1.114/drivers/char/tty_io.c linux-2.1.114-smp/drivers/char/tty_io.c --- stock/linux-2.1.114/drivers/char/tty_io.c Mon Jul 20 14:00:11 1998 +++ linux-2.1.114-smp/drivers/char/tty_io.c Mon Aug 3 13:40:09 1998 @@ -65,6 +65,7 @@ #include #include #include +#include #include #include #include @@ -107,6 +108,10 @@ struct tty_driver *tty_drivers = NULL; /* linked list of tty drivers */ struct tty_ldisc ldiscs[NR_LDISCS]; /* line disc dispatch table */ +#ifdef CONFIG_UNIX98_PTYS +extern struct tty_driver ptm_driver[]; /* Unix98 pty masters; for /dev/ptmx */ +#endif + /* * redirect is the pseudo-tty that console output * is redirected to if asked by TIOCCONS. @@ -1213,34 +1218,33 @@ device = c->device(c); noctty = 1; } +#ifdef CONFIG_UNIX98_PTYS if (device == PTMX_DEV) { /* find a free pty. */ - struct tty_driver *driver = tty_drivers; - int minor, line; + int major, minor, line; + struct tty_driver *driver; - /* find the pty driver */ - for (driver=tty_drivers; driver; driver=driver->next) - if (driver->major == PTY_MASTER_MAJOR) - break; - if (!driver) return -ENODEV; - - /* find a minor device that is not in use. */ - for (minor=driver->minor_start; - minorminor_start+driver->num; - minor++) { - device = MKDEV(driver->major, minor); - retval = init_dev(device, &tty); - if (retval==0) break; /* success! */ + /* find a device that is not in use. */ + retval = -1; + for ( major = 0 ; major < UNIX98_NR_MAJORS ; major++ ) { + driver = &ptm_driver[major]; + for (minor = driver->minor_start ; + minor < driver->minor_start + driver->num ; + minor++) { + device = MKDEV(driver->major, minor); + if (!init_dev(device, &tty)) goto ptmx_found; /* ok! */ + } } - if (minor==driver->minor_start+driver->num) /* no success */ - return -EIO; /* no free ptys */ - + return -EIO; /* no free ptys */ + ptmx_found: set_bit(TTY_PTY_LOCK, &tty->flags); /* LOCK THE SLAVE */ line = minor - driver->minor_start; - devpts_pty_new(line, MKDEV(driver->other->major, line+driver->other->minor_start)); + devpts_pty_new(line + major*NR_PTYS, MKDEV(driver->other->major, + line+driver->other->minor_start)); noctty = 1; goto init_dev_done; } +#endif retval = init_dev(device, &tty); if (retval) diff -ur stock/linux-2.1.114/fs/Config.in linux-2.1.114-smp/fs/Config.in --- stock/linux-2.1.114/fs/Config.in Thu Jul 30 19:45:41 1998 +++ linux-2.1.114-smp/fs/Config.in Mon Aug 3 13:40:09 1998 @@ -72,9 +72,11 @@ bool 'SMD disklabel (Sun partition tables) support' CONFIG_SMD_DISKLABEL bool 'Solaris (x86) partition table support' CONFIG_SOLARIS_X86_PARTITION fi +if [ "$CONFIG_UNIX98_PTYS" = "y" ]; then + tristate '/dev/pts filesystem for Unix98 PTYs' CONFIG_DEVPTS_FS +fi if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then tristate 'ADFS filesystem support (read only) (EXPERIMENTAL)' CONFIG_ADFS_FS - tristate '/dev/pts filesystem support (EXPERIMENTAL)' CONFIG_DEVPTS_FS fi bool 'Macintosh partition map support' CONFIG_MAC_PARTITION endmenu diff -ur stock/linux-2.1.114/fs/devpts/devpts_i.h linux-2.1.114-smp/fs/devpts/devpts_i.h --- stock/linux-2.1.114/fs/devpts/devpts_i.h Sat Apr 4 09:45:15 1998 +++ linux-2.1.114-smp/fs/devpts/devpts_i.h Mon Aug 3 13:40:09 1998 @@ -27,7 +27,8 @@ gid_t gid; umode_t mode; - struct inode *inodes[NR_PTYS]; + unsigned int max_ptys; + struct inode **inodes; }; #define DEVPTS_SUPER_MAGIC 0x1cd1 diff -ur stock/linux-2.1.114/fs/devpts/inode.c linux-2.1.114-smp/fs/devpts/inode.c --- stock/linux-2.1.114/fs/devpts/inode.c Sat Jun 13 13:25:12 1998 +++ linux-2.1.114-smp/fs/devpts/inode.c Mon Aug 3 13:40:09 1998 @@ -34,7 +34,7 @@ struct inode *inode; int i; - for ( i = 0 ; i < NR_PTYS ; i++ ) { + for ( i = 0 ; i < sbi->max_ptys ; i++ ) { if ( (inode = sbi->inodes[i]) ) { if ( inode->i_count != 1 ) printk("devpts_put_super: badness: entry %d count %d\n", @@ -48,6 +48,7 @@ if ( sbi->next ) SBI(sbi->next)->back = sbi->back; + kfree(sbi->inodes); kfree(sbi); #ifdef MODULE @@ -138,8 +139,14 @@ if ( !sbi ) goto fail_unlock; - sbi->magic = DEVPTS_SBI_MAGIC; - memset(sbi->inodes, 0, sizeof sbi->inodes); + sbi->magic = DEVPTS_SBI_MAGIC; + sbi->max_ptys = unix98_max_ptys; + sbi->inodes = kmalloc(sizeof(struct inode *) * sbi->max_ptys, GFP_KERNEL); + if ( !sbi->inodes ) { + kfree(sbi); + goto fail_unlock; + } + memset(sbi->inodes, 0, sizeof(struct inode *) * sbi->max_ptys); s->u.generic_sbp = (void *) sbi; s->s_blocksize = 1024; @@ -252,6 +259,7 @@ static void devpts_read_inode(struct inode *inode) { ino_t ino = inode->i_ino; + struct devpts_sb_info *sbi = SBI(inode->i_sb); inode->i_op = NULL; inode->i_mode = 0; @@ -270,7 +278,7 @@ } ino -= 2; - if ( ino >= NR_PTYS ) + if ( ino >= sbi->max_ptys ) return; /* Bogus */ inode->i_mode = S_IFCHR; diff -ur stock/linux-2.1.114/fs/devpts/root.c linux-2.1.114-smp/fs/devpts/root.c --- stock/linux-2.1.114/fs/devpts/root.c Tue Apr 7 08:05:05 1998 +++ linux-2.1.114-smp/fs/devpts/root.c Mon Aug 3 13:40:09 1998 @@ -98,7 +98,7 @@ filp->f_pos = ++nr; /* fall through */ default: - while ( nr < NR_PTYS+2 ) { + while ( nr < sbi->max_ptys ) { int ptynr = nr - 2; if ( sbi->inodes[ptynr] ) { genptsname(numbuf, ptynr); diff -ur stock/linux-2.1.114/include/linux/devpts_fs.h linux-2.1.114-smp/include/linux/devpts_fs.h --- stock/linux-2.1.114/include/linux/devpts_fs.h Sat Apr 4 09:45:19 1998 +++ linux-2.1.114-smp/include/linux/devpts_fs.h Mon Aug 3 13:40:09 1998 @@ -21,23 +21,28 @@ #include #include +#include #ifdef CONFIG_DEVPTS_FS void devpts_pty_new(int, kdev_t); void devpts_pty_kill(int); +#define unix98_max_ptys NR_PTYS * UNIX98_NR_MAJORS; #elif defined(CONFIG_DEVPTS_FS_MODULE) #ifdef BUILDING_PTY_C void (*devpts_upcall_new)(int,kdev_t) = NULL; void (*devpts_upcall_kill)(int) = NULL; +unsigned int unix98_max_ptys = NR_PTYS * UNIX98_NR_MAJORS; EXPORT_SYMBOL(devpts_upcall_new); EXPORT_SYMBOL(devpts_upcall_kill); +EXPORT_SYMBOL(unix98_max_ptys); #else extern void (*devpts_upcall_new)(int,kdev_t); extern void (*devpts_upcall_kill)(int); +extern unsigned int unix98_max_ptys; #endif #ifndef BUILDING_DEVPTS diff -ur stock/linux-2.1.114/include/linux/major.h linux-2.1.114-smp/include/linux/major.h --- stock/linux-2.1.114/include/linux/major.h Fri May 8 00:42:39 1998 +++ linux-2.1.114-smp/include/linux/major.h Mon Aug 3 13:40:09 1998 @@ -8,8 +8,12 @@ /* limits */ -#define MAX_CHRDEV 128 -#define MAX_BLKDEV 128 +/* + * Important: Don't change this to 256. Major number 255 is and must be + * reserved for future expansion into a larger dev_t space. + */ +#define MAX_CHRDEV 255 +#define MAX_BLKDEV 255 #define UNNAMED_MAJOR 0 #define MEM_MAJOR 1 @@ -79,6 +83,10 @@ #define SPECIALIX_NORMAL_MAJOR 75 #define SPECIALIX_CALLOUT_MAJOR 76 + +#define UNIX98_PTY_MASTER_MAJOR 128 +#define UNIX98_PTY_MAJOR_COUNT 8 +#define UNIX98_PTY_SLAVE_MAJOR (UNIX98_PTY_MASTER_MAJOR+UNIX98_PTY_MAJOR_COUNT) /* * Tests for SCSI devices. diff -ur stock/linux-2.1.114/include/linux/tty.h linux-2.1.114-smp/include/linux/tty.h --- stock/linux-2.1.114/include/linux/tty.h Wed Jul 22 14:53:18 1998 +++ linux-2.1.114-smp/include/linux/tty.h Mon Aug 3 13:40:09 1998 @@ -16,7 +16,9 @@ consoles 16 and higher (since it returns a short) */ #ifdef __KERNEL__ +#include #include +#include #include #include #include @@ -32,8 +34,24 @@ * (Note: the *_driver.minor_start values 1, 64, 128, 192 are * hardcoded at present.) */ -#define NR_PTYS 256 +#define NR_PTYS 256 /* ptys/major */ #define NR_LDISCS 16 + +/* + * Unix98 PTY's can be defined as any multiple of NR_PTYS up to + * UNIX98_PTY_MAJOR_COUNT; this section defines what we need from the + * config options + */ +#ifdef CONFIG_UNIX98_PTYS +# define UNIX98_NR_MAJORS ((CONFIG_UNIX98_PTY_COUNT+NR_PTYS-1)/NR_PTYS) +# if UNIX98_NR_MAJORS <= 0 +# undef CONFIG_UNIX98_PTYS +# elif UNIX98_NR_MAJORS > UNIX98_PTY_MAJOR_COUNT +# error Too many Unix98 ptys defined +# undef UNIX98_NR_MAJORS +# define UNIX98_NR_MAJORS UNIX98_PTY_MAJOR_COUNT +# endif +#endif /* * These are set up by the setup-routine at boot-time: diff -ur stock/linux-2.1.114/include/linux/tty_driver.h linux-2.1.114-smp/include/linux/tty_driver.h --- stock/linux-2.1.114/include/linux/tty_driver.h Wed Jul 22 14:53:18 1998 +++ linux-2.1.114-smp/include/linux/tty_driver.h Mon Aug 3 13:40:09 1998 @@ -139,6 +139,7 @@ struct tty_struct **table; struct termios **termios; struct termios **termios_locked; + void *driver_state; /* only used for the PTY driver */ /* * Interface routines from the upper tty layer to the tty