Linuxカーネルに関する技術情報を集めていくプロジェクトです。現在、Linuxカーネル2.6解読室の第2章までを公開中。
新規ソケットの作成はsys_socket関数にて行う。引数で指定されたプロトコロルファミリーのタイプで、SS_UNCONNECTED状態のソケットを生成する。
sys_socket関数は、まずsock_create関数を呼び出す。socket構造体を確保(sock_alloc)した後、引数のプロトコルファミリー番号でnet_familiesテーブルを検索し、目的のプロトコルの初期化関数を呼び出し、ソケットを初期化する。各プロトコルの初期化関数中で、それぞれのプロトコル固有のソケット操作関数テーブル(struct proto_ops)の登録も行われる。また、必要があればsock構造体も確保(sk_alloc関数)初期化され登録される。
sock_create関数の処理が完了すると、file構造体を確保初期化し、ファイルとしてファイルディスクリプタテーブルに登録する(get_fd関数)。ファイル操作関数テーブルとしてはsocket_file_opsを登録する。
全ての処理が完了すると、先に「ソケットデータ形式」で説明したソケットデータ構造が出来上がる。
(NIS)HirokazuTakahashi
2000年06月11日 (日) 22時29分57秒 JST1
[ページ情報]
更新日時: 2008-08-27 14:46:53, 更新者: hiromichi-m
[権限]
表示:無制限, 編集:ログインユーザ, 削除/設定:メンバー