2.6.30内核中的kobject_init问题

时间:2012-05-16 16:37:46

标签: linux kernel device-driver

似乎kobject_init已被更改(我是一个新手),实际上我在互联网上找到的样本设备驱动程序无效。

我绝对需要关于/ procs / sysfs的示例,由于这些原因,我没有使用更简单的示例。

这是我使用的代码:

int int_init(void)
{
int i, ret;

kint = kmalloc(sizeof(*kint), GFP_KERNEL);
if (!kint) return -ENOMEM;
memset(kint, 0, sizeof(*kint));
kobject_init(&kint->kobj);
kint->numbers[0] = 0;
kint->numbers[1] = 1;
kint->numbers[2] = 5;
kint->kobj.ktype = &ktype_int;

ret = kobject_set_name(&kint->kobj, "sample-int-range");
if (!ret) ret = kobject_add(&kint->kobj);
if (!ret) {
     for (i=0; i<3; i++)
         sysfs_create_file(&kint->kobj,kint_default_attrs[i]);
}

if (ret)
    kfree(kint);
 return ret;
}

void int_exit(void)
{

 int i;

 for (i=0; i<3; i++)
     sysfs_remove_file(&kint->kobj,
               kint_default_attrs[i]);
 kobject_del(&kint->kobj);
 kobject_put(&kint->kobj);
 /* wait untile the kobj is freed */

 while (kint) {
     schedule_timeout(HZ/2);
 }
 return;
}
module_init(int_init);
module_exit(int_exit);

这是我捕获的错误(行不匹配):

  

make:进入目录/usr/src/linux-source-2.6.32' CC [M] /home/pietro/driver/sysfs.o /home/pietro/driver/sysfs.c: In function ‘int_init’: /home/pietro/driver/sysfs.c:125: error: too few arguments to function ‘kobject_init’ /home/pietro/driver/sysfs.c:132: error: too few arguments to function ‘kobject_add’ /home/pietro/driver/sysfs.c:135: warning: ignoring return value of ‘sysfs_create_file’, declared with attribute warn_unused_result /home/pietro/driver/sysfs.c: In function ‘int_exit’: /home/pietro/driver/sysfs.c:155: error: implicit declaration of function ‘schedule_timeout’ make[1]: *** [/home/pietro/driver/sysfs.o] Error 1 make: *** [_module_/home/pietro/driver] Error 2 make: Leaving directory / usr / src / linux-source-2.6.32'

我该如何解决这个问题?

PS:at this link the whole source file

0 个答案:

没有答案