1 T_SNDVUDATA(3NSL) Networking Services Library Functions T_SNDVUDATA(3NSL) 2 3 4 5 NAME 6 t_sndvudata - send a data unit from one or more noncontiguous buffers 7 8 SYNOPSIS 9 #include <xti.h> 10 11 12 13 14 int t_sndvudata(int fd, struct t_unitdata *unitdata, struct t_iovec *iov, 15 unsigned int iovcount); 16 17 18 DESCRIPTION 19 This function is used in connectionless mode to send a data unit to 20 another transport user. The argument fd identifies the local 21 transport endpoint through which data will be sent, iovcount contains 22 the number of non-contiguous udata buffers and is limited to an 23 implementation-defined value given by T_IOV_MAX which is at least 16, 24 and unitdata points to a t_unitdata structure containing the 25 following members: 26 27 struct netbuf addr; 28 struct netbuf opt; 29 struct netbuf udata; 30 31 32 33 If the limit on iovcount is exceeded, the function fails with 34 TBADDATA. 35 36 37 In unitdata, addr specifies the protocol address of the destination 38 user, and opt identifies options that the user wants associated with 39 this request. The udata field is not used. The user may choose not to 40 specify what protocol options are associated with the transfer by 41 setting the len field of opt to zero. In this case, the provider may 42 use default options. 43 44 45 The data to be sent is identified by iov[0] through iov [iovcount-1]. 46 47 48 Note that the limit on the total number of bytes available in all 49 buffers passed: 50 51 iov(0).iov_len + . . + iov(iovcount-1).iov_len 52 53 54 55 may be constrained by implementation limits. If no other constraint 56 applies, it will be limited by INT_MAX. In practice, the availability 57 of memory to an application is likely to impose a lower limit on the 58 amount of data that can be sent or received using scatter/gather 59 functions. 60 61 62 By default, t_sndvudata() operates in synchronous mode and may wait if 63 flow control restrictions prevent the data from being accepted by the 64 local transport provider at the time the call is made. However, if 65 O_NONBLOCK is set by means of t_open(3NSL) or fcntl(2), t_sndvudata() 66 executes in asynchronous mode and will fail under such conditions. The 67 process can arrange to be notified of the clearance of a flow control 68 restriction by means of either t_look(3NSL) or the EM interface. 69 70 71 If the amount of data specified in iov0 through iov [iovcount-1] 72 exceeds the TSDU size as returned in the tsdu field of the info 73 argument of t_open(3NSL) or t_getinfo(3NSL), or is zero and sending of 74 zero octets is not supported by the underlying transport service, a 75 TBADDATA error is generated. If t_sndvudata() is called before the 76 destination user has activated its transport endpoint (see 77 t_bind(3NSL)), the data unit may be discarded. 78 79 80 If it is not possible for the transport provider to immediately detect 81 the conditions that cause the errors TBADADDR and TBADOPT, these errors 82 will alternatively be returned by t_rcvuderr(3NSL). An application 83 must therefore be prepared to receive these errors in both of these 84 ways. 85 86 RETURN VALUES 87 Upon successful completion, a value of 0 is returned. Otherwise, a 88 value of -1 is returned and t_errno is set to indicate an error. 89 90 VALID STATES 91 T_IDLE. 92 93 ERRORS 94 On failure, t_errno is set to one of the following: 95 96 TBADADDR 97 The specified protocol address was in an incorrect 98 format or contained illegal information. 99 100 101 TBADDATA 102 Illegal amount of data. 103 104 o A single send was attempted specifying a TSDU 105 greater than that specified in the info 106 argument, or a send of a zero byte TSDU is 107 not supported by the provider. 108 109 o iovcount is greater than T_IOV_MAX. 110 111 112 TBADF 113 The specified file descriptor does not refer to a 114 transport endpoint. 115 116 117 TBADOPT 118 The specified options were in an incorrect format or 119 contained illegal information. 120 121 122 TFLOW 123 O_NONBLOCK i was set, but the flow control mechanism 124 prevented the transport provider from accepting any data 125 at this time. 126 127 128 TLOOK 129 An asynchronous event has occurred on this transport 130 endpoint. 131 132 133 TNOTSUPPORT 134 This function is not supported by the underlying 135 transport provider. 136 137 138 TOUTSTATE 139 The communications endpoint referenced by fd is not in 140 one of the states in which a call to this function is 141 valid. 142 143 144 TPROTO 145 This error indicates that a communication problem has 146 been detected between XTI and the transport provider for 147 which there is no other suitable XTI error (t_errno). 148 149 150 TSYSERR 151 A system error has occurred during execution of this 152 function. 153 154 155 TLI COMPATIBILITY 156 In the TLI interface definition, no counterpart of this routine was 157 defined. 158 159 ATTRIBUTES 160 See attributes(5) for descriptions of the following attributes: 161 162 163 164 165 +---------------+-----------------+ 166 |ATTRIBUTE TYPE | ATTRIBUTE VALUE | 167 +---------------+-----------------+ 168 |MT Level | Safe | 169 +---------------+-----------------+ 170 171 SEE ALSO 172 fcntl(2), t_alloc(3NSL), t_open(3NSL), t_rcvudata(3NSL), 173 t_rcvvudata(3NSL) t_rcvuderr(3NSL), t_sndudata(3NSL), attributes(5) 174 175 176 177 August 23, 2001 T_SNDVUDATA(3NSL)