2012-03-05 11 views
5

私はさまざまなカーネルヘッダファイルを調べて、<linux/kernel.h>を見つけました。その内部にsysinfoという構造があります。linux/kernel.hのsysinfo構造体

私はこれを箱から出して話してみましたが、構造体のすべての値は0を返しました。私は上記のpoplating関数を使用する必要があります。do_sysinfo(struct sysinfo *info)と呼びます。

私はそれを使用する方法を参照する情報を見つけることができません。私はボックスから機能を試してみました。リンクできなかったので失敗しました。誰でもこれの使い方や失敗の理由に関する情報はありますか?私はこの分野の初心者です。あなたがそれらを持っているなら、良いガイド/情報へのリンクを望むでしょう、それは素晴らしいでしょう。

答えて

5

私はあなたがuserspaceからその関数を呼び出そうとしていると思います。これは不可能です。ヘッダーはカーネル専用です。ただし、 "共有"されているstruct sysinfoを除きます。

struct sysinfoを入力するためにsys/sysinfo.hを含めることによって、システムコールint sysinfo(struct sysinfo *info)を使用することをお勧めします。

4

do_sysinfoはカーネル側の実装です。ユーザーランドからはアクセスできないしかし、sysinfoシステムコールはアクセス可能です。それは構造を移入ものです:

#include <sys/sysinfo.h> 

... 

struct sysinfo info; 
sysinfo(&info); 

注意/proc(例えば、/proc/uptime/proc/cpuinfo/proc/meminfo)内のファイルを解析することで利用できる多くの情報があることを。

+2

まず、私の質問にすべてお答えいただき、ありがとうございます。巨大な助け!真剣にしかし。あなたはどこでこのようなことを学びますか?そのような知識はWeb上にはどこにも見つからない。これらの小さな詳細を見つけるのは痛みです。クールなものへのリンク? –