ソケットの作成

新規ソケットの作成は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を登録する。

全ての処理が完了すると、先に「ソケットデータ形式」で説明したソケットデータ構造が出来上がる。

img81.gif

(NIS)HirokazuTakahashi
2000年06月11日 (日) 22時29分57秒 JST
1