hyc@symas.com
26df6d1340
tty: Add EXTPROC support for LINEMODE
...
This patch is against the 2.6.34 source.
Paraphrased from the 1989 BSD patch by David Borman @ cray.com:
These are the changes needed for the kernel to support
LINEMODE in the server.
There is a new bit in the termios local flag word, EXTPROC.
When this bit is set, several aspects of the terminal driver
are disabled. Input line editing, character echo, and mapping
of signals are all disabled. This allows the telnetd to turn
off these functions when in linemode, but still keep track of
what state the user wants the terminal to be in.
New ioctl:
TIOCSIG Generate a signal to processes in the
current process group of the pty.
There is a new mode for packet driver, the TIOCPKT_IOCTL bit.
When packet mode is turned on in the pty, and the EXTPROC bit
is set, then whenever the state of the pty is changed, the
next read on the master side of the pty will have the TIOCPKT_IOCTL
bit set. This allows the process on the server side of the pty
to know when the state of the terminal has changed; it can then
issue the appropriate ioctl to retrieve the new state.
Since the original BSD patches accompanied the source code for telnet
I've left that reference here, but obviously the feature is useful for
any remote terminal protocol, including ssh.
The corresponding feature has existed in the BSD tty driver since 1989.
For historical reference, a good copy of the relevant files can be found
here:
http://anonsvn.mit.edu/viewvc/krb5/trunk/src/appl/telnet/?pathrev=17741
Signed-off-by: Howard Chu <hyc@symas.com>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2010-08-10 13:47:39 -07:00
..
9p
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
2010-08-10 11:26:52 -07:00
adfs
check ATTR_SIZE contraints in inode_change_ok
2010-08-09 16:47:39 -04:00
affs
AFFS: wait for sb synchronization when needed
2010-08-09 16:48:51 -04:00
afs
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
2010-08-10 11:26:52 -07:00
autofs
fs/: do not fallback to default_llseek() when readdir() uses BKL
2010-05-27 09:12:56 -07:00
autofs4
fs/autofs4: use memdup_user
2010-05-27 09:12:41 -07:00
befs
fix typos concerning "initiali[zs]e"
2010-06-16 18:05:05 +02:00
bfs
BFS: clean up the superblock usage
2010-08-09 16:48:53 -04:00
btrfs
btrfs: remove junk sb_dirt change
2010-08-09 16:48:55 -04:00
cachefiles
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
2010-08-10 11:26:52 -07:00
ceph
ceph: use complete_all and wake_up_all
2010-07-27 13:11:17 -07:00
cifs
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
2010-08-10 11:26:52 -07:00
coda
convert remaining ->clear_inode() to ->evict_inode()
2010-08-09 16:48:37 -04:00
configfs
fix setattr error handling in sysfs, configfs
2010-06-04 17:16:29 -04:00
cramfs
simplify get_cramfs_inode()
2010-08-09 16:47:51 -04:00
debugfs
Add x64 support to debugfs
2010-05-19 22:41:57 -04:00
devpts
Simplify devpts_get_sb() failure exits
2010-05-21 18:31:12 -04:00
dlm
fs/dlm: Drop unnecessary null test
2010-08-05 14:23:45 -05:00
ecryptfs
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
2010-08-10 11:26:52 -07:00
efs
exofs
convert exofs to ->evict_inode()
2010-08-09 16:48:24 -04:00
exportfs
ext2
mbcache: Remove unused features
2010-08-09 16:48:45 -04:00
ext3
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
2010-08-10 11:26:52 -07:00
ext4
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
2010-08-10 11:26:52 -07:00
fat
covert fatfs to ->evict_inode()
2010-08-09 16:48:01 -04:00
freevxfs
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
2010-08-10 11:26:52 -07:00
fscache
fscache: fix build on !CONFIG_SYSCTL
2010-07-24 11:10:09 +02:00
fuse
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
2010-08-10 11:26:52 -07:00
gfs2
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
2010-08-10 11:26:52 -07:00
hfs
convert remaining ->clear_inode() to ->evict_inode()
2010-08-09 16:48:37 -04:00
hfsplus
convert remaining ->clear_inode() to ->evict_inode()
2010-08-09 16:48:37 -04:00
hostfs
try to get rid of races in hostfs open()
2010-08-09 16:48:15 -04:00
hpfs
switch hpfs to ->evict_inode()
2010-08-09 16:48:17 -04:00
hppfs
switch hppfs to ->evict_inode()
2010-08-09 16:48:16 -04:00
hugetlbfs
new helper: end_writeback()
2010-08-09 16:47:49 -04:00
isofs
fs/: do not fallback to default_llseek() when readdir() uses BKL
2010-05-27 09:12:56 -07:00
jbd
ext3: Fix set but unused variables
2010-07-21 16:01:47 +02:00
jbd2
Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4
2010-08-07 13:03:53 -07:00
jffs2
Merge git://git.infradead.org/mtd-2.6
2010-08-10 11:49:21 -07:00
jfs
switch jfs to ->evict_inode()
2010-08-09 16:48:17 -04:00
lockd
logfs
Make ->drop_inode() just return whether inode needs to be dropped
2010-08-09 16:48:35 -04:00
minix
switch minix to ->evict_inode(), fix write_inode/delete_inode race
2010-08-09 16:47:53 -04:00
ncpfs
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
2010-08-10 11:26:52 -07:00
nfs
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
2010-08-10 11:26:52 -07:00
nfs_common
nfsd
Merge branch 'for-linus' of git://git.infradead.org/users/eparis/notify
2010-08-10 11:39:13 -07:00
nilfs2
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
2010-08-10 11:26:52 -07:00
nls
notify
Merge branch 'for-linus' of git://git.infradead.org/users/eparis/notify
2010-08-10 11:39:13 -07:00
ntfs
convert remaining ->clear_inode() to ->evict_inode()
2010-08-09 16:48:37 -04:00
ocfs2
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
2010-08-10 11:26:52 -07:00
omfs
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/bcopeland/omfs
2010-08-10 11:47:36 -07:00
openpromfs
partitions
Merge branch 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2010-08-06 09:23:07 -07:00
proc
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
2010-08-10 11:26:52 -07:00
qnx4
get rid of cont_write_begin_newtrunc
2010-08-09 16:47:31 -04:00
quota
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
2010-08-10 11:26:52 -07:00
ramfs
check ATTR_SIZE contraints in inode_change_ok
2010-08-09 16:47:39 -04:00
reiserfs
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
2010-08-10 11:26:52 -07:00
romfs
smbfs
switch smbfs to evict_inode()
2010-08-09 16:48:00 -04:00
squashfs
squashfs: fix name reading in squashfs_xattr_get
2010-05-23 08:27:42 +01:00
sysfs
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
2010-08-10 11:26:52 -07:00
sysv
sysv: do not mark superblock dirty on remount
2010-08-09 16:48:58 -04:00
ubifs
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
2010-08-10 11:26:52 -07:00
udf
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
2010-08-10 11:26:52 -07:00
ufs
switch ufs to ->evict_inode()
2010-08-09 16:48:02 -04:00
xfs
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
2010-08-10 11:26:52 -07:00
aio.c
aio: fix wrong subsystem comments
2010-08-05 13:21:23 -07:00
anon_inodes.c
Revert "anon_inode: set S_IFREG on the anon_inode"
2010-05-27 22:03:05 -04:00
attr.c
check ATTR_SIZE contraints in inode_change_ok
2010-08-09 16:47:39 -04:00
bad_inode.c
drop unused dentry argument to ->fsync
2010-05-27 22:05:02 -04:00
binfmt_aout.c
binfmt_elf.c
binfmt_elf_fdpic.c
binfmt_elf_fdpic: Fix clear_user() error handling
2010-06-01 08:11:06 -07:00
binfmt_em86.c
binfmt_flat.c
flat: tweak default stack alignment
2010-06-29 15:29:31 -07:00
binfmt_misc.c
convert remaining ->clear_inode() to ->evict_inode()
2010-08-09 16:48:37 -04:00
binfmt_script.c
binfmt_som.c
bio-integrity.c
bio.c
block_dev.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
2010-08-10 11:26:52 -07:00
buffer.c
get rid of block_write_begin_newtrunc
2010-08-09 16:47:33 -04:00
char_dev.c
Fix init ordering of /dev/console vs callers of modprobe
2010-08-06 09:17:02 -07:00
compat.c
Merge branch 'for-linus' of git://git.infradead.org/users/eparis/notify
2010-08-10 11:39:13 -07:00
compat_binfmt_elf.c
compat_ioctl.c
tty: Add EXTPROC support for LINEMODE
2010-08-10 13:47:39 -07:00
dcache.c
no need for list_for_each_entry_safe()/resetting with superblock list
2010-08-09 16:49:02 -04:00
dcookies.c
direct-io.c
sort out blockdev_direct_IO variants
2010-08-09 16:47:29 -04:00
drop_caches.c
simplify checks for I_CLEAR/I_FREEING
2010-08-09 16:47:44 -04:00
eventfd.c
eventpoll.c
sched, wait: Use wrapper functions
2010-05-11 17:43:58 +02:00
exec.c
Merge branch 'for-linus' of git://git.infradead.org/users/eparis/notify
2010-08-10 11:39:13 -07:00
fcntl.c
fs/fcntl.c:kill_fasync_rcu() fa_lock must be IRQ-safe
2010-06-29 15:29:32 -07:00
fifo.c
file.c
fs: remove all rcu head initializations, except on_stack initializations
2010-06-14 16:37:26 -07:00
file_table.c
vfs/fsnotify: fsnotify_close can delay the final work in fput
2010-07-28 10:18:51 -04:00
filesystems.c
fs-writeback.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
2010-08-10 11:26:52 -07:00
fs_struct.c
generic_acl.c
fs: xattr_handler table should be const
2010-05-21 18:31:18 -04:00
inode.c
Merge branch 'for-linus' of git://git.infradead.org/users/eparis/notify
2010-08-10 11:39:13 -07:00
internal.h
Bury __put_super_and_need_restart()
2010-05-21 18:31:16 -04:00
ioctl.c
Introduce freeze_super and thaw_super for the fsfreeze ioctl
2010-05-21 18:31:18 -04:00
ioprio.c
Kconfig
fs/Kconfig: Fix typo Userpace -> Userspace
2010-07-20 17:30:22 +02:00
Kconfig.binfmt
libfs.c
check ATTR_SIZE contraints in inode_change_ok
2010-08-09 16:47:39 -04:00
locks.c
Makefile
Take statfs variants to fs/statfs.c
2010-05-21 18:31:17 -04:00
mbcache.c
mbcache: fix shrinker function return value
2010-08-09 16:48:47 -04:00
mpage.c
namei.c
Merge branch 'for-linus' of git://git.infradead.org/users/eparis/notify
2010-08-10 11:39:13 -07:00
namespace.c
Merge branch 'for-linus' of git://git.infradead.org/users/eparis/notify
2010-08-10 11:39:13 -07:00
nfsctl.c
no-block.c
open.c
Merge branch 'for-linus' of git://git.infradead.org/users/eparis/notify
2010-08-10 11:39:13 -07:00
pipe.c
pipe: fix check in "set size" fcntl
2010-06-10 19:08:34 +02:00
pnode.c
pnode.h
posix_acl.c
read_write.c
fsnotify: pass a file instead of an inode to open, read, and write
2010-07-28 09:58:32 -04:00
read_write.h
readdir.c
vfs: fix warning: 'dirent' is used uninitialized in this function
2010-08-09 20:45:05 -07:00
select.c
seq_file.c
signalfd.c
splice.c
splice: check f_mode for seekable file
2010-06-30 08:12:37 +02:00
stack.c
stat.c
statfs.c
add f_flags to struct statfs(64)
2010-08-09 16:48:44 -04:00
super.c
no need for list_for_each_entry_safe()/resetting with superblock list
2010-08-09 16:49:02 -04:00
sync.c
get rid of file_fsync()
2010-08-09 16:47:43 -04:00
timerfd.c
fs/timerfd.c: make use of wait_event_interruptible_locked_irq()
2010-05-20 13:21:42 -07:00
utimes.c
xattr.c
fs: xattr_handler table should be const
2010-05-21 18:31:18 -04:00
xattr_acl.c