Ioctl – Comtrol eCos User Manual

Page 565

Advertising
background image

Chapter 38. TCP/IP Library Reference

data next in the receive queue is different than that returned.

SO_SNDTIMEO is an option to set a timeout value for output operations.

It accepts a struct timeval parameter with the number of seconds and

microseconds used to limit waits for output operations to complete.

If a

send operation has blocked for this much time, it returns with a partial

count or with the error EWOULDBLOCK if no data was sent.

In the current

implementation, this timer is restarted each time additional data are

delivered to the protocol, implying that the limit applies to output por-

tions ranging in size from the low water mark to the high water mark for

output.

SO_RCVTIMEO is an option to set a timeout value for input opera-

tions.

It accepts a struct timeval parameter with the number of seconds

and microseconds used to limit waits for input operations to complete.

In the current implementation, this timer is restarted each time addi-

tional data are received by the protocol, and thus the limit is in effect

an inactivity timer.

If a receive operation has been blocked for this

much time without receiving additional data, it returns with a short

count or with the error EWOULDBLOCK if no data were received.

Finally, SO_TYPE and SO_ERROR are options used only with getsockopt().

SO_TYPE returns the type of the socket, such as SOCK_STREAM; it is useful

for servers that inherit sockets on startup.

SO_ERROR returns any pend-

ing error on the socket and clears the error status.

It may be used to

check for asynchronous errors on connected datagram sockets or for other

asynchronous errors.

RETURN VALUES

A 0 is returned if the call succeeds, -1 if it fails.

ERRORS

The call succeeds unless:

[EBADF]

The argument s is not a valid descriptor.

[ENOTSOCK]

The argument s is a file, not a socket.

[ENOPROTOOPT]

The option is unknown at the level indicated.

[EFAULT]

The address pointed to by optval is not in a valid

part of the process address space.

For getsockopt(),

this error may also be returned if optlen is not in a

valid part of the process address space.

SEE ALSO

connect(2), ioctl(2), poll(2), select(2), poll(2), socket(2),

getprotoent(3), protocols(5)

BUGS

Several of the socket options should be handled at lower levels of the

system.

HISTORY

The getsockopt() system call appeared in 4.2BSD.

BSD

February 15, 1999

BSD

461

Advertising