структура sysinfo в linux / kernel.h - PullRequest
5 голосов
/ 05 марта 2012

Я слонялся вокруг, просматривая различные заголовочные файлы ядра, и наткнулся на <linux/kernel.h>.Внутри это структура под названием sysinfo.

Я попытался использовать его, так сказать, из коробки, и все значения в структуре вернули 0. Я предполагаю, что мне нужно использовать приведенную выше функцию под названием do_sysinfo(struct sysinfo *info).

Дело в том, что я не могу найти информацию, которая ссылается на то, как ее использовать.Я попробовал функцию из коробки, и она потерпела неудачу, потому что это не могло быть связано.Кто-нибудь есть какая-либо информация о том, как использовать это или почему это не удается?Я новичок в этой области.Хотелось бы получить ссылки на хорошие руководства / информацию, если они у вас есть, это было бы здорово.

Ответы [ 2 ]

5 голосов
/ 05 марта 2012

Полагаю, вы пытались вызвать эту функцию из пространства пользователя.Это невозможно, поскольку этот заголовок предназначен только для использования ядром, за исключением структуры sysinfo, которая является «общей».

Возможно, вы захотите использовать системный вызов int sysinfo(struct sysinfo *info), включив sys/sysinfo.h, чтобызаполнить struct sysinfo.

4 голосов
/ 05 марта 2012

do_sysinfo - реализация на стороне ядра; это не доступно из пользовательского пространства. Хотя системный вызов sysinfo доступен; это то, что заполняет структуру:

#include <sys/sysinfo.h>

...

struct sysinfo info;
sysinfo(&info);

Обратите внимание, что при разборе файлов в /proc доступно гораздо больше информации (например, /proc/uptime, /proc/cpuinfo, /proc/meminfo).

...