メインコンテンツまでスキップ

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