Linuxカーネル(バージョンv2.6.38)のソースコードを見ていましたが、未定義の定義がstruct map_segment
誤って見つかりましたexec_domain
。
struct exec_domain {
const char *name; /* name of the execdomain */
handler_t handler; /* handler for syscalls */
unsigned char pers_low; /* lowest personality */
unsigned char pers_high; /* highest personality */
unsigned long *signal_map; /* signal mapping */
unsigned long *signal_invmap; /* reverse signal mapping */
struct map_segment *err_map; /* error mapping */
struct map_segment *socktype_map; /* socket type mapping */
struct map_segment *sockopt_map; /* socket option mapping */
struct map_segment *af_map; /* address family mapping */
struct module *module; /* module context of the ed. */
struct exec_domain *next; /* linked list (internal) */
};
exec_domain
使用thread_info
。
私の質問:
- どこで
map_segment
定義されていますか? (メンバー変数はすべて何ですか?これまでに私が推測した最善の推測は、下位レベルのアーキテクチャ関連構造を指すことです。) - その目的は何で、どこで使用されますか? (コメントはソケットタイプマップ内で動作することを示していますが、私はあまり慣れていません。ソケットタイプマップとは何ですか?)
このトピックに関する情報をお寄せいただきありがとうございます。
ベストアンサー1
struct map_segment
少なくともバージョン2.6.38では、カーネルのどこにも定義されていません。 Cでは問題ありません。メンバーの内容がまったく必要ない限り、コンパイラが知る必要があるすべてはフィールドのサイズであり、これはポインタなので、ポインタのサイズだけです。これらの
struct map_segment
フィールドは使用されません。私は彼らの意図が人格にマッピングを定義させることだと思います。errno
値はerr_map
、アウトレットタイプ存在するsocktype_map
、アウトレットオプションsockopt_map
一緒にするホームアドレス存在するaf_map
。
このexec_domain
構造カーネルバージョン4.1から削除されました。