0

マクロ PVPROCPTR(pid) は、PID をプロセス ポインタに変換できます。

だから私はそれを使用します。しかし、私がそれを作るときにエラーがあります。

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)])

なぜ使えないのか知りたいです。

4

1 に答える 1

1

問題は「なぜ」です。そう:

pvproc は内部カーネル構造です。カーネル エクステンションを作成している場合は、これで機能する可能性があります。/usr/lib の *exp ファイルのいずれからもエクスポートされていないので、どこからでも動作するように意図されているのではなく、カーネル自体から動作するように意図されているようです。

AIX は、マクロではなく、必要なことを実行するためのカーネル サービスを提供することを期待しています。カーネル サービスは、AIX のさまざまなバージョン間でより安定しています (ただし、変更される可能性はありますが、それほど頻繁ではありません)。

少し戻って、より大きな質問をしてみましょう。なぜ pvproc 構造が必要なのですか? (ええと... まず、答え: これはカーネル拡張機能ですか?)

于 2013-12-30T15:20:41.463 に答える