*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->Tru64 Unix man pages -> t_rcvv (3)              



NAME    [Toc]    [Back]

       t_rcvv  -  Receive data or expedited data sent over a connection
 and put the data into one or  more  non-contiguous

SYNOPSIS    [Toc]    [Back]

       #include <xti.h>

       int t_rcvv(
               int fd,
               struct t_iovec *iov,
               unsigned int iovcount,
               int *flags );

LIBRARY    [Toc]    [Back]

       XTI Library (libxti.a)

STANDARDS    [Toc]    [Back]

       Interfaces  documented  on  this reference page conform to
       industry standards as follows:

       t_rcvv():  XNS5.0

       Refer to the standards(5) reference page for more information
 about industry standards and associated tags.

PARAMETERS    [Toc]    [Back]

       The  following table summarizes the relevance of input and
       output parameters before and after t_rcvv() is called:

       Parameters                Before Call   After Call
       fd                        y             n
       iov                       y             n
       iovcount                  y             n
       iov[0].iov_base           y(n)          e(y)
       iov[0].iov_len            y             e
       iov[iov-                  y(n)          e(y)
       iov[iovcount-1].iov_len   y             e

       Notes  to Table: This is a meaningful parameter.  The content
 of the object pointed to by y is meaningful.  This is
       a  meaningful  but optional parameter.  The content of the
       object pointed to by o is meaningful.  The parameter value
       after  the  call  is the same as before the call.  This is
       not a meaningful parameter.  Identifies the  local  transport
  endpoint through which data is to arrive.  Points to
       an array of buffer address/buffer  size  pairs  (iov_base,
       iov_len).   Specifies the number of buffers, which is limited
 to T_IOV_MAX (an implementation-defined value  of  at
       least  16).   If  the limit is exceeded, the function will
       fail with [TBADDATA].  See the DESCRIPTION section.

DESCRIPTION    [Toc]    [Back]

       The t_rcvv() function receives data into the buffers specified
   by   iov[0].iov_base,   iov[1].iov_base,   through
       iov[iovcount-1].iov_base, always filling one buffer before
       proceding to the next.


       The  limit  on  the total number of bytes available in all
       buffers passed (that is, iov(0).iov_len + ...  +  iov(iovcount-1).iov_len)
  may  be  constrained  by implementation
       limits.  If no other constraint applies, it will  be  limited
  by [INT_MAX].  In practice, the availability of memory
 to an application is likely to impose a lower limit on
       the  amount  of  data  that  can be sent or received using
       scatter/gather functions.

       By default, t_rcvv() operates in synchronous mode and will
       wait  for  data  to arrive if none is currently available.
       However, if O_NONBLOCK is set (via t_open()  or  fcntl()),
       t_rcvv()  will  execute in asynchronous mode and will fail
       if no data is available (see [TNODATA]).

       The flags argument may be set on return from t_rcvv(), and
       specifies optional flags as follows.

       On  return  from the call, if T_MORE is set in flags, this
       indicates that there is more data, and the current  transport
  service data unit (TSDU) or expedited transport service
 data  unit  (ETSDU)  must  be  received  in  multiple
       t_rcvv()  or  t_rcv() calls.  In the asynchronous mode, or
       under unusual conditions (for example, the  arrival  of  a
       signal  or  T_EXDATA event), the T_MORE flag may be set on
       return from the t_rcvv() call  even  when  the  number  of
       bytes  received  is  less  than  the total size of all the
       receive buffers.  Each t_rcvv() with the T_MORE  flag  set
       indicates  that  another  t_rcvv() call must follow to get
       more data for the current TSDU.  The end of  the  TSDU  is
       identified  by  the  return  of  a  t_rcvv() call with the
       T_MORE flag not set.

       If the transport provider does not support the concept  of
       a  TSDU  as  indicated in the info argument on return from
       t_open() or t_getinfo(), the T_MORE flag is not meaningful
       and  should  be  ignored.  If  the  amount of buffer space
       passed in  iov  is  greater  than  zero  on  the  call  to
       t_rcvv(), t_rcvv() will return 0 only if the end of a TSDU
       is being returned to the user.

       On return, the data is expedited if T_EXPEDITED is set  in
       flags.   If T_MORE is also set, it indicates that the number
 of expedited  bytes  exceeded  nbytes,  a  signal  has
       interrupted  the  call,  or  that  an entire ETSDU was not
       available (only for transport protocols that support fragmentation
  of  ETSDUs).  The  rest  of  the  ETSDU will be
       returned by  subsequent  calls  to  t_rcvv(),  which  will
       return  with  T_EXPEDITED  set  in  flags.  The end of the
       ETSDU is identified by the return of a t_rcvv() call  with
       T_EXPEDITED  set  and T_MORE cleared.  If the entire ETSDU
       is not available it is possible for normal data  fragments
       to  be returned between the initial and final fragments of
       an ETSDU.

       If a signal arrives, t_rcvv() returns, giving the user any
       data  currently  available.   If  no  data  is  available,
       t_rcvv() returns -1, sets t_errno to [TSYSERR]  and  errno
       to  [EINTR].   If some data is available, t_rcvv() returns
       the number of bytes received and T_MORE is set in flags.

       In synchronous mode, the only way for the user to be notified
  of  the  arrival  of  normal or expedited data is to
       issue this function or check for the  T_DATA  or  T_EXDATA
       events  using  the  t_look()  function.  Additionally, the
       process can arrange to be notified via the EM interface.

ERRORS    [Toc]    [Back]

       If the t_rcvreldata() function fails, t_errno may  be  set
       to  one of the following values: The iovcount parameter is
       greater than T_IOV_MAX.  File descriptor  (fd)  is  not  a
       valid  transport endpoint.  An asynchronous event occurred
       on this transport endpoint and requires  immediate  attention.
   O_NONBLOCK  mode was set, but no data is currently
       available from the transport provider.  Orderly release is
       not  supported  by the underlying transport provider.  The
       communications endpoint referenced by fd is not in a valid
       state  in  which a call to this function.  A communication
       problem has been detected between XTI  and  the  transport
       provider  for  which  there is no other suitable XTI error
       (t_errno).  A system error occurred  during  execution  of
       this function.

VALID STATES    [Toc]    [Back]

       The   t_rcvv()  function  can  be  called  in  either  the
       T_DATAXFER or T_OUTREL transport provider states.

RETURN VALUE    [Toc]    [Back]

       Upon successful completion, t_rcvv() returns a value of  0
       (zero).  Otherwise,  it  returns  a  value  of -1 and sets
       t_errno to indicate the error.

SEE ALSO    [Toc]    [Back]

       Functions: fcntl(2), t_getinfo(3),  t_look(3),  t_open(3),
       t_rcv(3), t_snd(3), t_sndv(3).

       Standards: standards(5)

       Network Programmer's Guide

[ Back ]
 Similar pages
Name OS Title
t_rcv Tru64 Receive normal data or expedited data on a connection
t_snd Tru64 Send normal data or expedited data over a connection
t_rcvvudata Tru64 Receive data or expedited data sent over a
t_snd HP-UX send data or expedited data over a connection
t_snd IRIX send data or expedited data over a connection
t_rcvudata IRIX receive a data unit
t_rcvudata Tru64 Receive a data unit
t_rcvuderr IRIX receive a unit data error indication
t_rcvuderr Tru64 Receive a unit data error indication
t_rcvuderr HP-UX receive a unit data error indication
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service