打印
[嵌入式linux]

关于LINUX内核2.6.28驱动编写的问题

[复制链接]
2243|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
fe_arm|  楼主 | 2009-7-15 14:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

我写的驱动模块, 用 device_create来建立设备文件,但ls /dev找不到相对应的myalloc设备,请大家帮忙看一下

int __init memory_init(void)

{

    int res;



    int devno = MKDEV(MEM_MAJOR, 0);





    mem_spvm = (char *)vmalloc(MEM_MALLOC_SIZE);

    if (mem_spvm == NULL)

        printk(KERN_INFO"vmalloc failed! ");

    else

        printk(KERN_INFO"vmalloc successfully! addr=0x%x ", (unsigned int)mem_spvm);





    mem_cdev = cdev_alloc();

    if (mem_cdev == NULL)

    {

        printk(KERN_INFO"cdev_alloc failed! ");

        return 0;

    }



    cdev_init(mem_cdev, &mem_fops);

    mem_cdev->owner = THIS_MODULE;

    mem_cdev->ops = &mem_fops;

    res = cdev_add(mem_cdev, devno, 1);



    if (res)

    {

        cdev_del(mem_cdev);

        mem_cdev = NULL;

        printk(KERN_INFO"cdev_add error ");

    }

    else

    {

        printk(KERN_INFO"cdev_add ok ");

    }



/* creating your own class */

    my_class = class_create(THIS_MODULE, "myalloc");

    if(IS_ERR(my_class)) {

        printk("Err: failed in creating class. ");

       return -1;

    }

/* register your own device in sysfs, and this will cause udevd to create corresponding device node */

    device_create(my_class, NULL, MKDEV(MEM_MAJOR,0), NULL, "myalloc", 0);
    return 0;

}

相关帖子

沙发
JAYLU| | 2009-7-16 11:54 | 只看该作者

device_create 不会生成dev下的节点

在/sys目录树下应有文件.

使用特权

评论回复
板凳
fe_arm|  楼主 | 2009-7-16 23:17 | 只看该作者

如何生成dev的结点

如何生成dev的结点,在驱动中使用什么函数能够实现,谢谢

使用特权

评论回复
地板
一朝成名| | 2009-7-16 23:51 | 只看该作者

你可以先静态建立结点

使用特权

评论回复
5
fe_arm|  楼主 | 2009-7-17 13:35 | 只看该作者

re:你可以先静态建立结点

在程序中如何实现,所谓的静态建立节点,不就是用mknode指令实现吗?而我的问题是如何在驱动中实现建立节点

使用特权

评论回复
6
一朝成名| | 2009-7-17 13:44 | 只看该作者

一般情况下是复制主机的/dev/目录下的设备文件

到你的目标系统,删去没用的设备文件,如果少的话,自己mknode也可以

这是在你建立文件系统的时候就要做好的

使用特权

评论回复
7
fe_arm|  楼主 | 2009-7-17 13:48 | 只看该作者

re

“我的问题是如何在驱动中实现建立节点”,也就是说,如何在驱动源码中调用内核的API实现,设备节的建立

使用特权

评论回复
8
一朝成名| | 2009-7-17 13:50 | 只看该作者

偶没那么建立过,也有动态方法

但是不是这么建的,跟busybox有关系~用udev

使用特权

评论回复
9
chl00100| | 2009-7-18 10:31 | 只看该作者

re

Google下class_simple_create和class_simple_add

使用特权

评论回复
10
fe_arm|  楼主 | 2009-7-19 15:51 | 只看该作者

已稿定,程序没有问题

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

124

帖子

0

粉丝