当前位置:嗨网首页>书籍在线阅读

05-模块加载与卸载函数

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

14.3.1 模块加载与卸载函数

tty驱动的模块加载函数中通常需要分配、初始化tty_driver结构体并申请必要的硬件资源,如代码清单14.4。tty驱动的模块卸载函数完成与模块加载函数相反的工作。

代码清单14.4 终端设备驱动模块加载函数范例

1 / tty驱动模块加载函数 /

2 static int __init xxx_init(void)

3 {

4 ...

5 / 分配tty_driver结构体 /

6 xxx_tty_driver = alloc_tty_driver(XXX_PORTS);

7 / 初始化tty_driver结构体 /

8 xxx_tty_driver->owner = THIS_MODULE;

9 xxx_tty_driver->name = "ttyS";

10 xxx_tty_driver->major = TTY_MAJOR;

11 xxx_tty_driver->minor_start = 64;

12 xxx_tty_driver->type = TTY_DRIVER_TYPE_SERIAL;

13 xxx_tty_driver->subtype = SERIAL_TYPE_NORMAL;

14 xxx_tty_driver->init_termios = tty_std_termios;

15 xxx_tty_driver->init_termios.c_cflag = B9600 | CS8 | CREAD | HUPCL | CLOCAL;

16 xxx_tty_driver->flags = TTY_DRIVER_REAL_RAW;

17 tty_set_operations(xxx_tty_driver, &xxx_ops);

18

19 ret = tty_register_driver(xxx_tty_driver);

20 if (ret) {

21 printk(KERN_ERR "Couldn't register xxx serial driver\n");

22 put_tty_driver(xxx_tty_driver);

23 return ret;

24 }

25

26 ...

27 ret = request_irq(...); / 硬件资源申请 /

28 ...

29 }