#include <afsconfig.h>
#include <afs/param.h>
+#include <roken.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#ifdef AFS_NT40_ENV
-#include <winsock2.h>
-#include <malloc.h>
-extern void lwp_abort(void);
-#else
-#include <unistd.h> /* select() prototype */
-#include <sys/types.h> /* fd_set on older platforms */
-#include <sys/time.h> /* struct timeval, select() prototype */
-#ifndef FD_SET
-# include <sys/select.h> /* fd_set on newer platforms */
-#endif
-#include <sys/file.h>
-#endif /* AFS_NT40_ENV */
-#include "lwp.h"
-#include "timer.h"
-#include <signal.h>
-#include <errno.h>
-#ifdef AFS_SUN5_ENV
-#include <fcntl.h>
+#ifdef HAVE_SYS_SELECT_H
+#include <sys/select.h>
#endif
-#if defined(USE_PTHREADS) || defined(USE_SOLARIS_THREADS)
+#include <afs/opr.h>
-void IOMGR_Initialize() /* noop */
-{ }
-
-void IOMGR_Sleep (seconds)
- unsigned seconds;
-{
- struct timespec itv;
-
- itv.tv_sec = seconds;
- itv.tv_nsec = 0;
- MUTEX_EXIT(&lwp_mutex);
- osi_Assert(pthread_delay_np(&itv) == 0);
- MUTEX_ENTER(&lwp_mutex);
-}
-
-#else
-
-#ifdef AFS_DECOSF_ENV
-extern void *malloc();
-#endif /* AFS_DECOSF_ENV */
+#include "lwp.h"
+#include "timer.h"
typedef unsigned char bool;
#define FALSE 0
*/
fd_set *IOMGR_AllocFDSet(void)
{
- struct IOMGR_fd_set *t;
+ fd_set *t;
if (iomgrFreeFDSets) {
- t = iomgrFreeFDSets;
+ t = (fd_set *) iomgrFreeFDSets;
iomgrFreeFDSets = iomgrFreeFDSets->next;
}
else {
- t = (struct IOMGR_fd_set *)malloc(sizeof(fd_set));
+ t = malloc(sizeof(fd_set));
}
if (!t)
- return (fd_set*)0;
+ return NULL;
else {
- FD_ZERO((fd_set*)t);
- return (fd_set*)t;
+ FD_ZERO(t);
+ return t;
}
}
{
struct IoRequest *request;
- if ((request=iorFreeList))
+ if ((request=iorFreeList)) {
iorFreeList = (struct IoRequest *) (request->next);
- else request = (struct IoRequest *) malloc(sizeof(struct IoRequest));
+ memset(request, 0, sizeof(struct IoRequest));
+ } else request = calloc(1, sizeof(struct IoRequest));
- memset((char*)request, 0, sizeof(struct IoRequest));
return request;
}
/* Tape drives on Sun boxes do not support select and return ENXIO */
if (errno == ENXIO) e=0, code=1;
#endif
-#if defined(AFS_SGI_ENV) || defined(AFS_SUN5_ENV) || defined(AFS_OSF_ENV) || defined(AFS_AIX32_ENV)
+#if defined(AFS_SGI_ENV) || defined(AFS_SUN5_ENV) || defined(AFS_AIX32_ENV)
/* For SGI and SVR4 - poll & select can return EAGAIN ... */
if (errno == EAGAIN) e=0;
#endif
}
#endif
iomgr_errno = errno;
- lwp_abort();
+ opr_abort();
}
}
}
LWP_DispatchProcess();
}
- return (void *)-1; /* keeps compilers happy. */
+ AFS_UNREACHED(return((void *)-1)); /* keeps compilers happy. */
}
/************************\
sigProc[i] = 0;
}
- for (i = 1; i <= NSIG; ++i) /* forall !badsig(i) */
+ for (i = 1; i < NSIG; ++i) /* forall !badsig(i) */
if ((sigsHandled & mysigmask(i)) && sigDelivered[i] == TRUE) {
sigDelivered[i] = FALSE;
LWP_NoYieldSignal (sigEvents[i]);
fprintf(stderr, "IOMGR_Select: fds=%d, more than max %d\n",
fds, FD_SETSIZE);
fflush(stderr);
- lwp_abort();
+ opr_abort();
}
#endif
#ifdef DEBUG
if (lwp_debug != 0) puts("[Polling SELECT]");
#endif /* DEBUG */
-#if defined(AFS_SGI_ENV) || defined(AFS_SUN5_ENV) || defined(AFS_OSF_ENV) || defined(AFS_AIX32_ENV) || defined(AFS_NT40_ENV)
+#if defined(AFS_SGI_ENV) || defined(AFS_SUN5_ENV) || defined(AFS_AIX32_ENV) || defined(AFS_NT40_ENV)
again:
#endif
code = select(fds, readfds, writefds, exceptfds, timeout);
-#if defined(AFS_SGI_ENV) || defined(AFS_SUN5_ENV) || defined(AFS_OSF_ENV) || defined(AFS_AIX32_ENV)
+#if defined(AFS_SGI_ENV) || defined(AFS_SUN5_ENV) || defined(AFS_AIX32_ENV)
/*
* For SGI and SVR4 - poll & select can return EAGAIN ...
*/
timeout.tv_usec = 0;
IOMGR_Select(0, 0, 0, 0, &timeout);
}
-#endif /* USE_PTHREADS */