Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ t_snd(3N) — svr4 — mips UMIPS RISC/os 5.01

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

t_open(3N)

t_rcv(3N)



TSND(3N-SVR4)      RISC/os Reference Manual       TSND(3N-SVR4)



NAME
     t_snd - send data or expedited data over a connection

SYNOPSIS
     #include <tiuser.h>

     int tsnd (int fd, char *buf, unsigned nbytes, int flags);

DESCRIPTION
     This function is used to send either normal or expedited
     data.  fd identifies the local transport endpoint over which
     data should be sent, buf points to the user data, nbytes
     specifies the number of bytes of user data to be sent, and
     flags specifies any optional flags described below.

     By default, tsnd operates in synchronous mode and may wait
     if flow control restrictions prevent the data from being
     accepted by the local transport provider at the time the
     call is made.  However, if O_NDELAY or O_NONBLOCK is set
     (via t_open or fcntl), tsnd will execute in asynchronous
     mode, and will fail immediately if there are flow control
     restrictions.

     Even when there are no flow control restrictions, tsnd will
     wait if STREAMS internal resources are not available,
     regardless of the state of O_NDELAY or O_NONBLOCK.

     On successful completion, tsnd returns the number of bytes
     accepted by the transport provider.  Normally this will
     equal the number of bytes specified in nbytes.  However, if
     O_NDELAY or O_NONBLOCK is set, it is possible that only part
     of the data will be accepted by the transport provider.  In
     this case, tsnd will set T_MORE for the data that was sent
     (see below) and will return a value less than nbytes.  If
     nbytes is zero and sending of zero bytes is not supported by
     the underlying transport provider, tsnd() will return -1
     with t_errno set to TBADDATA. A return value of zero indi-
     cates that the request to send a zero-length data message
     was sent to the provider.

     If T_EXPEDITED is set in flags, the data will be sent as
     expedited data, and will be subject to the interpretations
     of the transport provider.

     If T_MORE is set in flags, or is set as described above, an
     indication is sent to the transport provider that the tran-
     sport service data unit (TSDU) or expedited transport ser-
     vice data unit (ETSDU) is being sent through multiple tsnd
     calls.  Each tsnd with the T_MORE flag set indicates that
     another tsnd will follow with more data for the current
     TSDU. The end of the TSDU (or ETSDU) is identified by a
     tsnd call with the T_MORE flag not set.  Use of T_MORE



                        Printed 11/19/92                   Page 1





TSND(3N-SVR4)      RISC/os Reference Manual       TSND(3N-SVR4)



     enables a user to break up large logical data units without
     losing the boundaries of those units at the other end of the
     connection.  The flag implies nothing about how the data is
     packaged for transfer below the transport interface.  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.

     The size of each TSDU or ETSDU must not exceed the limits of
     the transport provider as returned by t_open or t_getinfo.
     If the size is exceeded, a TSYSERR with system error EPROTO
     will occur.  However, the tsnd may not fail because EPROTO
     errors may not be reported immediately.  In this case, a
     subsequent call that accesses the transport endpoint will
     fail with the associated TSYSERR.

     If tsnd is issued from the T_IDLE state, the provider may
     silently discard the data.  If tsnd is issued from any
     state other than T_DATAXFER, T_INREL or T_IDLE, the provider
     will generate a TSYSERR with system error EPROTO (which may
     be reported in the manner described above).

     On failure, t_errno may be set to one of the following:

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

     [TFLOW]             O_NDELAY or O_NONBLOCK was set, but the
                         flow control mechanism prevented the
                         transport provider from accepting data
                         at this time.

     [TNOTSUPPORT]       This function is not supported by the
                         underlying transport provider.

     [TSYSERR]           A system error [see intro(2)] has been
                         detected during execution of this func-
                         tion.

     [TBADDATA]          nbytes is zero and sending zero bytes is
                         not supported by the transport provider.

SEE ALSO
     t_open(3N), t_rcv(3N).

DIAGNOSTICS
     On successful completion, tsnd returns the number of bytes
     accepted by the transport provider, and it returns -1 on
     failure and t_errno is set to indicate the error.





 Page 2                 Printed 11/19/92



Typewritten Software • bear@typewritten.org • Edmonds, WA 98026