From 220f428e42379a7a33617f0f7bc26cd78bb986a0 Mon Sep 17 00:00:00 2001 From: Jeff Hill Date: Tue, 16 Jun 1998 01:41:31 +0000 Subject: [PATCH] installed --- src/libCom/os/vxWorks/bsdSockResource.c | 88 +++++++++++++++++++++++++ src/libCom/os/vxWorks/osiSleep.c | 23 +++++++ 2 files changed, 111 insertions(+) create mode 100644 src/libCom/os/vxWorks/bsdSockResource.c create mode 100644 src/libCom/os/vxWorks/osiSleep.c diff --git a/src/libCom/os/vxWorks/bsdSockResource.c b/src/libCom/os/vxWorks/bsdSockResource.c new file mode 100644 index 000000000..5a867201e --- /dev/null +++ b/src/libCom/os/vxWorks/bsdSockResource.c @@ -0,0 +1,88 @@ + +#include +#include + +#ifndef vxWorks +#error this is a vxWorks specific source code +#endif + +#include +#include + +#define epicsExportSharedSymbols +#include "bsdSocketResource.h" + +int bsdSockAttach() +{ + return 1; +} + +void bsdSockRelease() +{ +} + + +/* + * ipAddrToA() + * (convert IP address to ASCII host name) + */ +void epicsShareAPI ipAddrToA + (const struct sockaddr_in *paddr, char *pBuf, unsigned bufSize) +{ + const int maxPortDigits = 5u; + char name[max(INET_ADDR_LEN,MAXHOSTNAMELEN)+1]; + int status; + + if (bufSize<1) { + return; + } + + if (paddr->sin_family!=AF_INET) { + strncpy(pBuf, "", bufSize-1); + /* + * force null termination + */ + pBuf[bufSize-1] = '\0'; + } + else { + status = hostGetByAddr ((int)paddr->sin_addr.s_addr, name); + if (status!=OK) { + inet_ntoa_b (paddr->sin_addr, name); + } + + /* + * allow space for the port number + */ + if (bufSize>maxPortDigits+strlen(name)) { + sprintf (pBuf, "%.*s:%u", ((int)bufSize)-maxPortDigits-1, + name, ntohs(paddr->sin_port)); + } + else { + sprintf (pBuf, "%.*s", ((int)bufSize)-1, name); + } + } +} + +/* + * hostToIPAddr () + */ +epicsShareFunc int epicsShareAPI hostToIPAddr + (const char *pHostName, struct in_addr *pIPA) +{ + int addr; + + addr = hostGetByName ((char *)pHostName); + if (addr==ERROR) { + /* + * return indicating an error + */ + return -1; + } + + pIPA->s_addr = (unsigned long) addr; + + /* + * success + */ + return 0; +} \ No newline at end of file diff --git a/src/libCom/os/vxWorks/osiSleep.c b/src/libCom/os/vxWorks/osiSleep.c new file mode 100644 index 000000000..5360d105e --- /dev/null +++ b/src/libCom/os/vxWorks/osiSleep.c @@ -0,0 +1,23 @@ + +#include +#include + +#define epicsExportSharedSymbols +#include "epicsAssert.h" +#include "osiSleep.h" + +epicsShareFunc void epicsShareAPI osiSleep (unsigned sec, unsigned uSec) +{ + ULONG ticks; + int status; + + ticks = (uSec*sysClkRateGet())/1000000; + ticks += sec*sysClkRateGet(); + + if (ticks==0) { + ticks = 1; + } + + status = taskDelay (ticks); + assert (status==OK); +} \ No newline at end of file