字符驱动之按键(一:无脑轮询法)
生活随笔
收集整理的這篇文章主要介紹了
字符驱动之按键(一:无脑轮询法)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、添加頭文件二、構造fileoperation結構體static struct fileoperations second_drv_fops = {.owner = THIS_MODULE;.open = second_drv_open;.write = ;second_drv_write}三、填充file_operations中的成員函數
static int second_drv_open(struct inode *inode,struct file *file)
{return 0;
}ssize_t second_drv_read(struct file *file,char __user *buf,size_t size,loff_t *ppos)
{return 0;
}還有初始化函數static int second_drv_init(void)
{major = register_chrdev(0,"second_drv",&second_drv_fops);return 0;
}static int second_drv_exit(void)
{unregister_chrdev(major,"second_drv");return 0;
}module_init(second_drv_init);
module_exit(second_drv_exit);要使用udev(mdev機制)根據信息來創造設備節點先創建一個class,再創建一個設備。
定義兩個結構體:
static struct class *seconddrv_class;
static struct class_device *seconddrv_class_dev;static int second_drv_init(void)
{
//創建一個類,在類下面創建一個設備。
//mdev是udev的簡化版本major = register_chrdev(0,"second_drv",&second_drv_fops);seconddrv_class = class_create(THIS_MODULE,"seconddrv");seconddrv_class_dev = class_device_create(seconddrv_class,NULL,MKDEV(major,0),NULL,"buttons");return 0;
}static void second_drv_exit(void)
{unregister_chrdev(major,"first_drv");class_device_unregister(seconddrv_class_dev);class_destroy(seconddrv_class);
}
?
轉載于:https://www.cnblogs.com/stm32f4/p/8335104.html
總結
以上是生活随笔為你收集整理的字符驱动之按键(一:无脑轮询法)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 国外centos服务器配置epel源
- 下一篇: linux的/etc/hosts的作用