MyWebUniversity.com Home Page
 



OpenSolaris man pages main menu


Networking Services Library Functions                trcvv(3NSL)



NAME
     trcvv - receive data or expedited data sent over a  connec-
     tion  and  put  the  data  into  one  or more non-contiguous
     buffers

SYNOPSIS
     #include 




     int trcvv(int fd, struct tiovec *iov, unsigned int iovcount, int *flags);


DESCRIPTION
     This function receives either normal or expedited data.  The
     argument  fd identifies the local transport endpoint through
     which data will arrive,  iov points to an  array  of  buffer
     address/buffer size pairs (iovbase, iovlen). The  trcvv()
     function  receives  data  into  the  buffers  specified   by
     iov0.iovbase,   iov1.iovbase,   through    iov  [iovcount-
     1].iovbase, always filling one buffer before proceeding  to
     the next.


     Note that the limit on the total number of  bytes  available
     in all buffers passed:

       iov(0).iovlen ] . . ] iov(iovcount-1).iovlen)



     may be constrained by implementation  limits.  If  no  other
     constraint  applies, it will be limited by INTMAX. In prac-
     tice, 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.


     The argument iovcount contains the number of  buffers  which
     is limited to  TIOVMAX, which is an implementation-defined
     value  of at least 16. If the limit is exceeded,  the  func-
     tion will fail with TBADATA.


     The argument flags may be set on return from   trcvv()  and
     specifies optional flags as described below.


     By default,  trcvv() operates in synchronous mode and  will
     wait for data to arrive if none is currently available. How-
     ever, if  ONONBLOCK is set by  means  of   topen(3NSL)  or



SunOS 5.11           Last change: 7 May 1998                    1






Networking Services Library Functions                trcvv(3NSL)



     fcntl(2),  trcvv()  will  execute  in asynchronous mode and
     will fail if no data is available. See TNODATA below.


     On return from the call, if  TMORE 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  trcvv() or
     trcv(3NSL) calls.  In  the  asynchronous  mode,   or  under
     unusual  conditions (for example, the arrival of a signal or
     TEXDATA event), the  TMORE flag may be set on return  from
     the  trcvv() call even when the number of bytes received is
     less than the total size of all the receive  buffers.   Each
     trcvv()  with  the   TMORE flag set indicates that another
     trcvv() must follow to get more data for the current  TSDU.
     The  end  of  the  TSDU  is  identified  by  the return of a
     trcvv() call with the  TMORE flag not set.  If  the  tran-
     sport  provider  does  not  support the concept of a TSDU as
     indicated in the  info argument on return from  topen(3NSL)
     or  tgetinfo(3NSL),  the  TMORE 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  trcvv(), then
     trcvv() will return  0 only if the end of a TSDU  is  being
     returned to the user.


     On return, the data is expedited if  TEXPEDITED is  set  in
     flags.  If  TMORE 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 subse-
     quent calls to trcvv() which will return with   TEXPEDITED
     set  in  flags.  The  end  of the ETSDU is identified by the
     return of a  trcvv() call with  TEXPEDITED set and  TMORE
     cleared.   If the entire ETSDU is not available it is possi-
     ble for normal data fragments to  be  returned  between  the
     initial and final fragments of an ETSDU.


     If a signal arrives, trcvv() returns, giving the  user  any
     data   currently   available.   If  no  data  is  available,
     trcvv() returns  -1, sets  terrno to TSYSER and  errno to
     EINTR.  If  some  data  is  available,  trcvv() returns the
     number of bytes received and  TMORE is set in flags.


     In synchronous mode, the only way for the user to  be  noti-
     fied  of the arrival of normal or expedited data is to issue
     this function or check for the  TDATA  or  TEXDATA  events
     using the  tlook(3NSL) function.  Additionally, the process
     can arrange to be notified via the EM interface.



SunOS 5.11           Last change: 7 May 1998                    2






Networking Services Library Functions                trcvv(3NSL)



RETURN VALUES
     On successful completion,  trcvv() returns  the  number  of
     bytes  received.  Otherwise,  it  returns  -1 on failure and
     terrno is set to indicate the error.

VALID STATES
     TDATAXFER, TOUTREL.

ERORS
     On failure,  terrno is set to one of the following:

     TBADATA       iovcount is greater than  TIOVMAX.


     TBADF          The specified file descriptor does not  refer
                    to a transport endpoint.


     TLOK          An asynchronous event has  occurred  on  this
                    transport  endpoint  and  requires  immediate
                    attention.


     TNODATA        ONONBLOCK was set, but no data is  currently
                    available from the transport provider.


     TNOTSUPORT    This function is not supported by the  under-
                    lying transport provider.


     TOUTSTATE      The communications endpoint referenced by  fd
                    is  not  in one of the states in which a call
                    to this function is valid.


     TPROTO         This error  indicates  that  a  communication
                    problem has been detected between XTI and the
                    transport provider  for  which  there  is  no
                    other suitable XTI error (terrno).


     TSYSER        A system error has occurred during  execution
                    of this function.


TLI COMPATIBILITY
     In the TLI interface definition, no counterpart of this rou-
     tine was defined.

ATRIBUTES




SunOS 5.11           Last change: 7 May 1998                    3






Networking Services Library Functions                trcvv(3NSL)



     See attributes(5)  for descriptions of the following  attri-
     butes:



     
           ATRIBUTE TYPE               ATRIBUTE VALUE       
    
     MT Level                     Safe                        
    


SEE ALSO
     fcntl(2),   tgetinfo(3NSL),   tlook(3NSL),   topen(3NSL),
     trcv(3NSL), tsnd(3NSL), tsndv(3NSL), attributes(5)








































SunOS 5.11           Last change: 7 May 1998                    4



OpenSolaris man pages main menu

Contact us      |       About us      |       Term of use      |       Copyright © 2000-2010 MyWebUniversity.com ™