编译ldd3的scullc模块出现的问题

ldd3的例子程序scullc是用kmem_cache_create等来说明lookaside caches的使用情况。由于在新的内核中,一些定义已经改变了。故该例子程序需要做一些改动。

(1)kmem_cache_t结构被换成了kmem_cache。而kmem_cache定义在<linux/slab_def.h>和<linux/slub_def.h>。但是你并不需要包含这两个文件中的一个。因为<linux/slab.h>会根据CONFIG_SLUB等来判断具体包含<linux/slab_def.h>,还是<linux/slub_def.h>。故例程中需要将

kmem_cache_t *scullc_cache;
改为:
struct kmem_cache *scullc_cache;

(2)函数kmem_cache_create的原型已经改变:
struct kmem_cache *kmem_cache_create(const char *, size_t, size_t, unsigned long, void (*)(void *));故调用它的时候应该将参数做出相应的改变。

(3)如上一篇文章提到的INIT_WORK, schedule_delayed_work等改变。如代码做出如下相应变动:

struct async_work {
    struct kiocb *iocb;
    int result;
    struct work_struct work;
};

改为:

struct async_work {
    struct kiocb *iocb;
    int result;
    struct delayed_work delayed_work;
}

在函数scull_defer_op中将:

INIT_WORK(&stuff->work, scull_do_deferred_op, stuff);
schedule_delayed_work(&stuff->work, HZ/100);
改为:

INIT_DELAYED_WORK(&(stuff->delayed_work), scullc_do_deferred_op);
schedule_delayed_work(&(stuff->delayed_work),HZ/100);
编译即可。当然编译中需要根据提示将CFLAGS换成EXTRA_CFLAGS.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值