NAME [Toc] [Back]
t_rcvudata() - receive a data unit from remote transport provider user
SYNOPSIS [Toc] [Back]
#include <xti.h> /* for X/OPEN Transport Interface - XTI */
/* or */
#include <tiuser.h> /* for Transport Layer Interface - TLI */
int t_rcvudata (fd, unitdata, flags);
struct t_unitdata *unitdata;
DESCRIPTION [Toc] [Back]
The t_rcvudata() function is used in connectionless-mode to receive a
data unit from a remote transport provider user. The argument fd
identifies the local transport endpoint through which data will be
received. unitdata holds information associated with the received data
unit. flags is set on return to indicate that the complete data unit
was not received. The argument unitdata points to a t_unitdata
structure containing the following members:
struct netbuf addr;
struct netbuf opt;
struct netbuf udata;
The type netbuf structure is defined in the <xti.h> or <tiuser.h>
header file. This structure, which is used to define buffer
parameters, has the following members:
unsigned int maxlen maximum byte length of the data buffer
unsigned int len actual byte length of data written to
char *buf points to buffer location
The maxlen field of addr, opt and udata must be set before calling
this function to indicate the maximum size of the buffer for each.
On return from this call, addr specifies the protocol address of the
sending user, opt identifies protocol-specific options that were
associated with this data unit, and udata specifies the user data that
By default, t_rcvudata() executes in the synchronous operating mode.
The t_rcvudata() function waits for data to arrive at the transport
endpoint specified by fd before returning control to the transport
user who called this function. However, when the transport endpoint,
specified by the fd parameter, has the O_NONBLOCK option set by
t_open() or fcntl() function, the t_rcvudata() function executes in
Hewlett-Packard Company - 1 - HP-UX 11i Version 2: August 2003
asynchronous mode. In asynchronous mode, when a data unit is
unavailable, control is immediately returned to the caller.
If the buffer defined in the udata field of unitdata is not large
enough to hold the current data unit, the buffer will be filled and
T_MORE will be set in flags on return to indicate that another
t_rcvudata() should be called to retrieve the rest of the data unit.
Subsequent calls to t_rcvudata() will return zero for the length of
the address and options until the full data unit has been received.
Thread-Safeness [Toc] [Back]
The t_rcvudata() function is safe to be called by multithreaded
applications, and it is thread-safe for both POSIX Threads and DCE
User Threads. It has a cancellation point. It is neither asynccancel
safe nor async-signal safe. Finally, it is not fork-safe.
Valid States [Toc] [Back]
RETURN VALUE [Toc] [Back]
Upon successful completion, a value of 0 is returned. Otherwise, a
value of -1 is returned and t_errno is set to indicate the error.
ERRORS [Toc] [Back]
On failure, t_errno is set to one of the following:
[TBADF] The specified file descriptor does not refer to a
[TNODATA] O_NONBLOCK was set, but no data units are
currently available from the transport provider.
[TBUFOVFLW] The number of bytes allocated for the incoming
protocol address or protocol options is not
sufficient to store the information. The unit
data information normally returned in unitdata is
[TLOOK] An asynchronous event has occurred on this
transport endpoint required immediate attention.
[TNOTSUPPORT] This function is not supported by the underlying
[TOUTSTATE] (XTI only) The function was issued in the wrong
sequence on the transport endpoint referenced by
[TSYSERR] A system error occurred during execution of this
Hewlett-Packard Company - 2 - HP-UX 11i Version 2: August 2003
[TPROTO] (XTI only) This error indicates that a
communication problem has been detected between
XTI and the transport provider for which there is
no other suitable XTI (t_errno).
SEE ALSO [Toc] [Back]
fcntl(2), t_alloc(3), t_open(3), t_optmgmt(3), t_rcvuderr(3),
STANDARDS CONFORMANCE [Toc] [Back]
t_rcvudata(): SVID2, XPG3, XPG4
Hewlett-Packard Company - 3 - HP-UX 11i Version 2: August 2003 [ Back ]