From a0db9a2eb21829e8a58a4ff30ebfbff98f000993 Mon Sep 17 00:00:00 2001 From: Jeff Hill Date: Wed, 4 Sep 1996 22:06:24 +0000 Subject: [PATCH] not used --- src/cas/os/vxWorks/vxWorks_depen.c | 659 ---------------------------- src/cas/os/vxWorks/vxWorks_depen.cc | 659 ---------------------------- src/cas/os/vxWorks/vxWorks_depen.h | 256 ----------- 3 files changed, 1574 deletions(-) delete mode 100644 src/cas/os/vxWorks/vxWorks_depen.c delete mode 100644 src/cas/os/vxWorks/vxWorks_depen.cc delete mode 100644 src/cas/os/vxWorks/vxWorks_depen.h diff --git a/src/cas/os/vxWorks/vxWorks_depen.c b/src/cas/os/vxWorks/vxWorks_depen.c deleted file mode 100644 index 1b9adfb74..000000000 --- a/src/cas/os/vxWorks/vxWorks_depen.c +++ /dev/null @@ -1,659 +0,0 @@ - -/* - * - * vxWorks_depen.c - * %W% %G% - * - * vxWorks dependent routines for the CA server - * - * - */ - -#include -#include - -VERSIONID(vxWorks_depenc,"%W% %G%") - -#define MUTEX_SEM_OPTIONS \ -(SEM_Q_PRIORITY | SEM_DELETE_SAFE | SEM_INVERSION_SAFE) - -LOCAL int event_task( - struct event_user *evuser, - void (*init_func)(int arg), - int init_func_arg -); - -LOCAL void osDepenTimerCB(void *pciu); -LOCAL void osDepenSendCB(void *pClient); -int caServerTask(struct rsrv *pRsrv); -LOCAL int caMaxFreeBlockPoll(void); - -size_t caMaxFreeBlock; - -###### no event flush currently (only needed in multi thread env) #### -status = caeqAddFlushEvent (client->evuser, XXXX, client); -assert (status==OK); - - -/* - * caGetElapsedTime() - */ -caStatus caGetElapsedTime(caElapsedTimeVal *pElapsed) -{ - ULONG ticks; - ULONG rate; - - ticks = tickGet(); - rate = sysClkRateGet(); - - pElapsed->tv_sec = ticks * rate; - pElapsed->tv_usec = ((ticks % rate)*CAServerUSecInSec)/rate; - - return S_cas_success; -} - - -/* - * caOutOfMemory() - */ -int caOutOfMemory(void) -{ - int status; - static int pollTaskStarted; - - if(!pollTaskStarted){ - caMaxFreeBlock = memFindMax(); - status = taskSpawn( - MAXFREEBLOCKTASKNAME, - MAXFREEBLOCKTASKPRI, - MAXFREEBLOCKTASKOPT, - MAXFREEBLOCKTASKSTACK, - caMaxFreeBlockPoll, - 0,0,0,0,0,0,0,0,0,0); - if(status>=0){ - pollTaskStarted = TRUE; - } - } - - return (caMaxFreeBlockclient; - caserver *pRsrv = pClient->cc.pRsrv; - struct timeval tv; - - if(pClient->cc.osSpecific.pPutCBAlarm){ - tv.tv_sec = timeOutSec; - tv.tv_usec = 0; - pClient->cc.osSpecific.pPutCBAlarm - = fdmgr_add_timeout( - pRsrv->osSpecific.pfdctx, - &tv, - osDepenTimerCB, - pciu); - if(!pClient->cc.osSpecific.pPutCBAlarm){ - return S_cas_noMemory; - } - } - - return S_cas_success; -} - - -/* - * osDepenTimerCB() - */ -LOCAL void osDepenTimerCB(void *pParam) -{ - casChanInUse *pciu = (casChanInUse *)pParam; - - pciu->client->cc.osSpecific.pPutCBAlarm = NULL; - casPutCBTimer(pciu); -} - - -/* - * casPutCBCancelTimer() - */ -void casPutCBCancelTimer(struct client *pClient) -{ - caserver *pRsrv = pClient->cc.pRsrv; - int status; - - if(pClient->cc.osSpecific.pPutCBAlarm){ - status = fdmgr_clear_timeout( - pRsrv->osSpecific.pfdctx, - pClient->cc.osSpecific.pPutCBAlarm); - assert(status==0); - pClient->cc.osSpecific.pPutCBAlarm = NULL; - } -} - - -/* - * casDisableSocketRecvIOCallback() - */ -caStatus casDisableSocketRecvIOCallback(struct client *pClient) -{ - int status; - - if(pClient->cc.osSpecific.sockRecvIOCallbackEnabled){ - status = fdmgr_clear_callback( - pClient->cc.pRsrv->osSpecific.pfdctx, - pClient->cc.sock, - fdi_read); - assert(status==0); - pClient->cc.osSpecific.sockRecvIOCallbackEnabled = FALSE; - } - return S_cas_success; -} - - -/* - * casEnableSocketRecvIOCallback() - */ -caStatus casEnableSocketRecvIOCallback(struct client *pClient) -{ - caserver *pRsrv = pClient->cc.pRsrv; - int status; - - if(!pClient->cc.osSpecific.sockRecvIOCallbackEnabled){ - status = fdmgr_add_callback( - pRsrv->osSpecific.pfdctx, - pClient->cc.sock, - fdi_read, - pClient->cc.pCB, - pClient); - if(status){ - return S_cas_noMemory; - } - pClient->cc.osSpecific.sockRecvIOCallbackEnabled = TRUE; - } - return S_cas_success; -} - - -/* - * casWaitForIO () - */ -caStatus casWaitForIO (struct rsrv *pRsrv, caTime *pDelay) -{ - struct timeval tv; - - tv.tv_sec = caTime->sec; - tv.tv_usec = caTime->nsec / NSecPerUsec; - status = fdmgr_pend_event(pRsrv->osSpecific.pfdctx, &tv); - if (status) { - return S_cas_internal; - } - return S_cas_success; -} - - -/* - * casArmSocketSendIOCallback() - */ -caStatus casArmSocketSendIOCallback(struct client *pClient) -{ - caserver *pRsrv = pClient->cc.pRsrv; - int status; - - if(!pClient->cc.osSpecific.sockSendIOCallbackEnabled){ - status = fdmgr_add_callback( - pRsrv->osSpecific.pfdctx, - pClient->cc.sock, - fdi_write, - osDepenSendCB, - pClient); - if(status){ - return S_cas_noMemory; - } - pClient->cc.osSpecific.sockSendIOCallbackEnabled = TRUE; - } - return S_cas_success; -} - - -/* - * casCancelSocketSendIOCallback() - */ -caStatus casCancelSocketSendIOCallback(struct client *pClient) -{ - caserver *pRsrv = pClient->cc.pRsrv; - int status; - - if(pClient->cc.osSpecific.sockSendIOCallbackEnabled){ - status = fdmgr_clear_callback( - pRsrv->osSpecific.pfdctx, - pClient->cc.sock, - fdi_write); - assert(status==0); - pClient->cc.osSpecific.sockSendIOCallbackEnabled = FALSE; - } - return S_cas_success; -} - - -/* - * osDepenSendCB() - */ -LOCAL void osDepenSendCB(void *pParam) -{ - struct client *pClient = (struct client *) pParam; - - pClient->cc.osSpecific.sockSendIOCallbackEnabled = FALSE; - (*pClient->sendHandler)(pClient); -} - - -/* - * casOSSpecificDelete() - */ -void casOSSpecificDelete(struct rsrv *pRsrv) -{ - int status; - - if(taskIdVerify(pRsrv->osSpecific.selectTask) == OK){ - taskwdRemove(taskDelete(pRsrv->osSpecific.selectTask)); - taskDelete(pRsrv->osSpecific.selectTask); - } - if(pRsrv->osSpecific.clientQLock){ - status = semDelete(pRsrv->osSpecific.clientQLock); - assert(status==OK); - } - if(pRsrv->osSpecific.freeChanQLock){ - status = semDelete(pRsrv->osSpecific.freeChanQLock); - assert(status==OK); - } - if(pRsrv->osSpecific.freeEventQLock){ - status = semDelete(pRsrv->osSpecific.freeEventQLock); - assert(status==OK); - } - if(pRsrv->osSpecific.pvQLock){ - status = semDelete(pRsrv->osSpecific.pvQLock); - assert(status==OK); - } - if(pRsrv->osSpecific.pfdctx){ - status = fdmgr_delete(pRsrv->osSpecific.pfdctx); - assert(status==OK); - } -} - - -/* - * casOSSpecificInit() - */ -caStatus casOSSpecificInit(struct rsrv *pRsrv) -{ - pRsrv->osSpecific.clientQLock = semMCreate(MUTEX_SEM_OPTIONS); - if(!pRsrv->osSpecific.clientQLock){ - return S_cas_noMemory; - } - pRsrv->osSpecific.freeChanQLock = semMCreate(MUTEX_SEM_OPTIONS); - if(!pRsrv->osSpecific.freeChanQLock){ - casOSSpecificDelete(pRsrv); - return S_cas_noMemory; - } - pRsrv->osSpecific.freeEventQLock = semMCreate(MUTEX_SEM_OPTIONS); - if(!pRsrv->osSpecific.freeEventQLock){ - casOSSpecificDelete(pRsrv); - return S_cas_noMemory; - } - pRsrv->osSpecific.pvQLock = semMCreate(MUTEX_SEM_OPTIONS); - if(!pRsrv->osSpecific.pvQLock){ - casOSSpecificDelete(pRsrv); - return S_cas_noMemory; - } - pRsrv->osSpecific.pfdctx = fdmgr_init(); - if(!pRsrv->osSpecific.pfdctx){ - casOSSpecificDelete(pRsrv); - return S_cas_noMemory; - } - - return S_cas_success; -} - - -/* - * casOSSpecificStartServer() - */ -caStatus casOSSpecificStartServer(caserver *pRsrv) -{ - int status; - - status = fdmgr_add_callback( - pRsrv->osSpecific.pfdctx, - pRsrv->server_sock, - fdi_read, - rsrv_connect, - pRsrv); - if(status < 0){ - casOSSpecificDelete(pRsrv); - return S_cas_noMemory; - } - - status = taskSpawn( - REQ_SRVR_NAME, - REQ_SRVR_PRI, - REQ_SRVR_OPT, - RSP_SRVR_STACK, - caServerTask, - (int)pRsrv, - 0,0,0,0,0,0,0,0,0); - if(status == ERROR){ - casOSSpecificDelete(pRsrv); - return S_cas_noMemory; - } - pRsrv->osSpecific.selectTask = status; - - - return S_cas_success; -} - - -/* - * caServerTask() - */ -int caServerTask(caserver *pRsrv) -{ - struct timeval tv; - caTime delay; - struct client *pClient; - int nchars; - int status; - - taskwdInsert((int)taskIdCurrent,NULL,NULL); - - while(TRUE){ - - delay.sec = 100; - delay.usec = 0; - status = caServerProcess (pRsrv, &delay); - assert (status == S_cas_success); - } -} - - -/* - * casSchedualBeacon() - */ -void casSchedualBeacon(struct rsrv *pRsrv) -{ - fdmgrAlarm *tmp; - struct timeval tv; - - tv.tv_sec = pRsrv->delayToNextBeacon.tv_sec; - tv.tv_usec = pRsrv->delayToNextBeacon.tv_usec; - tmp = fdmgr_add_timeout( - pRsrv->osSpecific.pfdctx, - &tv, - casSendBeacon, - pRsrv); - if(!tmp){ - ca_printf("CAS: Unable to keep beacon going\n"); - } -} - - -/* - * casOSSpecificClientInit() - */ -caStatus casOSSpecificClientInit(struct client *client) -{ - client->cc.osSpecific.eventQLock = semMCreate(MUTEX_SEM_OPTIONS); - if(!client->cc.osSpecific.eventQLock){ - return S_cas_noMemory; - } - client->cc.osSpecific.chanQLock = semMCreate(MUTEX_SEM_OPTIONS); - if(!client->cc.osSpecific.chanQLock){ - casOSSpecificClientDelete(client); - return S_cas_noMemory; - } - client->cc.osSpecific.putNotifyLock = semMCreate(MUTEX_SEM_OPTIONS); - if(!client->cc.osSpecific.putNotifyLock){ - casOSSpecificClientDelete(client); - return S_cas_noMemory; - } - client->cc.osSpecific.lock = semMCreate(MUTEX_SEM_OPTIONS); - if(!client->cc.osSpecific.lock){ - casOSSpecificClientDelete(client); - return S_cas_noMemory; - } - client->cc.osSpecific.accessRightsQLock = semMCreate(MUTEX_SEM_OPTIONS); - if(!client->cc.osSpecific.accessRightsQLock){ - casOSSpecificClientDelete(client); - return S_cas_noMemory; - } - return S_cas_success; -} - - -/* - * casOSSpecificClientDelete() - */ -void casOSSpecificClientDelete(struct client *client) -{ - int status; - - if(client->cc.osSpecific.eventQLock){ - status = semDelete(client->cc.osSpecific.eventQLock); - assert(status==OK); - } - if(client->cc.osSpecific.chanQLock){ - status = semDelete(client->cc.osSpecific.chanQLock); - assert(status==OK); - } - if(client->cc.osSpecific.putNotifyLock){ - status = semDelete(client->cc.osSpecific.putNotifyLock); - assert(status==OK); - } - if(client->cc.osSpecific.lock){ - status = semDelete(client->cc.osSpecific.lock); - assert(status==OK); - } - if(client->cc.osSpecific.accessRightsQLock){ - status = semDelete(client->cc.osSpecific.accessRightsQLock); - assert(status==OK); - } -} - - -/* - * caeqOSSpecificInit() - */ -caStatus caeqOSSpecificInit(caEventUser *evuser) -{ - evuser->osSpecific.lock = semMCreate(MUTEX_SEM_OPTIONS); - if(!evuser->osSpecific.lock){ - return S_cas_noMemory; - } - - evuser->osSpecific.ppendsem = semBCreate(SEM_Q_PRIORITY, SEM_EMPTY); - if(!evuser->osSpecific.ppendsem){ - semDelete(evuser->osSpecific.lock); - return S_cas_noMemory; - } - return S_cas_success; -} - - -/* - * caeqOSSpecificDelete() - */ -void caeqOSSpecificDelete(caEventUser *evuser) -{ - int status; - - if(taskIdVerify(evuser->osSpecific.taskid)==OK){ - taskwdRemove(evuser->osSpecific.taskid); - taskDelete(evuser->osSpecific.taskid); - } - status = semDelete(evuser->osSpecific.lock); - assert(status == OK); - status = semDelete(evuser->osSpecific.ppendsem); - assert(status == OK); -} - - -/* - * caeqOSSpecificPVInit () - */ -caStatus caeqOSSpecificPVInit (casPVInUse *pPV) -{ - pPV->osSpecific.lock = semMCreate(MUTEX_SEM_OPTIONS); - if (!pPV->osSpecific.lock) { - return S_cas_noMemory; - } - return S_cas_success; -} - - -/* - * caeqOSSpecificPVDelete () - */ -void caeqOSSpecificPVDelete (casPVInUse *pPV) -{ - int status; - - status = semDelete (pPV->osSpecific.lock); - assert (status == OK); -} - - -/* - * caeqOSSpecificEventNotify() - */ -void caeqOSSpecificEventNotify(caEventUser *evuser) -{ - int status; - - status = semGive(evuser->osSpecific.ppendsem); - assert(status == OK); -} - - - -/* - * caeqStartEvents() - */ -int caeqStartEvents( -struct event_user *evuser, -char *taskname, /* defaulted if NULL */ -void (*init_func)(), -int init_func_arg, -int priority_offset -) -{ - int status; - int taskpri; - - /* only one ca_pend_event thread may be started for each evuser ! */ - while(!vxTas(&evuser->osSpecific.pendlck)) - return ERROR; - - status = taskPriorityGet(taskIdSelf(), &taskpri); - if(status == ERROR){ - return ERROR; - } - - taskpri += priority_offset; - - - if(!taskname){ - taskname = EVENT_PEND_NAME; - } - - status = taskSpawn( - taskname, - taskpri, - EVENT_PEND_OPT, - EVENT_PEND_STACK, - event_task, - (int)evuser, - (int)init_func, - (int)init_func_arg, - 0,0,0,0,0,0,0); - if(status == ERROR){ - return ERROR; - } - - evuser->osSpecific.taskid = status; - - return OK; -} - - - -/* - * EVENT_TASK() - */ -LOCAL int event_task( -struct event_user *evuser, -void (*init_func)(int init_func_arg), -int init_func_arg -) -{ - int status; - - taskwdInsert((int)taskIdCurrent,NULL,NULL); - - /* init hook */ - if(init_func){ - (*init_func)(init_func_arg); - } - - /* - * No need to lock getix as I only allow one thread to call this - * routine at a time - */ - while(TRUE){ - caeqEventProcess(evuser); - status = semTake(evuser->osSpecific.ppendsem, WAIT_FOREVER); - assert(status == OK); - } -} - - -/* - * caeqOSSpecificClose() - */ -void caeqOSSpecificClose(caEventUser *pEvUser) -{ - return; -} - - -/* - * asciiIPAddr - */ -void asciiIPAddr (struct in_addr addr, char *pBuf, unsigned bufSize) -{ - char pName[INET_ADDR_LEN]; - - inet_ntoa_b (addr, pName); - - strncpy (pBuf, pName, bufSize); - pBuf[bufSize-1] = '\0'; -} - diff --git a/src/cas/os/vxWorks/vxWorks_depen.cc b/src/cas/os/vxWorks/vxWorks_depen.cc deleted file mode 100644 index 61355d49c..000000000 --- a/src/cas/os/vxWorks/vxWorks_depen.cc +++ /dev/null @@ -1,659 +0,0 @@ - -/* - * - * vxWorks_depen.c - * %W% %G% - * - * vxWorks dependent routines for the CA server - * - * - */ - -#include -#include - -VERSIONID(vxWorks_depenc,"%W% %G%") - -#define MUTEX_SEM_OPTIONS \ -(SEM_Q_PRIORITY | SEM_DELETE_SAFE | SEM_INVERSION_SAFE) - -LOCAL int event_task( - struct event_user *evuser, - void (*init_func)(int arg), - int init_func_arg -); - -LOCAL void osDepenTimerCB(void *pciu); -LOCAL void osDepenSendCB(void *pClient); -int caServerTask(struct rsrv *pRsrv); -LOCAL int caMaxFreeBlockPoll(void); - -size_t caMaxFreeBlock; - -###### no event flush currently (only needed in multi thread env) #### -status = caeqAddFlushEvent (client->evuser, XXXX, client); -assert (status==OK); - - -/* - * caGetElapsedTime() - */ -caStatus caGetElapsedTime(caElapsedTimeVal *pElapsed) -{ - ULONG ticks; - ULONG rate; - - ticks = tickGet(); - rate = sysClkRateGet(); - - pElapsed->tv_sec = ticks * rate; - pElapsed->tv_usec = ((ticks % rate)*CAServerUSecInSec)/rate; - - return S_cas_success; -} - - -/* - * caOutOfMemory() - */ -int caOutOfMemory(void) -{ - int status; - static int pollTaskStarted; - - if(!pollTaskStarted){ - caMaxFreeBlock = memFindMax(); - status = taskSpawn( - MAXFREEBLOCKTASKNAME, - MAXFREEBLOCKTASKPRI, - MAXFREEBLOCKTASKOPT, - MAXFREEBLOCKTASKSTACK, - caMaxFreeBlockPoll, - 0,0,0,0,0,0,0,0,0,0); - if(status>=0){ - pollTaskStarted = TRUE; - } - } - - return (caMaxFreeBlockclient; - caserver *pRsrv = pClient->cc.pRsrv; - struct timeval tv; - - if(pClient->cc.osSpecific.pPutCBAlarm){ - tv.tv_sec = timeOutSec; - tv.tv_usec = 0; - pClient->cc.osSpecific.pPutCBAlarm - = fdmgr_add_timeout( - pRsrv->osSpecific.pfdctx, - &tv, - osDepenTimerCB, - pciu); - if(!pClient->cc.osSpecific.pPutCBAlarm){ - return S_cas_noMemory; - } - } - - return S_cas_success; -} - - -/* - * osDepenTimerCB() - */ -LOCAL void osDepenTimerCB(void *pParam) -{ - casChanInUse *pciu = (casChanInUse *)pParam; - - pciu->client->cc.osSpecific.pPutCBAlarm = NULL; - casPutCBTimer(pciu); -} - - -/* - * casPutCBCancelTimer() - */ -void casPutCBCancelTimer(struct client *pClient) -{ - caserver *pRsrv = pClient->cc.pRsrv; - int status; - - if(pClient->cc.osSpecific.pPutCBAlarm){ - status = fdmgr_clear_timeout( - pRsrv->osSpecific.pfdctx, - pClient->cc.osSpecific.pPutCBAlarm); - assert(status==0); - pClient->cc.osSpecific.pPutCBAlarm = NULL; - } -} - - -/* - * casDisableSocketRecvIOCallback() - */ -caStatus casDisableSocketRecvIOCallback(struct client *pClient) -{ - int status; - - if(pClient->cc.osSpecific.sockRecvIOCallbackEnabled){ - status = fdmgr_clear_callback( - pClient->cc.pRsrv->osSpecific.pfdctx, - pClient->cc.sock, - fdi_read); - assert(status==0); - pClient->cc.osSpecific.sockRecvIOCallbackEnabled = FALSE; - } - return S_cas_success; -} - - -/* - * casEnableSocketRecvIOCallback() - */ -caStatus casEnableSocketRecvIOCallback(struct client *pClient) -{ - caserver *pRsrv = pClient->cc.pRsrv; - int status; - - if(!pClient->cc.osSpecific.sockRecvIOCallbackEnabled){ - status = fdmgr_add_callback( - pRsrv->osSpecific.pfdctx, - pClient->cc.sock, - fdi_read, - pClient->cc.pCB, - pClient); - if(status){ - return S_cas_noMemory; - } - pClient->cc.osSpecific.sockRecvIOCallbackEnabled = TRUE; - } - return S_cas_success; -} - - -/* - * casWaitForIO () - */ -caStatus casWaitForIO (struct rsrv *pRsrv, caTime *pDelay) -{ - struct timeval tv; - - tv.tv_sec = caTime->sec; - tv.tv_usec = caTime->nsec / NSecPerUsec; - status = fdmgr_pend_event(pRsrv->osSpecific.pfdctx, &tv); - if (status) { - return S_cas_internal; - } - return S_cas_success; -} - - -/* - * casArmSocketSendIOCallback() - */ -caStatus casArmSocketSendIOCallback(struct client *pClient) -{ - caserver *pRsrv = pClient->cc.pRsrv; - int status; - - if(!pClient->cc.osSpecific.sockSendIOCallbackEnabled){ - status = fdmgr_add_callback( - pRsrv->osSpecific.pfdctx, - pClient->cc.sock, - fdi_write, - osDepenSendCB, - pClient); - if(status){ - return S_cas_noMemory; - } - pClient->cc.osSpecific.sockSendIOCallbackEnabled = TRUE; - } - return S_cas_success; -} - - -/* - * casCancelSocketSendIOCallback() - */ -caStatus casCancelSocketSendIOCallback(struct client *pClient) -{ - caserver *pRsrv = pClient->cc.pRsrv; - int status; - - if(pClient->cc.osSpecific.sockSendIOCallbackEnabled){ - status = fdmgr_clear_callback( - pRsrv->osSpecific.pfdctx, - pClient->cc.sock, - fdi_write); - assert(status==0); - pClient->cc.osSpecific.sockSendIOCallbackEnabled = FALSE; - } - return S_cas_success; -} - - -/* - * osDepenSendCB() - */ -LOCAL void osDepenSendCB(void *pParam) -{ - struct client *pClient = (struct client *) pParam; - - pClient->cc.osSpecific.sockSendIOCallbackEnabled = FALSE; - (*pClient->sendHandler)(pClient); -} - - -/* - * casOSSpecificDelete() - */ -void casOSSpecificDelete(struct rsrv *pRsrv) -{ - int status; - - if(taskIdVerify(pRsrv->osSpecific.selectTask) == OK){ - taskwdRemove(taskDelete(pRsrv->osSpecific.selectTask)); - taskDelete(pRsrv->osSpecific.selectTask); - } - if(pRsrv->osSpecific.clientQLock){ - status = semDelete(pRsrv->osSpecific.clientQLock); - assert(status==OK); - } - if(pRsrv->osSpecific.freeChanQLock){ - status = semDelete(pRsrv->osSpecific.freeChanQLock); - assert(status==OK); - } - if(pRsrv->osSpecific.freeEventQLock){ - status = semDelete(pRsrv->osSpecific.freeEventQLock); - assert(status==OK); - } - if(pRsrv->osSpecific.pvQLock){ - status = semDelete(pRsrv->osSpecific.pvQLock); - assert(status==OK); - } - if(pRsrv->osSpecific.pfdctx){ - status = fdmgr_delete(pRsrv->osSpecific.pfdctx); - assert(status==OK); - } -} - - -/* - * casOSSpecificInit() - */ -caStatus casOSSpecificInit(struct rsrv *pRsrv) -{ - pRsrv->osSpecific.clientQLock = semMCreate(MUTEX_SEM_OPTIONS); - if(!pRsrv->osSpecific.clientQLock){ - return S_cas_noMemory; - } - pRsrv->osSpecific.freeChanQLock = semMCreate(MUTEX_SEM_OPTIONS); - if(!pRsrv->osSpecific.freeChanQLock){ - casOSSpecificDelete(pRsrv); - return S_cas_noMemory; - } - pRsrv->osSpecific.freeEventQLock = semMCreate(MUTEX_SEM_OPTIONS); - if(!pRsrv->osSpecific.freeEventQLock){ - casOSSpecificDelete(pRsrv); - return S_cas_noMemory; - } - pRsrv->osSpecific.pvQLock = semMCreate(MUTEX_SEM_OPTIONS); - if(!pRsrv->osSpecific.pvQLock){ - casOSSpecificDelete(pRsrv); - return S_cas_noMemory; - } - pRsrv->osSpecific.pfdctx = fdmgr_init(); - if(!pRsrv->osSpecific.pfdctx){ - casOSSpecificDelete(pRsrv); - return S_cas_noMemory; - } - - return S_cas_success; -} - - -/* - * casOSSpecificStartServer() - */ -caStatus casOSSpecificStartServer(caserver *pRsrv) -{ - int status; - - status = fdmgr_add_callback( - pRsrv->osSpecific.pfdctx, - pRsrv->server_sock, - fdi_read, - rsrv_connect, - pRsrv); - if(status < 0){ - casOSSpecificDelete(pRsrv); - return S_cas_noMemory; - } - - status = taskSpawn( - REQ_SRVR_NAME, - REQ_SRVR_PRI, - REQ_SRVR_OPT, - RSP_SRVR_STACK, - caServerTask, - (int)pRsrv, - 0,0,0,0,0,0,0,0,0); - if(status == ERROR){ - casOSSpecificDelete(pRsrv); - return S_cas_noMemory; - } - pRsrv->osSpecific.selectTask = status; - - - return S_cas_success; -} - - -/* - * caServerTask() - */ -int caServerTask(caserver *pRsrv) -{ - struct timeval tv; - caTime delay; - struct client *pClient; - int nchars; - int status; - - taskwdInsert((int)taskIdCurrent,NULL,NULL); - - while(TRUE){ - - delay.sec = 100; - delay.usec = 0; - status = caServerProcess (pRsrv, &delay); - assert (status == S_cas_success); - } -} - - -/* - * casSchedualBeacon() - */ -void casSchedualBeacon(struct rsrv *pRsrv) -{ - fdmgrAlarm *tmp; - struct timeval tv; - - tv.tv_sec = pRsrv->delayToNextBeacon.tv_sec; - tv.tv_usec = pRsrv->delayToNextBeacon.tv_usec; - tmp = fdmgr_add_timeout( - pRsrv->osSpecific.pfdctx, - &tv, - casSendBeacon, - pRsrv); - if(!tmp){ - ca_printf("CAS: Unable to keep beacon going\n"); - } -} - - -/* - * casOSSpecificClientInit() - */ -caStatus casOSSpecificClientInit(struct client *client) -{ - client->cc.osSpecific.eventQLock = semMCreate(MUTEX_SEM_OPTIONS); - if(!client->cc.osSpecific.eventQLock){ - return S_cas_noMemory; - } - client->cc.osSpecific.chanQLock = semMCreate(MUTEX_SEM_OPTIONS); - if(!client->cc.osSpecific.chanQLock){ - casOSSpecificClientDelete(client); - return S_cas_noMemory; - } - client->cc.osSpecific.putNotifyLock = semMCreate(MUTEX_SEM_OPTIONS); - if(!client->cc.osSpecific.putNotifyLock){ - casOSSpecificClientDelete(client); - return S_cas_noMemory; - } - client->cc.osSpecific.lock = semMCreate(MUTEX_SEM_OPTIONS); - if(!client->cc.osSpecific.lock){ - casOSSpecificClientDelete(client); - return S_cas_noMemory; - } - client->cc.osSpecific.accessRightsQLock = semMCreate(MUTEX_SEM_OPTIONS); - if(!client->cc.osSpecific.accessRightsQLock){ - casOSSpecificClientDelete(client); - return S_cas_noMemory; - } - return S_cas_success; -} - - -/* - * casOSSpecificClientDelete() - */ -void casOSSpecificClientDelete(struct client *client) -{ - int status; - - if(client->cc.osSpecific.eventQLock){ - status = semDelete(client->cc.osSpecific.eventQLock); - assert(status==OK); - } - if(client->cc.osSpecific.chanQLock){ - status = semDelete(client->cc.osSpecific.chanQLock); - assert(status==OK); - } - if(client->cc.osSpecific.putNotifyLock){ - status = semDelete(client->cc.osSpecific.putNotifyLock); - assert(status==OK); - } - if(client->cc.osSpecific.lock){ - status = semDelete(client->cc.osSpecific.lock); - assert(status==OK); - } - if(client->cc.osSpecific.accessRightsQLock){ - status = semDelete(client->cc.osSpecific.accessRightsQLock); - assert(status==OK); - } -} - - -/* - * caeqOSSpecificInit() - */ -caStatus caeqOSSpecificInit(caEventUser *evuser) -{ - evuser->osSpecific.lock = semMCreate(MUTEX_SEM_OPTIONS); - if(!evuser->osSpecific.lock){ - return S_cas_noMemory; - } - - evuser->osSpecific.ppendsem = semBCreate(SEM_Q_PRIORITY, SEM_EMPTY); - if(!evuser->osSpecific.ppendsem){ - semDelete(evuser->osSpecific.lock); - return S_cas_noMemory; - } - return S_cas_success; -} - - -/* - * caeqOSSpecificDelete() - */ -void caeqOSSpecificDelete(caEventUser *evuser) -{ - int status; - - if(taskIdVerify(evuser->osSpecific.taskid)==OK){ - taskwdRemove(evuser->osSpecific.taskid); - taskDelete(evuser->osSpecific.taskid); - } - status = semDelete(evuser->osSpecific.lock); - assert(status == OK); - status = semDelete(evuser->osSpecific.ppendsem); - assert(status == OK); -} - - -/* - * caeqOSSpecificPVInit () - */ -caStatus caeqOSSpecificPVInit (casPVInUse *pPV) -{ - pPV->osSpecific.lock = semMCreate(MUTEX_SEM_OPTIONS); - if (!pPV->osSpecific.lock) { - return S_cas_noMemory; - } - return S_cas_success; -} - - -/* - * caeqOSSpecificPVDelete () - */ -void caeqOSSpecificPVDelete (casPVInUse *pPV) -{ - int status; - - status = semDelete (pPV->osSpecific.lock); - assert (status == OK); -} - - -/* - * caeqOSSpecificEventNotify() - */ -void caeqOSSpecificEventNotify(caEventUser *evuser) -{ - int status; - - status = semGive(evuser->osSpecific.ppendsem); - assert(status == OK); -} - - - -/* - * caeqStartEvents() - */ -int caeqStartEvents( -struct event_user *evuser, -char *taskname, /* defaulted if NULL */ -void (*init_func)(), -int init_func_arg, -int priority_offset -) -{ - int status; - int taskpri; - - /* only one ca_pend_event thread may be started for each evuser ! */ - while(!vxTas(&evuser->osSpecific.pendlck)) - return ERROR; - - status = taskPriorityGet(taskIdSelf(), &taskpri); - if(status == ERROR){ - return ERROR; - } - - taskpri += priority_offset; - - - if(!taskname){ - taskname = EVENT_PEND_NAME; - } - - status = taskSpawn( - taskname, - taskpri, - EVENT_PEND_OPT, - EVENT_PEND_STACK, - event_task, - (int)evuser, - (int)init_func, - (int)init_func_arg, - 0,0,0,0,0,0,0); - if(status == ERROR){ - return ERROR; - } - - evuser->osSpecific.taskid = status; - - return OK; -} - - - -/* - * EVENT_TASK() - */ -LOCAL int event_task( -struct event_user *evuser, -void (*init_func)(int init_func_arg), -int init_func_arg -) -{ - int status; - - taskwdInsert((int)taskIdCurrent,NULL,NULL); - - /* init hook */ - if(init_func){ - (*init_func)(init_func_arg); - } - - /* - * No need to lock getix as I only allow one thread to call this - * routine at a time - */ - while(TRUE){ - caeqEventProcess(evuser); - status = semTake(evuser->osSpecific.ppendsem, WAIT_FOREVER); - assert(status == OK); - } -} - - -/* - * caeqOSSpecificClose() - */ -void caeqOSSpecificClose(caEventUser *pEvUser) -{ - return; -} - - -/* - * asciiIPAddr - */ -void asciiIPAddr (struct in_addr addr, char *pBuf, unsigned bufSize) -{ - char pName[INET_ADDR_LEN]; - - inet_ntoa_b (addr, pName); - - strncpy (pBuf, pName, bufSize); - pBuf[bufSize-1] = '\0'; -} - diff --git a/src/cas/os/vxWorks/vxWorks_depen.h b/src/cas/os/vxWorks/vxWorks_depen.h deleted file mode 100644 index e1d187630..000000000 --- a/src/cas/os/vxWorks/vxWorks_depen.h +++ /dev/null @@ -1,256 +0,0 @@ - - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include /* for sendto() setsockopt() etc */ -#include -#include - -/* - * EPICS on vxWorks - */ -#include -#include -#include - -extern size_t caMaxFreeBlock; -#define MAXFREEBLOCKPOLL 5 /* sec */ -#define MAXFREEBLOCKTASKNAME "caMemPoll" -#define MAXFREEBLOCKTASKPRI 255 -#define MAXFREEBLOCKTASKOPT (VX_FP_TASK) -#define MAXFREEBLOCKTASKSTACK 4095 - -/* - * per server locks - * ================ - */ -#define LOCK_CLIENTQ(PRSRV) \ -{ \ - int status; \ - status = semTake((PRSRV)->osSpecific.clientQLock, WAIT_FOREVER); \ - assert(status==OK); \ -} - -#define UNLOCK_CLIENTQ(PRSRV) \ -{ \ - int status; \ - status = semGive((PRSRV)->osSpecific.clientQLock); \ - assert(status==OK); \ -} - -#define LOCK_FREE_CHAN_Q(PRSRV) \ -{\ - int status;\ - status = semTake((PRSRV)->osSpecific.freeChanQLock, WAIT_FOREVER);\ - assert(status==OK);\ -} - -#define UNLOCK_FREE_CHAN_Q(PRSRV) \ -{ \ - int status;\ - status = semGive((PRSRV)->osSpecific.freeChanQLock);\ - assert(status==OK);\ -} - -#define LOCK_FREE_EVENT_Q(PRSRV) \ -{\ - int status;\ - status = semTake((PRSRV)->osSpecific.freeEventQLock, WAIT_FOREVER);\ - assert(status==OK);\ -} - -#define UNLOCK_FREE_EVENT_Q(PRSRV) \ -{ \ - int status;\ - status = semGive((PRSRV)->osSpecific.freeEventQLock);\ - assert(status==OK);\ -} - -#define LOCK_PVQ(PRSRV) \ -{ \ - int status; \ - status = semTake((PRSRV)->osSpecific.pvQLock, WAIT_FOREVER); \ - assert(status==OK); \ -} - -#define UNLOCK_PVQ(PRSRV) \ -{ \ - int status;\ - status = semGive((PRSRV)->osSpecific.pvQLock);\ - assert(status==OK);\ -} - -/* - * per client locks - * ================ - */ -#define SEND_LOCK(CLIENT) \ -{\ - int status;\ - status = semTake((CLIENT)->cc.osSpecific.lock, WAIT_FOREVER);\ - assert(status==OK);\ -} - -#define SEND_UNLOCK(CLIENT) \ -{ \ - int status;\ - status = semGive((CLIENT)->cc.osSpecific.lock);\ - assert(status==OK);\ -} - -#define LOCK_CHAN_Q(PCLIENT) \ -{\ - int status;\ - status = semTake((PCLIENT)->cc.osSpecific.chanQLock, WAIT_FOREVER);\ - assert(status==OK);\ -} - -#define UNLOCK_CHAN_Q(PCLIENT) \ -{ \ - int status;\ - status = semGive((PCLIENT)->cc.osSpecific.chanQLock);\ - assert(status==OK);\ -} - -#define LOCK_EVENT_Q(PCLIENT) \ -{\ - int status;\ - status = semTake((PCLIENT)->cc.osSpecific.eventQLock, WAIT_FOREVER);\ - assert(status==OK);\ -} - -#define UNLOCK_EVENT_Q(PCLIENT) \ -{ \ - int status;\ - status = semGive((PCLIENT)->cc.osSpecific.eventQLock);\ - assert(status==OK);\ -} - -#define LOCK_PUT_NOTIFY(PCLIENT) \ -{\ - int status;\ - status = semTake((PCLIENT)->cc.osSpecific.putNotifyLock, WAIT_FOREVER);\ - assert(status==OK);\ -} - -#define UNLOCK_PUT_NOTIFY(PCLIENT) \ -{ \ - int status;\ - status = semGive((PCLIENT)->cc.osSpecific.putNotifyLock);\ - assert(status==OK);\ -} - -#define LOCK_ACCESS_RIGHTS_Q(PCLIENT) \ -{\ - int status;\ - status = semTake((PCLIENT)->cc.osSpecific.accessRightsQLock, \ - WAIT_FOREVER);\ - assert(status==OK);\ -} - -#define UNLOCK_ACCESS_RIGHTS_Q(PCLIENT) \ -{ \ - int status;\ - status = semGive((PCLIENT)->cc.osSpecific.accessRightsQLock);\ - assert(status==OK);\ -} - - -/* - * event system locks - * ================== - */ -#define CA_EVENT_LOCK(PEVUSER) \ -{ \ - int status;\ - status = semTake((PEVUSER)->osSpecific.lock, WAIT_FOREVER);\ - assert(status==OK);\ -} -#define CA_EVENT_UNLOCK(PEVUSER) \ -{ \ - int status;\ - status = semGive((PEVUSER)->osSpecific.lock);\ - assert(status==OK);\ -} - -#define LOCK_PV(PPV) \ -{ \ - int status;\ - status = semTake((PPV)->osSpecific.lock, WAIT_FOREVER);\ - assert(status==OK);\ -} - -#define UNLOCK_PV(PPV) \ -{ \ - int status;\ - status = semGive((PPV)->osSpecific.lock);\ - assert(status==OK);\ -} - -/* - * vxWorks specific addition to event_user struct - */ -typedef struct { - SEM_ID lock; - SEM_ID ppendsem; - int taskid; - char pendlck; -}caeqOsSpecific; - -typedef struct { - SEM_ID lock; -}caPVOsSpecific; - - -/* - * vxWorks specific addition to rsrv struct - */ -typedef struct { - fdctx *pfdctx; - SEM_ID clientQLock; - SEM_ID pvQLock; - SEM_ID freeChanQLock; - SEM_ID freeEventQLock; - int selectTask; -}rsrvOsSpecific; - -/* - * vxWorks specific addition to client struct - */ -typedef struct { - SEM_ID lock; - SEM_ID putNotifyLock; - SEM_ID chanQLock; - SEM_ID eventQLock; - SEM_ID accessRightsQLock; - fdmgrAlarm *pPutCBAlarm; - unsigned sockSendIOCallbackEnabled:1; - unsigned sockRecvIOCallbackEnabled:1; -}clientOsSpecific; - -typedef int SOCKET; - -#define SOCKERRNO errno - -#define socket_close(S) close(S) -/* vxWorks still has brain dead func proto for ioctl() */ -#define socket_ioctl(A,B,C) ioctl(A,B,(int)C) - -/* leave task around for debugging if we fail */ -#define abort(A) taskSuspend(0) - - - -