linux设备驱动模板
来源:互联网 发布:淘宝双11海报素材 编辑:程序博客网 时间:2024/05/21 09:47
//linux 字符设备驱动的组成模板
struct xxx_dev_t{
struct cdev cdev;
…
};
/*设备驱动模块加载函数*/static int __init xxx_init(void){...cdev_init(&xxx_dev.cdev, &xxx_fpos); /*初始化cdev*/xxx_dev.cdev.owner = THIS_MODULE;/*获取字符设备号*/if(xxx_major){ register_chrdev_region(xxx_dev_no,1,DEV_NAME);} else { alloc_chrdev_region(&xxx_dev_no,0,1,DEV_NAME);}ret = cdev_add(&xxx_dev.cdev, xxx_dev_no, 1); /*注册设备*/...} /*设备驱动模块卸载模块*/ static void __exit xxx_exit(void) { unregister_chrdev_region(xxx_dev_no, 1); /*释放占用的设备号*/ cdev_del(&xxx_dev.cdev); /*注销设备*/ ... } 3. file_operations定义了字符设备驱动提供给虚拟文件系统的接口函数,常见的字符设备驱动的这三个函数的形式如下: //读设备 ssize_t xxx_read(struct file *filp ,char __ user *buf, size_t count, loff_t *f_ops) { ... copy_to_user(buf, ..., ...); ... }
//写设备
ssize_t xxx_write(struct file *filp , const char __user *buf , size_t count, loff_t *f_ops)
{
…
copy_from_user(…, buf, …);
…
}
//ioctl 函数
long xxx_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
{
…
switch(cmd){
case xxx_CMD1: ...; break;...default ://不支持的命令 return -ENOTTY;}return 0;
}
阅读全文
0 0
- linux设备驱动模板
- Linux设备驱动模板:poll
- linux平台设备驱动模板
- linux平台设备驱动模板
- Linux 字符设备驱动基本书写模板
- linux字符设备驱动一般模板
- linux字符设备驱动模板(新标准)
- misc设备驱动模板-linux
- Linux驱动开发--Linux字符设备驱动模板
- linux驱动学习之字符设备驱动模板
- 【Linux内核驱动】字符设备驱动框架模板
- 字符设备驱动模板
- 字符设备驱动模板
- 字符设备驱动模板
- 写Linux字符设备驱动模板--测试通过
- linux字符设备驱动开发模板及Makefile
- linux字符设备驱动开发模板及Makefile
- vxWorks字符设备驱动模板
- leetcode Kth Largest Element in an Array
- 设计模式-行为-命令
- POJ 3281 Dining 笔记
- const int * 与 int * const等的区别
- Java程序员从笨鸟到菜鸟之(三)类与对象
- linux设备驱动模板
- Hibernate各种主键生成策略与配置详解
- JZOJ 5400. 【NOIP2017提高A组模拟10.7】Repulsed
- [bzoj-4557][JLoi2016]侦察守卫 题解
- Codeforces Beta Round #4 (Div. 2 Only) C. Registration system(hash)
- 动态规划-376. Wiggle Subsequence
- 2017-10-07开通,用于记录学习过程中的积累
- 设计模式-行为-解释器
- HDU 1024 DP