小编eri*_*ris的帖子

将用户空间代码移植到内核空间

我有一个主要用C编写的大系统,到目前为止在用户空间中运行.现在我需要将代码编译为内核模块.为此,AFAIK,我应该至少重写代码和替换功能为malloc,calloc,free,printf与内核的等同物,因为这些都是仅仅用户空间的功能.但问题是,我没有系统中使用的某些定制库的源代码,而且这些库malloc在其函数内调用等.所以,基本上,我可能需要重新实现整个库.

现在的问题是:如果我将自己的实现编写malloc为包装器kmalloc,它会是一个非常脏的黑客,如下所示:

void *malloc(size_t size) {
    return kmalloc(size, GFP_USER);
}
Run Code Online (Sandbox Code Playgroud)

然后将此实现链接到系统代码,这将消除模块错误中的所有未知符号.

实际上我认为这将是一个常见的问题,而且有人已经写过这样的kmalloc包装,但是我已经在谷歌上搜索了几天而没有发现任何有用的东西.

编辑:这样做的原因是我所说的系统是在VxWorks实时操作系统上运行的实时应用程序,现在我们想将它移植到Linux RTAI上,其中应用程序主要在内核空间中运行.但我想有可能在用户空间中实时拥有,所以,我应该像迈克建议的那样,将代码分离到内核和用户空间部分,并在它们之间与共享内存进行通信.

c linux linux-kernel rtai

8
推荐指数
1
解决办法
1670
查看次数

标签 统计

c ×1

linux ×1

linux-kernel ×1

rtai ×1