Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1319708
  • 博文数量: 175
  • 博客积分: 2743
  • 博客等级: 少校
  • 技术积分: 4024
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-30 01:41
文章分类

全部博文(175)

文章存档

2015年(1)

2013年(53)

2012年(71)

2011年(50)

分类: LINUX

2012-12-20 17:36:50


只分析串口驱动,和console相关的部分暂时省去。

内核串口部分需要用到tty部分,tty包含了tty内核和tty线路规程。这些是在串口代码之前初始化。

1.tty_ldisc线路规程的初始化

只要是函数

driver/tty/tty_io.c    

console_init()

点击(此处)折叠或打开

  1. void __init console_init(void)
  2. {
  3.     initcall_t *call;
  4.   
  5.     /* Setup the default TTY line discipline. */
  6.     tty_ldisc_begin();
  7.   
  8.     /*
  9.      * set up the console device so that later boot sequences can
  10.      * inform about problems etc..
  11.      */
  12.     call = __con_initcall_start;
  13.     while (call < __con_initcall_end) {
  14.         (*call)();
  15.         call++;
  16.     }
  17. }

此处和tty相关的就是函数tty_ldisc_begin(),内核通过此函数来初始化tty线路规程的相关操作。

点击(此处)折叠或打开

  1. void tty_ldisc_begin(void)
  2. {
  3.     /* Setup the default TTY line discipline. */
  4.     (void) tty_register_ldisc(N_TTY, &tty_ldisc_N_TTY);
  5. }

tty_ldisc_begin函数原来是对tty_register_ldisc的封装,从名字就可以看出来这个是对tty线路规程的初始化操作(内核线路规程的简称是ldisc)

此处先看函数调用的两个参数,其中第一个参数N_TTY是一个宏,第二个参数是内核tty线路规程的操作方法集

点击(此处)折叠或打开

  1. #define N_TTY 0
  2. #define N_SLIP 1
  3. #define N_MOUSE 2



 

阅读(2670) | 评论(0) | 转发(3) |
给主人留下些什么吧!~~