III. Systemaufrufe
Dies sind typische Systemaufrufe, die ein Benutzerprozess ausführen könnte.
Wir verwenden die Notation
SYSCALL (ARG1, ARG2....)
wobei SYSCALL der Name des Systemaufrufs ist und ARGk usw. die Parameter des Systemaufrufs sind.
CONNECT (P, AEN, FS, CR)
- P: bezeichnet einen Port des Prozesses
- AEN: bezeichnet einen lokalen Socket; Benutzernummer und Host sind implizit
- FS: bezeichnet einen Socket mit beliebiger Benutzernummer auf einem beliebigen Host und mit beliebiger AEN
- CR: der zurückgegebene Bedingungscode
CONNECT versucht, den durch AEN bezeichneten lokalen Socket mit dem Port P zu verbinden und eine Verbindung zu einem bestimmten fremden Socket FS aufzubauen. Mögliche Werte von CR sind:
- CR=OK: Das CONNECT war zulässig, und der Socket FS wird kontaktiert. Sobald die Verbindung hergestellt oder abgelehnt ist, wird der Status aktualisiert.
- CR = BUSY: Der lokale Socket ist belegt (unzulässige Befehlsfolge).
- CR = BADSKT: Die Socket-Angabe war unzulässig.
- CR = NOROOM: Die Ressourcen des lokalen Hosts sind erschöpft.
- CR = HOMOSEX: Falsches Sende-/Empfangspaar
- CR = IMP DEAD: Unser IMP ist ausgefallen
- CR = LINK DEAD: Die Verbindung zum fremden Host ist tot, weil: 1. der fremde IMP ausgefallen ist, 2. der fremde Host ausgefallen ist oder 3. der fremde NCP nicht antwortet.
LISTEN (P, AEN, CR)
- P: bezeichnet einen Port des Prozesses
- AEN: bezeichnet einen lokalen Socket
- CR: der zurückgegebene Bedingungscode
Der durch AEN bezeichnete lokale Socket wird mit dem Port P verbunden. Liegt ein anstehender Anruf vor, wird er verarbeitet; andernfalls geschieht nichts. Trifft ein Anruf ein, wird der Benutzer benachrichtigt. Nachdem er den Anruf geprüft hat, kann er ihn entweder annehmen oder ablehnen. Mögliche Werte von CR sind:
- CR = OK: Verbindungsaufbau begonnen, lauscht
- CR = BUSY
- CR = NOROOM
- CR = IMP DEAD
- CR = LINK DEAD
ACCEPT (P, CR)
- P: bezeichnet einen Port des Prozesses
- CR: der zurückgegebene Bedingungscode
ACCEPT bedeutet, dass der Benutzerprozess den fremden Socket geprüft hat, um festzustellen, wer anruft, und den Anruf annehmen wird. (Hinweis: Eine interessante Alternative definiert ACCEPT als implizite Standardbedingung. Damit erfüllt jeder eingehende RFC automatisch ein LISTEN.) Mögliche Werte von CR sind:
- CR = BADSKT
- CR = NOROOM
- CR = IMP DEAD
- CR = LINK DEAD
- CR = BADCOMM: Unzulässige Befehlsfolge. (Z. B. wurde ACCEPT vor einem LISTEN ausgegeben.)
- CR = PREMCLS: Der fremde Benutzer hat die Verbindung abgebrochen, nachdem der RFC lokal empfangen, aber bevor ACCEPT ausgeführt wurde.
TRANSMIT (P, BUFF, BITSRQST, BITSACC, CR)
- P: bezeichnet einen Port des Prozesses
- BUFF: bezeichnet den Textpuffer für die Übertragung
- BITSRQST: gibt die zu übertragende Länge in Bit an
- BITSACC: liefert die Anzahl der tatsächlich übertragenen Bits
- CR: der zurückgegebene Bedingungscode
Die Übertragung findet statt. Mögliche Werte für CR sind:
- CR = OK
- CR = IMP DEAD
- CR = LINK DEAD
- CR = NOT OPEN: Die Verbindung ist nicht offen (unzulässige Befehlsfolge).
- CR = BAD BOUND: BITSRQST außerhalb des zulässigen Bereichs (z. B. war BUFF bei einem Empfangs-Socket kürzer, als BITSRQST angab).
INT (P, CR)
- P: bezeichnet den lokalen Socket dieses Prozesses
- CR: der zurückgegebene Bedingungscode
Der Prozess auf der anderen (fremden) Seite dieses Ports soll unterbrochen werden. Mögliche Werte von CR sind:
- CR = OK
- CR = BADSKT
- CR = BADCOMM
- CR = IMP DEAD
- CR = LINK DEAD
STATUS (P, RTAB, CR)
- P: bezeichnet einen Port dieses Prozesses
- RTAB: der zurückgegebene Eintrag der Rendezvous-Tabelle
- CR: der zurückgegebene Bedingungscode
Die relevanten Felder des diesem Port zugeordneten Eintrags der Rendezvous-Tabelle werden in RTAB zurückgegeben. Dies ist der Mechanismus, mit dem ein Benutzerprozess den Zustand einer Verbindung überwacht. Mögliche Werte von CR sind:
- CR = OK
- CR = BADSKT
CLOSE (P, CR)
- P: bezeichnet einen Port dieses Prozesses
- CR: der zurückgegebene Bedingungscode
Die Aktivität auf der mit diesem Port verbundenen Verbindung endet, die Verbindung wird getrennt, und der Port wird für andere Zwecke frei. Mögliche Werte von CR sind:
- CR = OK
- CR = BADSKT
- CR = BADCOMM
- CR = IMP DEAD
- CR = LINK DEAD