linux2.6.28-tty设备驱动学习(一)
来源:互联网 发布:情义我心知粤语版 编辑:程序博客网 时间:2024/06/06 18:25
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/cdev.h>
#include <linux/tty.h> /*注意:tty.h和tty_driver.h顺序不能颠倒,必须是tty.h在tty_driver.h前面。一旦顺序颠倒,就会提示有错误。*/
#include <linux/tty_driver.h>
#include <linux/fs.h>
#include <linux/ioport.h>
#include <linux/serial_reg.h>
MODULE_LICENSE("GPL");
MODULE_AUTHOR("lan");
#define TTY_LAN_MINORS_NUM 5
#define TTY_LAN_MAJOR 202
static struct tty_driver *tty_lan_driver;
static int tty_lan_open(struct tty_struct *tty, struct file *filp);
static struct tty_operations tty_lan_ops = {
.open = tty_lan_open,
};
static int __init tty_lan_init(void)
{
int i;
int retval;
tty_lan_driver = alloc_tty_driver(TTY_LAN_MINORS_NUM);
if(!tty_lan_driver)
return -ENOMEM;
tty_lan_driver->owner = THIS_MODULE;
tty_lan_driver->driver_name = "tty_lan";
tty_lan_driver->name = "ttty_lan";
tty_lan_driver->major = TTY_LAN_MAJOR,
tty_lan_driver->minor_start = 0;
tty_lan_driver->type = TTY_DRIVER_TYPE_SERIAL;
tty_lan_driver->subtype = SERIAL_TYPE_NORMAL;
tty_lan_driver->flags = TTY_DRIVER_REAL_RAW;
tty_lan_driver->init_termios = tty_std_termios;
tty_lan_driver->init_termios.c_cflag = B9600 | CS8 | CREAD | HUPCL | CLOCAL;
retval = tty_register_driver(tty_lan_driver);
if(retval){
printk(KERN_ERR"Failed to register tty_lan_driver!\n");
put_tty_driver(tty_lan_driver);
return retval;
}
for(i = 0; i < TTY_LAN_MINORS_NUM; i++)
tty_register_device(tty_lan_driver, i, NULL);
return 0;
}
static int tty_lan_open(struct tty_struct *tty, struct file *filp)
{
return 0;
}
static void __exit tty_lan_exit(void)
{
int i;
for(i = 0; i < TTY_LAN_MINORS_NUM; i++)
tty_unregister_device(tty_lan_driver, i);
tty_unregister_driver(tty_lan_driver);
}
module_init(tty_lan_init);
module_exit(tty_lan_exit);
UNAME = $(shell uname -r)
LINUX_PATH = /lib/modules/$(UNAME)/build
obj-m = tty_lan.o
all:
$(MAKE) -C $(LINUX_PATH) M=$(PWD) modules
clean:
$(MAKE) -C $(LINUX_PATH) M=$(PWD) clean
上一篇:shell十三问之exec 跟 source 差在哪? 解析
下一篇:linux2.6.28-tty设备驱动学习(二)
- Linux 2.6.24内核注释
- Linux内核模块导出后无法调用...
- Linux/Unix inode、vnode、den...
- Linux2.6.32.2移植到Mini2440...
- linux2.6.37.4内核在XC2440开...
- shell中字符串操作
- shell中的特殊字符
- stagefright与opencore对比
- linux守护进程的几个关键地方...
- Android常用的一些make命令...
- 初学UNIX环境高级编程的,关于...
- chinaunix博客什么时候可以设...
- 一个访问量较大网站的服务器。...
- 收音机驱动与v4l2架构的关系,...
- 如何将linux驱动改为裸机驱动(...
- linux2.6.28-tty设备驱动学习(一)
- 【转】linux2.6.28-tty设备驱动学习
- linux2.6.28-tty设备驱动学习(二)
- linux2.6.28-tty设备驱动学习(二) tty设备驱动详解
- tty设备驱动程序 基于:linux2.6.28
- LINUX设备驱动之tty及console驱动(一)
- ·LINUX设备驱动之tty及console驱动(一)
- TTY设备驱动结构
- Linux驱动之TTY(一):概念
- tty驱动调试<一>
- Linux终端tty设备驱动
- Linux终端tty设备驱动
- Linux终端tty设备驱动
- Linux终端tty设备驱动
- Linux终端tty设备驱动
- tty设备驱动注册简述
- LDD3学习笔记(21):tty驱动
- linux2.6字符驱动(一)
- 回调函数解析
- 记住这些话 他会帮你变得更完美
- 读《C缺陷与陷阱》之-函数声明理解
- 2.6内核字符设备驱动程序解析(续)
- shell十三问之exec 跟 source 差在哪? 解析
- linux2.6.28-tty设备驱动学习(一)
- linux2.6.28-tty设备驱动学习(二)
- Linux2.6 DM9000驱动模编译为模块
- 字符设备的信号量,阻塞和非阻塞,poll实现
- 进程间通信--信号量+共享内存
- ps -aux 详解
- 从PC总线到ARM的内部总线
- 控制函数assert.h, setjmp.h和signal.h
- ADS分散加载文件及其应用