linux - [C] 内核中的双向链表在上层应用是否会有问题?(list.h)
天蓬老师
天蓬老师 2017-04-17 11:14:49
0
2
661

我将内核中的双向链表的list.h文件放到上层使用(目前在Ubuntu系统上暂时未出现问题),是否会隐含着一些问题???

由于list.h里面使用到了内核的一些头文件不能包括在上层应用中,我将一些宏直接移植到了list.h里面,其它代码没有任何的变动。移植的宏如下:

#define prefetch(x) __builtin_prefetch(x)

#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)

#define container_of(ptr, type, member) ({            \
    const typeof( ((type *)0)->member ) *__mptr = (ptr);    \
    (type *)( (char *)__mptr - offsetof(type,member) );})

有的文章在上层应用中使用list.h文件时,采用“在编译中使用‘-D KERNEL’开关‘欺骗’编译器”的方法是否妥当?(这与我单独将list.h文件提取到上层应用没有本质的区别)

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回覆(2)
刘奇

不會有問題,這是GNU/c編譯器擴展,但是使用的時候要小心,不能加入同一個節點,否則會形成環路、另外內核的紅黑樹也是可以拿出來用的,這些結構的實現都非常的細緻。就目前我的使用來看我沒有加任何的關於這個文件的編譯選項,只需要把 list.h檔提取出來,把上面幾個宏加上就可以

大家讲道理

不會有問題,這純粹是利用了C語言的特性,和核心無關

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板