t_alloc(3N) t_alloc(3N)
NAME
talloc - Bibliotheksstruktur anlegen
SYNTAX
#include <sys/tiuser.h>
char *talloc(int fd, int structtype, int fields);
BESCHREIBUNG
Die Funktion reserviert dynamisch Speicher für die verschiedenen Argu-
mentstrukturen der Transportfunktionen. Sie reserviert Speicher für
die angegebene Struktur und für die Puffer, auf die in den Strukturen
verwiesen wird.
Die Struktur, für die Speicher reserviert werden soll, wird durch
structtype festgelegt und kann eine der folgenden Strukturen sein:
TBIND struct tbind
TCALL struct tcall
TOPTMGMT struct toptmgmt
TDIS struct tdiscon
TUNITDATA struct tunitdata
TUDERROR struct tuderr
TINFO struct tinfo
Jede dieser Strukturen kann danach als Argument für eine oder mehrere
Transportfunktionen dienen.
Jede der obigen Strukturen, außer TINFO, enthält zumindest ein Feld
vom Typ struct netbuf. Für jedes Feld dieses Typs kann der Benutzer
angeben, ob für den Puffer dieses Felds ebenfalls Speicher reserviert
werden soll. Das Argument fields gibt diese Option an, wobei es durch
Kombinationen einer ODER-Verknüpfung der folgenden Werte gebildet
wird:
TADDR addr-Feld der Strukturen von tbind, tcall, tunitdata oder
tuderr
TOPT opt-Feld der Strukturen von toptmgmt, tcall, tunitdata
oder tuderr
TUDATA udata-Feld der Strukturen von tcall, tdiscon oder
tunitdata
TALL alle relevanten Felder der gegebenen Struktur
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
t_alloc(3N) t_alloc(3N)
Für jedes in fields spezifizierte Feld legt talloc Speicher für die
Puffer an, die dem Feld zugeordnet sind, und initialisiert den Zeiger
buf und den Wert maxlen entsprechend. Die Größe des angelegten Puffers
basiert auf derselben Information wie die von topen und tgetinfo
gelieferte Information an den Benutzer. Daher muß fd auf den Trans-
portendpunkt verweisen, über den die neu angelegte Struktur übergeben
wird, so daß auf die entsprechende Größeninformation zugegriffen wer-
den kann. Wenn der Größenwert, der zu irgendeinem Feld gehört -1 oder
-2 ist (siehe bei topen oder tgetinfo), ist talloc nicht in der
Lage die Größe des anzulegenden Puffers zu ermitteln, und schlägt
somit fehl. Dabei wird terrno auf TSYSERR und errno auf EINVAL
gesetzt. Für jedes nicht angegebene Feld in fields wird buf auf NULL
und maxlen auf 0 gesetzt.
Die Benutzung von talloc für das Anlegen von Strukturen gewährleistet
die Kompatibilität von Benutzerprogrammen mit zukünftigen Versionen
der Transportschnittstelle.
Im Fehlerfall wird terrno entsprechend auf einen der folgenden Werte
gesetzt:
TBADF Der angegebene Dateideskriptor verweist nicht auf
einen Transportendpunkt.
TSYSERR Während der Ausführung dieser Funktion ist ein System-
fehler aufgetreten.
DIAGNOSE
Bei erfolgreicher Ausführung liefert die Routine einen Zeiger auf die
neuangelegte Struktur zurück. Im Fehlerfall wird NULL zurückgeliefert.
SIEHE AUCH
tfree(3N), tgetinfo(3N), topen(3N).
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98