NAME
t_sync() — synchronize transport library
SYNOPSIS
#include <xti.h> /* for X/OPEN Transport Interface - XTI */
/* or */
#include <tiuser.h> /* for Transport Layer Interface - TLI */
int t_sync (fd);
int fd;
DESCRIPTION
For the transport endpoint specified by
fd,
the
t_sync()
function
synchronizes the data structures managed by the transport library
with information from the underlying transport provider.
In doing so, it can convert an uninitialized
file descriptor (obtained via
open(),
dup()
or as a result of a
fork()
and
exec())
to an initialized endpoint, assuming that the
file descriptor referenced a transport endpoint, by updating and allocating
the necessary library data structures. This function also allows two
cooperating processes to synchronize their interaction with a transport
provider.
For example, if a process forks a new process and issues an
exec(),
the new process must issue a
t_sync()
to build the private library data
structure associated with a transport endpoint and to synchronize the data
structure with the relevant provider information.
It is important to remember that the transport provider treats all users of a
transport endpoint as a single user. If multiple processes are using the same
endpoint, they should coordinate their activities so as not to violate the
state of the transport endpoint. The function
t_sync()
returns the current state of the transport endpoint to the user,
thereby enabling the user
to verify the state before taking further action. This coordination is only
valid among cooperating processes; it is possible that a process or an
incoming event could change the endpoint's state after a
t_sync()
is issued.
If the transport endpoint is undergoing a state transition when
t_sync()
is called, the function will fail.
Valid States
All - apart from
T_UNINIT.
Fork Safety
t_sync
is not fork-safe.
RETURN VALUE
t_sync
returns the state of the transport connection endpoint on
successful completion and -1 on failure, and
t_errno
is set to indicate
the error. The state returned is one of the following:
- T_UNBND
Unbound
- T_IDLE
Idle
- T_OUTCON
Outgoing connection pending
- T_INCON
Incoming connection pending
- T_DATAXFER
Data transfer
- T_OUTREL
Outgoing orderly release (waiting for an orderly release indication)
- T_INREL
Incoming orderly release (waiting for an orderly release request)
ERRORS
On failure,
t_errno
is set to one of the following:
- [TBADF]
The specified file descriptor does not refer to a transport endpoint. This
error may be returned when the
fd
has been previously closed or an
erroneous number may have been passed to the call.
- [TSTATECHNG]
The transport endpoint is undergoing a state change.
- [TSYSERR]
A system error has occurred during execution of this function.
- [TPROTO]
(XTI only) This error indicates that a communication problem has been detected
between XTI and the transport provider for which there is no other suitable
XTI (t_errno).
STANDARDS CONFORMANCE
t_sync(): SVID2, XPG3, XPG4