t_rcv man page on SmartOS

Man page or keyword search:  
man Server   16655 pages
apropos Keyword Search (all sections)
Output format
SmartOS logo
[printable version]

T_RCV(3NSL)							   T_RCV(3NSL)

NAME
       t_rcv - receive data or expedited data sent over a connection

SYNOPSIS
       #include <xti.h>

       int t_rcv(int fd, void *buf, unsigned int nbytes, int *flags);

DESCRIPTION
       This  function is part of the XTI interfaces which evolved from the TLI
       interfaces. XTI represents the future evolution	of  these  interfaces.
       However,	 TLI  interfaces are supported for compatibility. When using a
       TLI function that has the same name as an XTI  function,	 the  tiuser.h
       header  file must be used.  Refer to the	 TLI COMPATIBILITY section for
       a description of differences between the two interfaces.

       This function receives either normal or expedited data. The argument fd
       identifies the local transport endpoint through which data will arrive,
       buf points to a receive buffer where user  data	will  be  placed,  and
       nbytes specifies the size of the receive buffer. The argument flags may
       be set on return from t_rcv() and specifies optional flags as described
       below.

       By default, t_rcv() operates in synchronous mode and will wait for data
       to arrive if none is currently available. However, if O_NONBLOCK is set
       by means of t_open(3NSL) or fcntl(2), t_rcv() will execute in asynchro‐
       nous mode and will fail if no data is available. See TNODATA below.

       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_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_rcv() call
       even when the number of bytes received is less than  the	 size  of  the
       receive	buffer specified. Each t_rcv() with the	 T_MORE flag set indi‐
       cates that another t_rcv() must follow to get more data for the current
       TSDU. The end of the TSDU is identified by the return of a t_rcv() call
       with the	 T_MORE flag not set. If the transport provider does not  sup‐
       port  the concept of a TSDU as indicated in the info argument on return
       from t_open(3NSL) or t_getinfo(3NSL), the  T_MORE flag is not  meaning‐
       ful  and should be ignored.  If nbytes is greater than zero on the call
       to t_rcv(), t_rcv() 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_rcv() which will return with  T_EXPEDITED set  in
       flags.  The  end of the ETSDU is identified by the return of a  t_rcv()
       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_rcv() returns, giving the	 user  any  data  cur‐
       rently  available.  If no data is available,  t_rcv() returns  -1, sets
       t_errno to TSYSERR and  errno to EINTR.	If  some  data	is  available,
       t_rcv()	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(3NSL)  function.
       Additionally, the process can arrange to be notified by means of the EM
       interface.

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

VALID STATES
       T_DATAXFER, T_OUTREL.

ERRORS
       On failure, t_errno is set to one of the following:

       TBADF
		      The specified file descriptor does not refer to a trans‐
		      port endpoint.

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

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

       TNOTSUPPORT
		      This  function is not supported by the underlying trans‐
		      port 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 (t_errno).

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

TLI COMPATIBILITY
       The XTI and TLI interface definitions have common names but use differ‐
       ent header files. This, and other semantic differences between the  two
       interfaces are described in the subsections below.

   Interface Header
       The  XTI	 interfaces  use the header file, xti.h. TLI interfaces should
       not use this header.  They should use the header:
	 #include <tiuser.h>

   Error Description Values
       The t_errno value that can be set by the XTI interface  and  cannot  be
       set by the TLI interface is:
	 TPROTO

ATTRIBUTES
       See attributes(5)  for descriptions of the following attributes:

       ┌────────────────────┬───────────────────┐
       │  ATTRIBUTE TYPE    │  ATTRIBUTE VALUE	│
       ├────────────────────┼───────────────────┤
       │Interface Stability │ Committed		│
       ├────────────────────┼───────────────────┤
       │MT-Level	    │ Safe		│
       ├────────────────────┼───────────────────┤
       │Standard	    │ See standards(5). │
       └────────────────────┴───────────────────┘

SEE ALSO
       fcntl(2),  t_getinfo(3NSL),  t_look(3NSL),  t_open(3NSL),  t_snd(3NSL),
       attributes(5), standards(5)

				 Aug 24, 2007			   T_RCV(3NSL)
[top]

List of man pages available for SmartOS

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net