博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux设备驱动程序--类class的实现
阅读量:6214 次
发布时间:2019-06-21

本文共 1603 字,大约阅读时间需要 5 分钟。

#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
//定义设备名称为test-dev#define DEV_NAME "test-dev"//定义并初始化一个类struct class cla = { .name = "test-cla", //将类的名字设置为test-cla .owner = THIS_MODULE, //该类的拥有者为这个模块};int test_open(struct inode *node, struct file *filp){ printk("test open\n"); return 0;}int test_close(struct inode *node, struct file *filp){ printk("test close\n"); return 0;}//填充并初始化file_operations结构体struct file_operations fops = { .owner = THIS_MODULE, .open = test_open, .release = test_close,};//定义设备struct device dev = { .init_name = DEV_NAME, .class = &cla, //设备归类cla; .release = test_release,};//定义主设备号和次设备号int major = 0;int minor = 0;int test_init(void){ int ret; printk("test init\n"); //将类进行注册 ret = class_register(&cla); //如果返回值不为0,返回错误值 if(IS_ERR_VALUE(ret)) { return ret; } //注册一个字符设备驱动 ret = register_chrdev(major, DEV_NAME, &fops); //如果注册不成功返回错误值并撤销类的实现 if(IS_ERR_VALUE(ret)) { class_unregister(&cla); return ret; } major = ret; //printk("major = %d\n", major); //申请主设备号与次设备号 dev.devt = MKDEV(major, minor); //将设备进行注册 ret = device_register(&dev); //如果设备注册不成功,撤销类设备注册并解除字符设备驱动的注册 if(IS_ERR_VALUE(ret)) { class_unregister(&cla); unregister_chrdev(major, DEV_NAME); return ret; } return 0;}void test_exit(void){ printk("test exit\n"); //解除字符设备的注册 unregister_chrdev(major, DEV_NAME); //解决类设备注册 device_unregister(&dev); class_unregister(&cla);}module_init(test_init);module_exit(test_exit);MODULE_LICENSE("GPL");MODULE_AUTHOR("yangyx");MODULE_VERSION("1.1");

转载地址:http://ewvja.baihongyu.com/

你可能感兴趣的文章
windows查看端口占用
查看>>
java性能监控
查看>>
老李分享:java线程生命周期 2
查看>>
一个强大专业的响应式jQuery幻灯效果插件:Royal Slider
查看>>
Formal Languages and Compilers-LL(1),FIRST and FOLLOW
查看>>
ThinkPHP源码学习---is_ssl() 函数 判断是否SSL协议
查看>>
PyOdps在交互式环境下的使用,让探索ODPS数据更容易些
查看>>
聊聊netflix的EurekaHttpClient
查看>>
聊聊flink Table的select操作
查看>>
单臂路由
查看>>
作业 第一章
查看>>
第一次作业
查看>>
我的友情链接
查看>>
康盛系列产品工程师php
查看>>
Excel利用超链接打开指定文件夹
查看>>
Elasticsearch走上专案专有化 AWS:将另开辟开放版
查看>>
J盘无法访问RAW,里面的数据怎样找到
查看>>
硬盘的读写原理
查看>>
photoshop技术
查看>>
python编写员工信息表
查看>>