在Linux 2.6內核中,devfs被認為是過時的方法,并最終被拋棄,udev取代了它。Devfs的一個很重要的特點就是可以動態創建設備結點。那我們現在如何通過udev和sys文件系統動態創建設備結點呢?
下面通過一個實例,說明udev、sys動態創建設備結點的方法。注意代碼中紅色的部分是為了實現動態創建設備結點添加的。
#include
#include
#include
#include
#include
#include
#include
MODULE_LICENSE ("GPL");
int hello_major = 252;
int hello_minor = 0;
int number_of_devices = 1;
char data[50]="foobar not equal to barfoo";
struct cdev cdev;
dev_t dev = 0;
static int hello_open (struct inode *inode, struct file *file)
{
printk (KERN_INFO "Hey! device opened ");
return 0;
}
static int hello_release (struct inode *inode, struct file *file)
{
printk (KERN_INFO "Hmmm... device closed ");
return 0;
}
ssize_t hello_read (struct file *filp, char *buff, size_t count, loff_t *offp)
{
ssize_t result = 0;
if (copy_to_user (buff, data, sizeof(data)-1))
result = -EFAULT;
else
printk (KERN_INFO "wrote %d bytes ", count);
return result;
}
ssize_t hello_write (struct file *filp, const char?*buf, size_t count, loff_t *f_pos)
{
ssize_t ret = 0;
printk (KERN_INFO "Writing %d bytes ", count);
if (count>127) return -ENOMEM;
if (count<0) return -EINVAL;
if (copy_from_user (data, buf, count)) {
ret = -EFAULT;
}
else {
data[127]=' 主站蜘蛛池模板: 丁香婷婷色| 91色在线播放| 欧美激情伊人 | 欧美宗合网 | 黄色小视频免费 | 国内露脸夫妇交换精品 | 国产一区美女 | 国产成人永久在线播放 | 韩国视频在线播放 | 婷婷六月久久综合丁香一二 | 天天综合天天综合 | 亚洲男人天堂2020 | 天天爽夜夜爽人人爽一区二区 | 国产午夜精品理论片免费观看 | 黄色免费大全 | 奇米色吧| 亚洲free | 欧美性猛 | 狠狠操狠狠插 | 欧美在线专区 | 香港三级理论在线影院 | 侵犯希崎中文字幕在线 | 激情综合视频 | 久久精彩免费视频 | 国产视频综合 | 亚洲婷婷综合色高清在线 | 99久久国产免费 - 99久久国产免费 | 免费在线黄网 | 四虎免费影院4hu永久免费 | 六月婷婷色 | 欧美性黑人极品1819hd | 日本特级黄录像片 | 午夜免费啪啪 | 色黄在线观看 | 婷婷丁香色综合狠狠色 | 夜色福利久久久久久777777 | 天天骑夜夜操 | 欧美亚洲h在线一区二区 | 精品成人在线观看 | 国产精品伦理一区二区三区 | 2021天天躁狠狠燥 |