2013-03-14 62 views
0

在linux内核中,我需要找到内核结构成员变量的偏移量。我试图使用offsetof,但它声称我有一个未定义的结构。用户空间中可以做什么?由于内核结构不允许在用户空间中使用,我看不到使用offsetof。有没有另一种方法来找到这个?如何找到内核结构元素的偏移量?

回答

0

在内核中,使用方法:

#include <linux/stddef.h> 

它被定义为:

#define offsetof(TYPE,MEMBER) __compiler_offsetof(TYPE,MEMBER) 

这是用来在整个Linux内核。

如果您尝试在用户模式下使用它,那么类似的构造可能存在于libc includes中。

+0

我知道offsetof,但我不能使用内核结构在usermode中找到偏移量。如果你尝试声明像struct task_struct任务,它将不会编译,因为task_struct是未定义的 – REALFREE 2013-03-14 16:39:34

+0

我在glibc源文件中发现了这个。它可能工作:#define offsetof(Type,Member)((size_t)&((Type *)NULL) - > Member) – 2013-03-14 17:38:49