Open System Services Porting Guide (G06.24+, H06.03+)

Table Of Contents
Porting or Migrating Sockets Applications
Open System Services Porting Guide520573-006
11-3
Porting Situations
°
socket_transport_name_get(), which an application can call to retrieve
the name of the transport provider process being used.
OSS sockets can return the following error codes that are not BSD error codes:
In the OSS environment, the ECONNRESET error code is returned when an attempt
is made to use a socket whose transport provider process has stopped running.
OSS sockets use the fcntl() function with the O_NONBLOCK flag to mark a
socket as nonblocking. BSD sockets use the fcntl() function with the FNDELAY
flag for this purpose.
OSS sockets support capture of the SIGURG signal. BSD sockets support capture
of the SIGURG and SIGIO signals.
In the OSS environment, the SIGURG signal is enabled by using the fcntl()
function to invoke the F_SETOWN command. In a BSD environment, SIGURG is
enabled using the fcntl() function to invoke the FASYNC command.
The OSS API does not provide the poll() function:
The OSS API provides the select() function and the Guardian API provides the
FILE_COMPLETE_ procedure; either can be used in place of the poll() function.
The OSS API does not currently support raw sockets.
Porting Situations
You need to consider four different porting situations when porting UNIX programs that
use BSD sockets to the OSS environment:
Blocking socket I/O
Programs using blocking socket input/output can generally be ported to the OSS
environment with minimal changes, provided the General Considerations on
page 11-1 are observed.
Blocking socket I/O with fork() and exec set of functions
Programs using blocking socket input/output with fork() and the exec set of
functions should be portable with no changes. However, you might wish to
consider the performance impact of using dynamic servers, static servers, or
persistent processes when porting. Static and persistent servers and other
performance considerations when processing requests are discussed in Porting
Servers and Demons on page 6-23.
Nonblocking socket I/O
ETANOTRUNNING Returned when an attempt is made to create a socket
without a transport agent process running on that
processor.
ENOENT Returned when an attempt is made to create a socket
without a transport provider process running.