2013-03-14 72 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