linux / kernel.h中的sysinfo结构

时间:2012-03-05 19:28:51

标签: c linux header kernel

我正在窥探各种内核头文件并偶然发现<linux/kernel.h>。里面是一个名为sysinfo的结构。

我已经尝试使用它开箱即可,并且结构中的所有值都返回0.我猜我需要使用上面称为do_sysinfo(struct sysinfo *info)的弹出函数。

问题是我找不到任何引用如何使用它的信息。我尝试了开箱即用的功能,因为无法链接而失败了。任何人都有关于如何使用它或为什么它失败的任何信息?我是这个领域的新手。想要有好的指南/信息的任何链接,如果你有它们,这将是伟大的。

2 个答案:

答案 0 :(得分:5)

我猜你试图从用户空间调用该函数。这是不可能的,因为该标头仅供内核使用,除了“共享”的struct sysinfo。

您可能希望通过添加int sysinfo(struct sysinfo *info)来使用系统调用sys/sysinfo.h,以便填充struct sysinfo

答案 1 :(得分:4)

do_sysinfo是内核端实现;它无法从用户区访问。但是,sysinfo系统调用是可访问的;这就是填充结构的原因:

#include <sys/sysinfo.h>

...

struct sysinfo info;
sysinfo(&info);

请注意,通过解析/proc中的文件(例如/proc/uptime/proc/cpuinfo/proc/meminfo),可以获得更多信息。