t_alloc(3xti) t_alloc(3xti)
Name
t_alloc - allocate a library structure
Syntax
#include <xti.h>
char *t_alloc(fd, struct_type, fields)
int fd;
int struct_type;
int fields;
Arguments
fd Refers to the transport endpoint through which the newly allocated structure is passed.
struct_type
Specifies the allocated structure where each structure can subsequently be used as an argument to one or more transport func-
tions.
The struct_type argument must specify one of the following:
T_BIND_STR struct t_bind
T_CALL_STR struct t_call
T_OPTMGMT_STR struct t_optmgmt
T_DIS_STR struct t_discon
T_UNITDATA_STR struct t_unitdata
T_UDERROR_STR struct t_uderr
T_INFO_STR struct t_info
fields Specifies which buffers to allocate, where the argument is the bitwise-OR of any of the following:
T_ADDR The addr field of the or t_uderr structures (size obtained from info_addr).
T_OPT The opt field of the t_optmgmt, t_call, t_unitdata, or t_uderr structures (size obtained from info_options).
T_UDATA The udata field of the t_call, t_discon, or t_uderr structures (for T_CALL_STR, size is the maximum value of
info_connect and info_discon; for T_DIS_STR, size is the value of info_discon; for T_UNITDATA_STR, size is the value
of info_tsdu).
T_ALL All relevant fields of the given structure.
Description
The function dynamically allocates memory for the various transport function argument structures as listed under the ARGUMENTS section.
This function allocates memory for the specified structure and also allocates memory for buffers referenced by the structure.
Each of the accepted structures, except contains at least one field of type struct netbuf. For each field of this type, the user can spec-
ify that the buffer for that field should be allocated as well. The length of the buffer allocated is based on the size information
returned in the or
For each field specified in fields, allocates memory for the buffer associated with the field and initializes the len field to zero and the
buf pointer and maxlen field accordingly. Because the length of the buffer allocated is based on the same size information that is returned
to the user on and fd must refer to the transport endpoint through which the newly allocated structure will be passed. In this way, the
appropriate size information can be accessed. If the size value associated with any specified field is -1 or -2, will be unable to deter-
mine the size of the buffer to allocate and will fail, setting t_errno to [TSYSERR] and errno to [EINVAL]. For any field not specified in
fields, buf will be set to NULL and maxlen will be set to zero.
Use of to allocate structures helps to ensure the compatibility of user programs with future releases of the transport interface functions.
---------------------------------------
Parameters Before Call After Call
---------------------------------------
fd x /
struct_type x /
fields x /
---------------------------------------
Return Values
Upon successful completion, returns a pointer to the newly allocated structure. On failure, NULL is returned.
Diagnostics
On failure, t_errno is set to one of the following:
[TBADF] The specified file descriptor does not refer to a transport endpoint.
[TNOTSUPPORT] This function is not supported by the current implementation of XTI.
[TSYSERR] A system error has occurred during execution of this function.
[TNOSTRUCTYPE] An unsupported struct_type has been requested.
See Also
t_free(3xti), t_getinfo(3xti), t_open(3xti)
t_alloc(3xti)