gpt4 book ai didi

linux - 如何获得主要的:minor for a platform_driver

转载 作者:太空宇宙 更新时间:2023-11-04 12:58:30 25 4
gpt4 key购买 nike

我已经为 Linux 编写了一个 platform_driver。现在,我希望它成为/dev/myDrv 下的字符设备。

现在,驱动程序没有出现在/dev/myDrv 中,尽管我使用“insmod”成功加载了它。

我想,我必须使用“mknod/dev/myDrv c MAJOR MINOR”创建一个字符设备。正确吗?

好吧,问题是我不知道如何为我的驱动程序找到 major:minor。

在 'insmod myDrv' 之后有一些文件在下面生成:

  • /sys/bus/platform/devices/myDrv
  • /sys/devices/platform/myDrv
  • /sys/module/myDrv

他们是否以任何方式帮助我。

或者如何找到 platform_driver 的 major:minor?

最佳答案

在开发驱动程序时,您必须首先执行两个基本步骤:注册 <major,minor>范围,然后将设备文件操作链接到设备驱动程序函数。

以下是 init 的工作代码和 exit基本字符驱动程序的模块:

static int __init char_init(void)
{
int ret;
struct device *dev_ret;

printk(KERN_INFO "Char device registered");
if ((ret = alloc_chrdev_region(&first, 0, 3, "Abhinav")) < 0)
{
return ret;
}
if (IS_ERR(cl = class_create(THIS_MODULE, "char_dev")))
{
unregister_chrdev_region(first, 1);
return PTR_ERR(cl);
}
if (IS_ERR(dev_ret = device_create(cl, NULL, first, NULL, "mynull")))
{
class_destroy(cl);
unregister_chrdev_region(first, 1);
return PTR_ERR(dev_ret);
}

cdev_init(&c_dev, &file_ops);
if ((ret = cdev_add(&c_dev, first, 1)) < 0)
{
device_destroy(cl, first);
class_destroy(cl);
unregister_chrdev_region(first, 1);
return ret;
}
printk(KERN_INFO "<Major,Minor>: <%d, %d>\n", MAJOR(first), MINOR(first));
return 0;
}

static void __exit char_exit(void)
{
cdev_del(&c_dev);
device_destroy(cl, first);
class_destroy(cl);
unregister_chrdev_region(first, 3);
printk(KERN_INFO "Goodbye: Char device unregistered");
}

probedisconnect留给你。

在此代码中,调用 alloc_chrdev_region完成注册主要和次要号码。

还有 class_createdevice_create API 用于创 build 备文件 mynull .

执行后,/dev/mynull将被创建。

关于linux - 如何获得主要的:minor for a platform_driver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34924290/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com