tty driver(1)

tty 子系统由那些文件组成?

/*******************************************************************************/

all the head file about tty.

include/linux/tty*.h
 
tty_flip.h  
tty.h  
tty_ldisc.h
tty_driver.h

/*******************************************************************************/

tty_flip.h

tty_flip.h: just function statement not including the structure definition;
/*******************************************************************************/

tty_ldisc.h:

struct tty_ldisc {
    struct tty_ldisc_ops *ops;
    atomic_t users;
};

struct tty_ldisc_ops {
    int    magic;
    char    *name;
    int    num;
    int    flags;
    
    /*
     * The following routines are called from above.
     */
    int    (*open)(struct tty_struct *);
    ---
}

/*******************************************************************************/

tty_driver.h

structures

struct tty_driver;
struct tty_operations
/*****************/

variables:

struct list_head tty_drivers;

/*******************************************************************************/

tty.h

structures

struct tty_buffer;
struct tty_bufhead;

struct tty_file_private;

struct tty_port;
struct tty_port_operations;

struct tty_struct;

/*****************/

variables:

struct class *tty_class;
struct mutex tty_mutex;
spinlock_t tty_files_lock;

const struct file_operations tty_ldiscs_proc_fops;
struct tty_ldisc_ops tty_ldisc_N_TTY;

/*******************************************************************************/

all the c file about tty.


obj-y += tty_io.o n_tty.o tty_ioctl.o tty_ldisc.o \

         tty_buffer.o tty_port.o tty_mutex.o

tty_io.c

/*
 * 'tty_io.c' gives an orthogonal feeling to tty's, be they consoles
 * or rs-channels. It also implements echoing, cooked mode etc.
 *
 * Kill-line thanks to John T Kohl, who also corrected VMIN = VTIME = 0.
 *
 * Modified by Theodore Ts'o, 9/14/92, to dynamically allocate the
 * tty_struct and tty_queue structures.  Previously there was an array
 * of 256 tty_struct's which was statically allocated, and the
 * tty_queue structures were allocated at boot time.  Both are now
 * dynamically allocated only when the tty is open.
 *
 * Also restructured routines so that there is more of a separation
 * between the high-level tty routines (tty_io.c and tty_ioctl.c) and
 * the low-level tty routines (serial.c, pty.c, console.c).  This
 * makes for cleaner and more compact code.  -TYT, 9/17/92
 *
 * Modified by Fred N. van Kempen, 01/29/93, to add line disciplines
 * which can be dynamically activated and de-activated by the line
 * discipline handling modules (like SLIP).
 *
 * NOTE: pay no attention to the line discipline code (yet); its
 * interface is still subject to change in this version...
 * -- TYT, 1/31/92
 *
 * Added functionality to the OPOST tty handling.  No delays, but all
 * other bits should be there.
 *    -- Nick Holloway <alfie@dcs.warwick.ac.uk>, 27th May 1993.
 *
 * Rewrote canonical mode and added more termios flags.
 *     -- julian@uhunix.uhcc.hawaii.edu (J. Cowley), 13Jan94
 *
 * Reorganized FASYNC support so mouse code can share it.
 *    -- ctm@ardi.com, 9Sep95
 *
 * New TIOCLINUX variants added.
 *    -- mj@k332.feld.cvut.cz, 19-Nov-95
 *
 * Restrict vt switching via ioctl()
 *      -- grif@cs.ucr.edu, 5-Dec-95
 *
 * Move console and virtual terminal code to more appropriate files,
 * implement CONFIG_VT and generalize console device interface.
 *    -- Marko Kohtala <Marko.Kohtala@hut.fi>, March 97
 *
 * Rewrote tty_init_dev and tty_release_dev to eliminate races.
 *    -- Bill Hawes <whawes@star.net>, June 97
 *
 * Added devfs support.
 *      -- C. Scott Ananian <cananian@alumni.princeton.edu>, 13-Jan-1998
 *
 * Added support for a Unix98-style ptmx device.
 *      -- C. Scott Ananian <cananian@alumni.princeton.edu>, 14-Jan-1998
 *
 * Reduced memory usage for older ARM systems
 *      -- Russell King <rmk@arm.linux.org.uk>
 *
 * Move do_SAK() into process context.  Less stack use in devfs functions.
 * alloc_tty_struct() always uses kmalloc()
 *             -- Andrew Morton <andrewm@uow.edu.eu> 17Mar01
 */

n_tty.c

/*
 * n_tty.c --- implements the N_TTY line discipline.
 *
 * This code used to be in tty_io.c, but things are getting hairy
 * enough that it made sense to split things off.  (The N_TTY
 * processing has changed so much that it's hardly recognizable,
 * anyway...)
 *
 * Note that the open routine for N_TTY is guaranteed never to return
 * an error.  This is because Linux will fall back to setting a line
 * to N_TTY if it can not switch to any other line discipline.
 *
 * Written by Theodore Ts'o, Copyright 1994.
 *
 * This file also contains code originally written by Linus Torvalds,
 * Copyright 1991, 1992, 1993, and by Julian Cowley, Copyright 1994.
 *
 * This file may be redistributed under the terms of the GNU General Public
 * License.
 *
 * Reduced memory usage for older ARM systems  - Russell King.
 *
 * 2000/01/20   Fixed SMP locking on put_tty_queue using bits of
 *        the patch by Andrew J. Kroll <ag784@freenet.buffalo.edu>
 *        who actually finally proved there really was a race.
 *
 * 2002/03/18   Implemented n_tty_wakeup to send SIGIO POLL_OUTs to
 *        waiting writing processes-Sapan Bhatia <sapan@corewars.org>.
 *        Also fixed a bug in BLOCKING mode where n_tty_write returns
 *        EAGAIN
 */

tty_ioctl.c


/*
 *  Copyright (C) 1991, 1992, 1993, 1994  Linus Torvalds
 *
 * Modified by Fred N. van Kempen, 01/29/93, to add line disciplines
 * which can be dynamically activated and de-activated by the line
 * discipline handling modules (like SLIP).
 */


tty_ldisc.c

line dis

tty_buf.c

/*
 * Tty buffer allocation management
 */

tty_port.c

 * Tty port functions

tty_mutex.c

/*
 * The 'big tty mutex'
 *
 * This mutex is taken and released by tty_lock() and tty_unlock(),
 * replacing the older big kernel lock.
 * It can no longer be taken recursively, and does not get
 * released implicitly while sleeping.
 *
 * Don't use in new code.
 */


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值