diff --git a/src/libCom/osi/os/Linux/systemCallIntMech.cpp b/src/libCom/osi/os/Linux/systemCallIntMech.cpp new file mode 100644 index 000000000..2cd37b1aa --- /dev/null +++ b/src/libCom/osi/os/Linux/systemCallIntMech.cpp @@ -0,0 +1,22 @@ + +/*************************************************************************\ +* Copyright (c) 2002 The University of Chicago, as Operator of Argonne +* National Laboratory. +* Copyright (c) 2002 The Regents of the University of California, as +* Operator of Los Alamos National Laboratory. +* EPICS BASE Versions 3.13.7 +* and higher are distributed subject to a Software License Agreement found +* in file LICENSE that is included with this distribution. +\*************************************************************************/ +/* $Id$ */ +/* + * Author: Jeff Hill + */ + +#include "osiSock.h" + +enum epicsSocketSystemCallInterruptMechanismQueryInfo + epicsSocketSystemCallInterruptMechanismQuery () +{ + return esscimqi_socketBothShutdownRequired; +} diff --git a/src/libCom/osi/os/RTEMS/systemCallIntMech.cpp b/src/libCom/osi/os/RTEMS/systemCallIntMech.cpp new file mode 100644 index 000000000..2cd37b1aa --- /dev/null +++ b/src/libCom/osi/os/RTEMS/systemCallIntMech.cpp @@ -0,0 +1,22 @@ + +/*************************************************************************\ +* Copyright (c) 2002 The University of Chicago, as Operator of Argonne +* National Laboratory. +* Copyright (c) 2002 The Regents of the University of California, as +* Operator of Los Alamos National Laboratory. +* EPICS BASE Versions 3.13.7 +* and higher are distributed subject to a Software License Agreement found +* in file LICENSE that is included with this distribution. +\*************************************************************************/ +/* $Id$ */ +/* + * Author: Jeff Hill + */ + +#include "osiSock.h" + +enum epicsSocketSystemCallInterruptMechanismQueryInfo + epicsSocketSystemCallInterruptMechanismQuery () +{ + return esscimqi_socketBothShutdownRequired; +} diff --git a/src/libCom/osi/os/WIN32/epicsSocketConvertErrnoToString.cpp b/src/libCom/osi/os/WIN32/epicsSocketConvertErrnoToString.cpp new file mode 100644 index 000000000..4059abb7e --- /dev/null +++ b/src/libCom/osi/os/WIN32/epicsSocketConvertErrnoToString.cpp @@ -0,0 +1,46 @@ + +/*************************************************************************\ +* Copyright (c) 2002 The University of Chicago, as Operator of Argonne +* National Laboratory. +* Copyright (c) 2002 The Regents of the University of California, as +* Operator of Los Alamos National Laboratory. +* EPICS BASE Versions 3.13.7 +* and higher are distributed subject to a Software License Agreement found +* in file LICENSE that is included with this distribution. +\*************************************************************************/ + +/* + * $Id$ + */ + +#include + +#define epicsExportSharedSymbols +#include "osiSock.h" + +/* + * epicsSocketConvertErrnoToString () + */ +void epicsSocketConvertErrnoToString ( + char * pBuf, unsigned bufSize ) +{ + if ( bufSize ) { + /* + * this does not work on systems prior to W2K + */ + int theSockError = SOCKERRNO; + DWORD success = FormatMessage ( + FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_MAX_WIDTH_MASK, + NULL, theSockError, + MAKELANGID ( LANG_NEUTRAL, SUBLANG_DEFAULT ), /* Default language */ + pBuf, bufSize, NULL ); + if ( ! success ) { + int status = _snprintf ( + pBuf, bufSize, "WINSOCK Error %d", theSockError ); + if ( status <= 0 ) { + strncpy ( pBuf, "WINSOCK Error", bufSize ); + pBuf [bufSize - 0] = '\0'; + } + } + } +} diff --git a/src/libCom/osi/os/WIN32/osdSock.h b/src/libCom/osi/os/WIN32/osdSock.h index d0c19d11e..75f6aeacd 100644 --- a/src/libCom/osi/os/WIN32/osdSock.h +++ b/src/libCom/osi/os/WIN32/osdSock.h @@ -36,6 +36,14 @@ extern "C" { typedef u_long FAR osiSockIoctl_t; typedef int osiSocklen_t; +#ifndef SHUT_RD +# define SHUT_RD SD_RECEIVE +#endif + +#ifndef SHUT_WR +# define SHUT_WR SD_SEND +#endif + #ifndef SHUT_RDWR # define SHUT_RDWR SD_BOTH #endif diff --git a/src/libCom/osi/os/WIN32/systemCallIntMech.cpp b/src/libCom/osi/os/WIN32/systemCallIntMech.cpp new file mode 100644 index 000000000..c31bcef2d --- /dev/null +++ b/src/libCom/osi/os/WIN32/systemCallIntMech.cpp @@ -0,0 +1,23 @@ + +/*************************************************************************\ +* Copyright (c) 2002 The University of Chicago, as Operator of Argonne +* National Laboratory. +* Copyright (c) 2002 The Regents of the University of California, as +* Operator of Los Alamos National Laboratory. +* EPICS BASE Versions 3.13.7 +* and higher are distributed subject to a Software License Agreement found +* in file LICENSE that is included with this distribution. +\*************************************************************************/ +/* $Id$ */ +/* + * Author: Jeff Hill + */ + +#define epicsExportSharedSymbols +#include "osiSock.h" + +enum epicsSocketSystemCallInterruptMechanismQueryInfo + epicsSocketSystemCallInterruptMechanismQuery () +{ + return esscimqi_socketCloseRequired; +} diff --git a/src/libCom/osi/os/default/epicsSocketConvertErrnoToString.cpp b/src/libCom/osi/os/default/epicsSocketConvertErrnoToString.cpp new file mode 100644 index 000000000..be62f3e11 --- /dev/null +++ b/src/libCom/osi/os/default/epicsSocketConvertErrnoToString.cpp @@ -0,0 +1,33 @@ + +/*************************************************************************\ +* Copyright (c) 2002 The University of Chicago, as Operator of Argonne +* National Laboratory. +* Copyright (c) 2002 The Regents of the University of California, as +* Operator of Los Alamos National Laboratory. +* EPICS BASE Versions 3.13.7 +* and higher are distributed subject to a Software License Agreement found +* in file LICENSE that is included with this distribution. +\*************************************************************************/ +/* osdSock.c */ +/* $Id$ */ +/* + * Author: Jeff Hill + * Date: 04-05-94 + * + */ + +#define epicsExportSharedSymbols +#incude "osiSock.h" + +/* + * epicsSocketConvertErrnoToString() + */ +void epicsSocketConvertErrnoToString ( + char * pBuf, unsigned bufSize ) +{ + if ( bufSize ) { + strncpy ( pBuf, strerror ( SOCKERRNO ), bufSize ); + pBuf[bufSize-1] = '\0'; + } +} + diff --git a/src/libCom/osi/os/posix/systemCallIntMech.cpp b/src/libCom/osi/os/posix/systemCallIntMech.cpp new file mode 100644 index 000000000..a02fe8112 --- /dev/null +++ b/src/libCom/osi/os/posix/systemCallIntMech.cpp @@ -0,0 +1,22 @@ + +/*************************************************************************\ +* Copyright (c) 2002 The University of Chicago, as Operator of Argonne +* National Laboratory. +* Copyright (c) 2002 The Regents of the University of California, as +* Operator of Los Alamos National Laboratory. +* EPICS BASE Versions 3.13.7 +* and higher are distributed subject to a Software License Agreement found +* in file LICENSE that is included with this distribution. +\*************************************************************************/ +/* $Id$ */ +/* + * Author: Jeff Hill + */ + +#include "osiSock.h" + +enum epicsSocketSystemCallInterruptMechanismQueryInfo + epicsSocketSystemCallInterruptMechanismQuery () +{ + return esscimqi_socketSigurgRequired; +} diff --git a/src/libCom/osi/os/vxWorks/systemCallIntMech.cpp b/src/libCom/osi/os/vxWorks/systemCallIntMech.cpp new file mode 100644 index 000000000..a57c3b57d --- /dev/null +++ b/src/libCom/osi/os/vxWorks/systemCallIntMech.cpp @@ -0,0 +1,22 @@ + +/*************************************************************************\ +* Copyright (c) 2002 The University of Chicago, as Operator of Argonne +* National Laboratory. +* Copyright (c) 2002 The Regents of the University of California, as +* Operator of Los Alamos National Laboratory. +* EPICS BASE Versions 3.13.7 +* and higher are distributed subject to a Software License Agreement found +* in file LICENSE that is included with this distribution. +\*************************************************************************/ +/* $Id$ */ +/* + * Author: Jeff Hill + */ + +#include "osiSock.h" + +enum epicsSocketSystemCallInterruptMechanismQueryInfo + epicsSocketSystemCallInterruptMechanismQuery () +{ + return esscimqi_socketCloseRequired; +}