III. システムコール
以下は、ユーザプロセスが実行しうる典型的なシステムコールである。
次の記法を用いる。
SYSCALL (ARG1, ARG2....)
ここで SYSCALL はシステムコールの名前であり、ARGk などはシステムコールのパラメータである。
CONNECT (P, AEN, FS, CR)
- P: プロセスのポートを指定する
- AEN: ローカルソケットを指定する。ユーザ番号とホストは暗黙的に決まる
- FS: 任意のホスト上の、任意のユーザ番号と任意の AEN を持つソケットを指定する
- CR: 返される条件コード
CONNECT は、AEN で指定されたローカルソケットをポート P に接続し、特定の外部ソケット FS との接続を開始しようと試みる。CR が取りうる値は次のとおりである。
- CR=OK: CONNECT は正当であり、ソケット FS への接触を行っている。接続が確立または拒否されると、ステータスが更新される。
- CR = BUSY: ローカルソケットは使用中である(不正なコマンド順序)。
- CR = BADSKT: ソケットの指定が不正である。
- CR = NOROOM: ローカルホストの資源が枯渇している。
- CR = HOMOSEX: 送信/受信の組が正しくない
- CR = IMP DEAD: 自ホストの IMP が停止している
- CR = LINK DEAD: 外部ホストへのリンクが途絶している。原因は次のいずれかである:1. 外部の IMP が停止している、2. 外部ホストが停止している、3. 外部の NCP が応答しない。
LISTEN (P, AEN, CR)
- P: プロセスのポートを指定する
- AEN: ローカルソケットを指定する
- CR: 返される条件コード
AEN で指定されたローカルソケットがポート P に接続される。保留中の呼び出しがあればそれが処理され、なければ何も行われない。呼び出しが到着すると、ユーザに通知される。ユーザは呼び出しを調べた後、それを受け入れるか拒否するかを選べる。CR が取りうる値は次のとおりである。
- CR = OK: 接続を開始し、待ち受け中
- CR = BUSY
- CR = NOROOM
- CR = IMP DEAD
- CR = LINK DEAD
ACCEPT (P, CR)
- P: プロセスのポートを指定する
- CR: 返される条件コード
ACCEPT は、ユーザプロセスが外部ソケットを調べて呼び出し元を確認し、その呼び出しを受け入れることを意味する。(注:興味深い代替案として、ACCEPT を暗黙の既定条件と定義する方法がある。その場合、到着した RFC はすべて自動的に LISTEN を満たす。)CR が取りうる値は次のとおりである。
- CR = BADSKT
- CR = NOROOM
- CR = IMP DEAD
- CR = LINK DEAD
- CR = BADCOMM: 不正なコマンド順序。(例えば、LISTEN より前に ACCEPT が発行された場合。)
- CR = PREMCLS: RFC がローカルで受信された後、ACCEPT が実行される前に、外部ユーザが接続を中止した。
TRANSMIT (P, BUFF, BITSRQST, BITSACC, CR)
- P: プロセスのポートを指定する
- BUFF: 送信用のテキストバッファを指定する
- BITSRQST: 送信する長さをビット単位で指定する
- BITSACC: 実際に送信されたビット数を返す
- CR: 返される条件コード
送信が行われる。CR が取りうる値は次のとおりである。
- CR = OK
- CR = IMP DEAD
- CR = LINK DEAD
- CR = NOT OPEN: 接続が開設されていない(不正なコマンド順序)。
- CR = BAD BOUND: BITSRQST が範囲外である(例えば、受信ソケットで BUFF が BITSRQST の示す長さより短かった場合)。
INT (P, CR)
- P: このプロセスのローカルソケットを指定する
- CR: 返される条件コード
このポートの反対側(外部側)にあるプロセスに割り込みをかける。CR が取りうる値は次のとおりである。
- CR = OK
- CR = BADSKT
- CR = BADCOMM
- CR = IMP DEAD
- CR = LINK DEAD
STATUS (P, RTAB, CR)
- P: このプロセスのポートを指定する
- RTAB: 返されるランデブーテーブルのエントリ
- CR: 返される条件コード
このポートに対応するランデブーテーブルエントリの関連フィールドが RTAB に返される。これは、ユーザプロセスが接続の状態を監視するために用いる仕組みである。CR が取りうる値は次のとおりである。
- CR = OK
- CR = BADSKT
CLOSE (P, CR)
- P: このプロセスのポートを指定する
- CR: 返される条件コード
このポートに接続された接続上の活動が停止し、接続が切断され、ポートは他の用途に使えるよう解放される。CR が取りうる値は次のとおりである。
- CR = OK
- CR = BADSKT
- CR = BADCOMM
- CR = IMP DEAD
- CR = LINK DEAD