標準/拡張機能 | C/C++ | 依存項目 |
---|---|---|
XPG4.2 | 両方 |
#define _XOPEN_SOURCE_EXTENDED 1
#include <xti.h>
char *t_alloc(int fd, int struct_type, int fields);
以下に指定したとおり、メモリーを各種のトランスポート関数引数構造体に 動的に割り振ります。t_alloc() は、メモリーを指定された構造体に割り振り、またメモリーを構造体が参照したバッファーに割り振ります。
T_BIND struct t_bind
T_CALL struct t_call
T_OPTMGMT struct t_optmgmt
T_DIS struct t_discon
T_UNITDATA struct t_unitdata
T_UDERROR struct t_uderr
T_INFO struct t_info
ここで、これらの各構造体は、その後で 1 つ以上の
トランスポート関数に対する引数として使用できます。fields に指定されている関係のある各フィールドの場合には、t_alloc() はメモリーをフィールドに関連したバッファーに割り振り、len フィールドをゼロまで初期設定し、それに応じて buf ポインターと maxlen フィールドも初期設定します。フィールドに渡された無関係の値または不明な値は無視されます。割り振られたバッファーの長さが、t_open() と t_getinfo() に対する呼び出しでユーザーに戻されるものと同サイズの情報に基づくので、fd は、新規に割り振られた構造体が渡されるトランスポート終点を指している必要があります。この方法で、該当するサイズ情報をアクセスできます。指定されたフィールドと関連したサイズ値が -1 または -2 (t_open() または t_getinfo() を参照) の場合に、t_errno を TSYSERR に、errno を EINVAL に設定すると、t_alloc() は割り振るバッファーのサイズを判別できず、失敗します。fields に指定されていないフィールドの場合には、buf は NULL ポインターに設定され、len と maxlen はゼロに設定されます。
構造体を 割り振るために t_alloc() を使用すると、ユーザー・プログラムの 互換性を確実にして、トランスポート・インターフェース関数を 将来解放するのに役立ちます。
有効状態: すべて。ただし T_UNINIT を除く。
正常に実行された場合、t_alloc() は、新規に割り振られた構造体を指すポインターを戻します。