加载杂项驱动模块后,在(/dev/)目录下没有生成杂项的设备文件。

小乖乖_学技术 2016-07-26 11:42:51
现象描述:
加载驱动模块(insmod drv_miscdev.ko);查看设备文件(ls /dev/ | grep first_miscdev),没有显示任何信息,即加载杂项驱动模块后,在目录(/dev/)下没有生成设备文件;查看记录(cat /proc/devices | grep first_miscdev),没有显示任何信息。

驱动程序如下:
#include <linux/module.h>
#include <linux/init.h>
#include <linux/fs.h>
#include <linux/miscdevice.h>

#define LEDS_MAJOR MISC_DYNAMIC_MINOR //255
#define DEVICE_NAME "first_miscdev"

static int first_miscdev_open(struct inode * pinode,struct file * pfile)
{
printk(KERN_EMERG "Linux miscdevice:%s is call\r\n",__FUNCTION__);
return 0;
}

static int first_miscdev_ioctl(struct inode * inode,struct file * file,unsigned int cmd,unsigned long arg)
{
return 0;
}

ssize_t first_miscdev_read(struct file * filp,char __user *buf,size_t count,loff_t * offset)
{
printk(KERN_EMERG "Linux miscdevice:%s is call\r\n",__FUNCTION__); //可能是__FUNCTION__,即双下划线
return count;
}
ssize_t first_miscdev_write(struct file * filp,const char __user *buf,size_t count,loff_t * offset)
{
printk(KERN_EMERG "Linux miscdevice:%s is call\r\n",__FUNCTION__);
return count;
}
loff_t first_miscdev_llseek(struct file * file,loff_t loff,int origin)
{
printk(KERN_EMERG "Linux miscdevice:%s is call\r\n",__FUNCTION__);
printk(KERN_EMERG "loff:%ld;origin:%d\r\n",(long)loff,origin);
return loff;
}

int first_miscdev_release(struct inode * inode,struct file * file)
{
printk(KERN_EMERG "Linux miscdevice:%s is call\r\n",__FUNCTION__);
return 0;
}

static struct file_operations dev_fops=
{
.owner=THIS_MODULE,
.ioctl=first_miscdev_ioctl,
.open=first_miscdev_open,
.read=first_miscdev_read,
.write=first_miscdev_write,
.release=first_miscdev_release,
.llseek=first_miscdev_llseek,
};

static struct miscdevice misc=
{
.minor=LEDS_MAJOR,
.name=DEVICE_NAME,
.fops=&dev_fops,
};

static int __init first_miscdev_init(void)
{
int ret;
ret=misc_register(&misc);
printk(KERN_EMERG "major:%d\r\n",ret);
if(ret<0)
printk(KERN_EMERG DEVICE_NAME "\t err\r\n");
printk(KERN_EMERG DEVICE_NAME "\t initialized\n");
return ret;
}

static void __exit first_miscdev_exit(void)
{
misc_deregister(&misc);

printk(KERN_EMERG "Goodbye,cruel world!,priority=0\n");
}

module_init(first_miscdev_init);
module_exit(first_miscdev_exit);

MODULE_LICENSE("GPL");
MODULE_AUTHOR("XYD");
MODULE_DESCRIPTION("This the sample drv_test");
...全文
1153 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
JT同学 2019-05-03
  • 打赏
  • 举报
回复
应该是内核没配置好或者文件系统的问题
落叶锋 2019-04-17
  • 打赏
  • 举报
回复
# 文件系统支持热插拔
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s 这个是-不是减号

21,595

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧