为什么不能在AIX中使用宏“PVPROCPTR”?

时间:2013-12-30 11:05:31

标签: c macros aix kernel-extension

宏PVPROCPTR(pid)可以将PID转换为Process指针。

所以我用它。但是当我做它时会出错。

1>ld : 0711-317 error : Undefined symbol: pvproc
1>  ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information.

AIX头文件中此宏的定义如下:

extern struct pvproc pvproc[NPROC];     /* the process table, itself      */

/* convert pid to proc pointer  */
#define PVPROCPTR(pid)  (&pvproc[PROCMASK(pid)])

所以我想知道为什么不能使用它?

1 个答案:

答案 0 :(得分:1)

问题是“为什么”。所以:

pvproc是一个内部内核结构。如果您正在进行内核扩展,那么您可能能够使用它。我没有看到它从/ usr / lib中的任何* exp文件导出,因此看起来它不是在任何地方工作,而是在内核本身内工作。

我希望AIX提供内核服务来做你想要的而不是宏。内核服务在不同版本的AIX上具有更高的稳定性(但它仍然可以改变 - 只是不常见)。

让我们回过头来问一个更大的问题:为什么你想要pvproc结构? (嗯......首先,回答:这是内核扩展吗?)