summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlaw <devnull@localhost>1998-04-08 01:53:17 +0000
committerlaw <devnull@localhost>1998-04-08 01:53:17 +0000
commit75f59d7eb37984a62c7bd52827fb18c0a555fcb8 (patch)
tree3cb5a62f41d0f7b2a44793c26b1dec997bfa0c87
parent8810e5373dc3960e83b52bfc42f6e9c5da9d1df0 (diff)
downloadnspr-hg-75f59d7eb37984a62c7bd52827fb18c0a555fcb8.tar.gz
Warpzilla patches
-rw-r--r--pr/include/md/_os2.h178
-rw-r--r--pr/include/md/_os2_errors.h2
-rw-r--r--pr/include/md/_pcos.h3
-rw-r--r--pr/src/linking/prlink.c5
-rw-r--r--pr/src/md/os2/Makefile1
-rw-r--r--pr/src/md/os2/os2_errors.c32
-rw-r--r--pr/src/md/os2/os2cv.c8
-rw-r--r--pr/src/md/os2/os2gc.c2
-rw-r--r--pr/src/md/os2/os2inrval.c2
-rw-r--r--pr/src/md/os2/os2io.c4
-rw-r--r--pr/src/md/os2/os2misc.c6
-rw-r--r--pr/src/md/os2/os2poll.c7
-rw-r--r--pr/src/md/os2/os2sock.c7
-rw-r--r--pr/src/md/os2/os2thred.c10
14 files changed, 158 insertions, 109 deletions
diff --git a/pr/include/md/_os2.h b/pr/include/md/_os2.h
index aa440567..59c37791 100644
--- a/pr/include/md/_os2.h
+++ b/pr/include/md/_os2.h
@@ -30,6 +30,14 @@
#include <errno.h>
+#ifdef XP_OS2_EMX
+/*
+ * EMX-specific tweaks:
+ * o Use stricmp instead of strcmpi.
+ */
+#define strcmpi stricmp
+#endif
+
/*
* Internal configuration macros
*/
@@ -42,7 +50,7 @@
#undef HAVE_THREAD_AFFINITY
#define HAVE_SOCKET_REUSEADDR
#define HAVE_SOCKET_KEEPALIVE
-#define _PR_HAVE_ATOMIC_OPS
+#undef _PR_HAVE_ATOMIC_OPS
#define HANDLE unsigned long
#define HINSTANCE HMODULE
@@ -133,7 +141,7 @@ struct _MDNotified {
};
struct _MDLock {
- CRITICAL_SECTION mutex; /* this is recursive on NT */
+ HMTX mutex; /* this is recursive on NT */
/*
* When notifying cvars, there is no point in actually
@@ -167,28 +175,35 @@ struct _MDProcess {
/* --- IO stuff --- */
-#define _MD_OPEN _PR_MD_OPEN
-#define _MD_READ _PR_MD_READ
-#define _MD_WRITE _PR_MD_WRITE
-#define _MD_WRITEV _PR_MD_WRITEV
-#define _MD_LSEEK _PR_MD_LSEEK
-#define _MD_LSEEK64 _PR_MD_LSEEK64
+#define _MD_OPEN (_PR_MD_OPEN)
+#define _MD_READ (_PR_MD_READ)
+#define _MD_WRITE (_PR_MD_WRITE)
+#define _MD_WRITEV (_PR_MD_WRITEV)
+#define _MD_LSEEK (_PR_MD_LSEEK)
+#define _MD_LSEEK64 (_PR_MD_LSEEK64)
extern PRInt32 _MD_CloseFile(PRInt32 osfd);
#define _MD_CLOSE_FILE _MD_CloseFile
-#define _MD_GETFILEINFO _PR_MD_GETFILEINFO
-#define _MD_GETOPENFILEINFO _PR_MD_GETOPENFILEINFO
-#define _MD_GETOPENFILEINFO64(a, b) _PR_MD_GETOPENFILEINFO64(a, b)
-#define _MD_STAT _PR_MD_STAT
-#define _MD_RENAME _PR_MD_RENAME
-#define _MD_ACCESS _PR_MD_ACCESS
-#define _MD_DELETE _PR_MD_DELETE
-#define _MD_MKDIR _PR_MD_MKDIR
-#define _MD_RMDIR _PR_MD_RMDIR
-#define _MD_LOCKFILE _PR_MD_LOCKFILE
-#define _MD_TLOCKFILE _PR_MD_TLOCKFILE
-#define _MD_UNLOCKFILE _PR_MD_UNLOCKFILE
+#define _MD_GETFILEINFO (_PR_MD_GETFILEINFO)
+#define _MD_GETFILEINFO64 (_PR_MD_GETFILEINFO64)
+#define _MD_GETOPENFILEINFO (_PR_MD_GETOPENFILEINFO)
+#define _MD_GETOPENFILEINFO64 (_PR_MD_GETOPENFILEINFO64)
+#define _MD_STAT (_PR_MD_STAT)
+#define _MD_RENAME (_PR_MD_RENAME)
+#define _MD_ACCESS (_PR_MD_ACCESS)
+#define _MD_DELETE (_PR_MD_DELETE)
+#define _MD_MKDIR (_PR_MD_MKDIR)
+#define _MD_RMDIR (_PR_MD_RMDIR)
+#define _MD_LOCKFILE (_PR_MD_LOCKFILE)
+#define _MD_TLOCKFILE (_PR_MD_TLOCKFILE)
+#define _MD_UNLOCKFILE (_PR_MD_UNLOCKFILE)
/* --- Socket IO stuff --- */
+
+/* The ones that don't map directly may need to be re-visited... */
+#ifdef XP_OS2_VACPP
+#define EPIPE EBADF
+#define EIO ECONNREFUSED
+#endif
#define _MD_EACCES EACCES
#define _MD_EADDRINUSE EADDRINUSE
#define _MD_EADDRNOTAVAIL EADDRNOTAVAIL
@@ -216,44 +231,40 @@ extern PRInt32 _MD_CloseFile(PRInt32 osfd);
extern void _MD_MakeNonblock(PRFileDesc *f);
#define _MD_MAKE_NONBLOCK _MD_MakeNonblock
-#define _MD_SHUTDOWN _PR_MD_SHUTDOWN
+#define _MD_SHUTDOWN (_PR_MD_SHUTDOWN)
#define _MD_LISTEN(s, backlog) listen(s->secret->md.osfd,backlog)
extern PRInt32 _MD_CloseSocket(PRInt32 osfd);
#define _MD_CLOSE_SOCKET _MD_CloseSocket
-#define _MD_SENDTO _PR_MD_SENDTO
-#define _MD_RECVFROM _PR_MD_RECVFROM
+#define _MD_SENDTO (_PR_MD_SENDTO)
+#define _MD_RECVFROM (_PR_MD_RECVFROM)
#define _MD_SOCKETPAIR(s, type, proto, sv) -1
-#define _MD_GETSOCKNAME _PR_MD_GETSOCKNAME
-#define _MD_GETPEERNAME _PR_MD_GETPEERNAME
-#define _MD_GETSOCKOPT _PR_MD_GETSOCKOPT
-#define _MD_SETSOCKOPT _PR_MD_SETSOCKOPT
+#define _MD_GETSOCKNAME (_PR_MD_GETSOCKNAME)
+#define _MD_GETPEERNAME (_PR_MD_GETPEERNAME)
+#define _MD_GETSOCKOPT (_PR_MD_GETSOCKOPT)
+#define _MD_SETSOCKOPT (_PR_MD_SETSOCKOPT)
#define _MD_SELECT select
-#define _MD_FSYNC _PR_MD_FSYNC
-
-long _System InterlockedIncrement(PLONG);
-long _System InterlockedDecrement(PLONG);
-long _System InterlockedExchange(PLONG, LONG);
-
-#define _MD_INIT_ATOMIC()
-#define _MD_ATOMIC_INCREMENT(x) InterlockedIncrement((PLONG)x)
-#define _MD_ATOMIC_DECREMENT(x) InterlockedDecrement((PLONG)x)
-#define _MD_ATOMIC_SET(x,y) InterlockedExchange((PLONG)x, (LONG)y)
+#define _MD_FSYNC (_PR_MD_FSYNC)
-#define _MD_INIT_IO _PR_MD_INIT_IO
-#define _MD_TRANSMITFILE _PR_MD_TRANSMITFILE
+#define _MD_INIT_ATOMIC (_MD_INIT_ATOMIC)
+#define _MD_ATOMIC_INCREMENT (_MD_ATOMIC_INCREMENT)
+#define _MD_ATOMIC_DECREMENT (_MD_ATOMIC_DECREMENT)
+#define _MD_ATOMIC_SET (_MD_ATOMIC_SET)
+#define _MD_INIT_IO (_PR_MD_INIT_IO)
+#define _MD_TRANSMITFILE (_PR_MD_TRANSMITFILE)
+#define _MD_PR_POLL (_PR_MD_PR_POLL)
/* win95 doesn't have async IO */
-#define _MD_SOCKET _PR_MD_SOCKET
+#define _MD_SOCKET (_PR_MD_SOCKET)
extern PRInt32 _MD_SocketAvailable(PRFileDesc *fd);
#define _MD_SOCKETAVAILABLE _MD_SocketAvailable
-#define _MD_CONNECT _PR_MD_CONNECT
+#define _MD_CONNECT (_PR_MD_CONNECT)
extern PRInt32 _MD_Accept(PRFileDesc *fd, PRNetAddr *raddr, PRUint32 *rlen,
PRIntervalTime timeout);
#define _MD_ACCEPT _MD_Accept
-#define _MD_BIND _PR_MD_BIND
-#define _MD_RECV _PR_MD_RECV
-#define _MD_SEND _PR_MD_SEND
+#define _MD_BIND (_PR_MD_BIND)
+#define _MD_RECV (_PR_MD_RECV)
+#define _MD_SEND (_PR_MD_SEND)
/* --- Scheduler stuff --- */
/* #define _MD_PAUSE_CPU _PR_MD_PAUSE_CPU */
@@ -265,9 +276,9 @@ extern PRInt32 _MD_Accept(PRFileDesc *fd, PRNetAddr *raddr, PRUint32 *rlen,
#define PR_PATH_SEPARATOR ';'
#define PR_PATH_SEPARATOR_STR ";"
#define _MD_ERRNO() errno
-#define _MD_OPEN_DIR _PR_MD_OPEN_DIR
-#define _MD_CLOSE_DIR _PR_MD_CLOSE_DIR
-#define _MD_READ_DIR _PR_MD_READ_DIR
+#define _MD_OPEN_DIR (_PR_MD_OPEN_DIR)
+#define _MD_CLOSE_DIR (_PR_MD_CLOSE_DIR)
+#define _MD_READ_DIR (_PR_MD_READ_DIR)
/* --- Segment stuff --- */
#define _MD_INIT_SEGS()
@@ -275,26 +286,26 @@ extern PRInt32 _MD_Accept(PRFileDesc *fd, PRNetAddr *raddr, PRUint32 *rlen,
#define _MD_FREE_SEGMENT(seg)
/* --- Environment Stuff --- */
-#define _MD_GET_ENV _PR_MD_GET_ENV
-#define _MD_PUT_ENV _PR_MD_PUT_ENV
+#define _MD_GET_ENV (_PR_MD_GET_ENV)
+#define _MD_PUT_ENV (_PR_MD_PUT_ENV)
/* --- Threading Stuff --- */
#define _MD_DEFAULT_STACK_SIZE 32767L
-#define _MD_INIT_THREAD _PR_MD_INIT_THREAD
-#define _MD_INIT_ATTACHED_THREAD _PR_MD_INIT_THREAD
-#define _MD_INIT_PRIMORDIAL_THREAD _PR_MD_INIT_PRIMORDIAL_THREAD
-#define _MD_CREATE_THREAD _PR_MD_CREATE_THREAD
-#define _MD_YIELD _PR_MD_YIELD
-#define _MD_SET_PRIORITY _PR_MD_SET_PRIORITY
-#define _MD_CLEAN_THREAD _PR_MD_CLEAN_THREAD
-#define _MD_SETTHREADAFFINITYMASK _PR_MD_SETTHREADAFFINITYMASK
-#define _MD_GETTHREADAFFINITYMASK _PR_MD_GETTHREADAFFINITYMASK
-#define _MD_EXIT_THREAD _PR_MD_EXIT_THREAD
-#define _MD_SUSPEND_THREAD _PR_MD_SUSPEND_THREAD
-#define _MD_RESUME_THREAD _PR_MD_RESUME_THREAD
-#define _MD_SUSPEND_CPU _PR_MD_SUSPEND_CPU
-#define _MD_RESUME_CPU _PR_MD_RESUME_CPU
-#define _MD_WAKEUP_CPUS _PR_MD_WAKEUP_CPUS
+#define _MD_INIT_THREAD (_PR_MD_INIT_THREAD)
+#define _MD_INIT_ATTACHED_THREAD (_PR_MD_INIT_THREAD)
+#define _MD_INIT_PRIMORDIAL_THREAD (_PR_MD_INIT_PRIMORDIAL_THREAD)
+#define _MD_CREATE_THREAD (_PR_MD_CREATE_THREAD)
+#define _MD_YIELD (_PR_MD_YIELD)
+#define _MD_SET_PRIORITY (_PR_MD_SET_PRIORITY)
+#define _MD_CLEAN_THREAD (_PR_MD_CLEAN_THREAD)
+#define _MD_SETTHREADAFFINITYMASK (_PR_MD_SETTHREADAFFINITYMASK)
+#define _MD_GETTHREADAFFINITYMASK (_PR_MD_GETTHREADAFFINITYMASK)
+#define _MD_EXIT_THREAD (_PR_MD_EXIT_THREAD)
+#define _MD_SUSPEND_THREAD (_PR_MD_SUSPEND_THREAD)
+#define _MD_RESUME_THREAD (_PR_MD_RESUME_THREAD)
+#define _MD_SUSPEND_CPU (_PR_MD_SUSPEND_CPU)
+#define _MD_RESUME_CPU (_PR_MD_RESUME_CPU)
+#define _MD_WAKEUP_CPUS (_PR_MD_WAKEUP_CPUS)
#define _MD_BEGIN_SUSPEND_ALL()
#define _MD_BEGIN_RESUME_ALL()
#define _MD_END_SUSPEND_ALL()
@@ -304,22 +315,22 @@ extern PRInt32 _MD_Accept(PRFileDesc *fd, PRNetAddr *raddr, PRUint32 *rlen,
#define _PR_LOCK _MD_LOCK
#define _PR_UNLOCK _MD_UNLOCK
-#define _MD_NEW_LOCK(lock) (InitializeCriticalSection(&((lock)->mutex)),(lock)->notified.length=0,(lock)->notified.link=NULL,PR_SUCCESS)
-#define _MD_FREE_LOCK(lock) DeleteCriticalSection(&((lock)->mutex))
-#define _MD_LOCK(lock) EnterCriticalSection(&((lock)->mutex))
-#define _MD_TEST_AND_LOCK(lock) (EnterCriticalSection(&((lock)->mutex)),PR_SUCCESS)
-#define _MD_UNLOCK _PR_MD_UNLOCK
+#define _MD_NEW_LOCK(lock) (DosCreateMutexSem(0, &((lock)->mutex), 0, 0),(lock)->notified.length=0,(lock)->notified.link=NULL,PR_SUCCESS)
+#define _MD_FREE_LOCK(lock) DosCloseMutexSem(((lock)->mutex))
+#define _MD_LOCK(lock) DosRequestMutexSem(((lock)->mutex), SEM_INDEFINITE_WAIT)
+#define _MD_TEST_AND_LOCK(lock) (DosRequestMutexSem(((lock)->mutex), SEM_INDEFINITE_WAIT),PR_SUCCESS)
+#define _MD_UNLOCK (_PR_MD_UNLOCK)
/* --- lock and cv waiting --- */
-#define _MD_WAIT _PR_MD_WAIT
-#define _MD_WAKEUP_WAITER _PR_MD_WAKEUP_WAITER
+#define _MD_WAIT (_PR_MD_WAIT)
+#define _MD_WAKEUP_WAITER (_PR_MD_WAKEUP_WAITER)
/* --- CVar ------------------- */
-#define _MD_WAIT_CV _PR_MD_WAIT_CV
-#define _MD_NEW_CV _PR_MD_NEW_CV
-#define _MD_FREE_CV _PR_MD_FREE_CV
-#define _MD_NOTIFY_CV _PR_MD_NOTIFY_CV
-#define _MD_NOTIFYALL_CV _PR_MD_NOTIFYALL_CV
+#define _MD_WAIT_CV (_PR_MD_WAIT_CV)
+#define _MD_NEW_CV (_PR_MD_NEW_CV)
+#define _MD_FREE_CV (_PR_MD_FREE_CV)
+#define _MD_NOTIFY_CV (_PR_MD_NOTIFY_CV )
+#define _MD_NOTIFYALL_CV (_PR_MD_NOTIFYALL_CV)
/* XXXMB- the IOQ stuff is certainly not working correctly yet. */
/* extern struct _MDLock _pr_ioq_lock; */
@@ -333,7 +344,7 @@ extern PRInt32 _MD_Accept(PRFileDesc *fd, PRNetAddr *raddr, PRUint32 *rlen,
#define _MD_DISABLE_CLOCK_INTERRUPTS()
#define _MD_BLOCK_CLOCK_INTERRUPTS()
#define _MD_UNBLOCK_CLOCK_INTERRUPTS()
-#define _MD_EARLY_INIT _PR_MD_EARLY_INIT
+#define _MD_EARLY_INIT (_PR_MD_EARLY_INIT)
#define _MD_FINAL_INIT()
#define _MD_INIT_CPUS()
#define _MD_INIT_RUNNING_CPU(cpu)
@@ -366,9 +377,9 @@ extern PRStatus _PR_KillOS2Process(struct PRProcess *process);
#define _MD_RESTORE_CONTEXT
/* --- Intervals --- */
-#define _MD_INTERVAL_INIT _PR_MD_INTERVAL_INIT
-#define _MD_GET_INTERVAL _PR_MD_GET_INTERVAL
-#define _MD_INTERVAL_PER_SEC _PR_MD_INTERVAL_PER_SEC
+#define _MD_INTERVAL_INIT (_PR_MD_INTERVAL_INIT)
+#define _MD_GET_INTERVAL (_PR_MD_GET_INTERVAL)
+#define _MD_INTERVAL_PER_SEC (_PR_MD_INTERVAL_PER_SEC)
#define _MD_INTERVAL_PER_MILLISEC() (_PR_MD_INTERVAL_PER_SEC() / 1000)
#define _MD_INTERVAL_PER_MICROSEC() (_PR_MD_INTERVAL_PER_SEC() / 1000000)
@@ -376,13 +387,13 @@ extern PRStatus _PR_KillOS2Process(struct PRProcess *process);
typedef struct __NSPR_TLS
{
- PRThread *_pr_thread_last_run;
- PRThread *_pr_currentThread;
+ struct PRThread *_pr_thread_last_run;
+ struct PRThread *_pr_currentThread;
struct _PRCPU *_pr_currentCPU;
} _NSPR_TLS;
extern _NSPR_TLS* pThreadLocalStorage;
-PR_IMPLEMENT(void) _PR_MD_ENSURE_TLS();
+PR_EXTERN(void) _PR_MD_ENSURE_TLS(void);
#define _MD_CURRENT_THREAD() pThreadLocalStorage->_pr_currentThread
#define _MD_SET_CURRENT_THREAD(_thread) _PR_MD_ENSURE_TLS(); pThreadLocalStorage->_pr_currentThread = (_thread)
@@ -484,5 +495,6 @@ extern APIRET (* APIENTRY QueryThreadContext)(TID, ULONG, PCONTEXTRECORD);
* not emulating anything. Just mapping.
*/
#define FreeLibrary(x) DosFreeModule(x)
+#define OutputDebugString(x)
#endif /* nspr_os2_defs_h___ */
diff --git a/pr/include/md/_os2_errors.h b/pr/include/md/_os2_errors.h
index 34fa4c59..9ef0766b 100644
--- a/pr/include/md/_os2_errors.h
+++ b/pr/include/md/_os2_errors.h
@@ -21,7 +21,9 @@
#include "md/_os2.h"
#include <assert.h>
+#ifdef XP_OS2_VACPP
#include <nerrno.h>
+#endif
PR_EXTERN(void) _MD_os2_map_opendir_error(PRInt32 err);
#define _PR_MD_MAP_OPENDIR_ERROR _MD_os2_map_opendir_error
diff --git a/pr/include/md/_pcos.h b/pr/include/md/_pcos.h
index c430972c..c6e352f3 100644
--- a/pr/include/md/_pcos.h
+++ b/pr/include/md/_pcos.h
@@ -60,6 +60,9 @@ PR_END_EXTERN_C
#ifdef MOZ_BITS
#include <time.h>
#endif
+#ifdef XP_OS2_EMX
+#include <sys/types.h>
+#endif
#include <sys/stat.h>
#include <io.h>
#include <fcntl.h> /* O_BINARY */
diff --git a/pr/src/linking/prlink.c b/pr/src/linking/prlink.c
index aacc7715..45c7af07 100644
--- a/pr/src/linking/prlink.c
+++ b/pr/src/linking/prlink.c
@@ -428,14 +428,11 @@ PR_LoadLibrary(const char *name)
#ifdef XP_OS2 /* Why isn't all this stuff in MD code?! */
{
- NODL_PROC *pfn;
HMODULE h;
UCHAR pszError[_MAX_PATH];
ULONG ulRc = NO_ERROR;
- int first_try = 1;
- retry:
- ulRc = DosLoadModule(pszError, _MAX_PATH, (PSZ) name, &h);
+ ulRc = DosLoadModule(pszError, _MAX_PATH, (PSZ) name, &h);
if (ulRc != NO_ERROR) {
PR_DELETE(lm);
goto unlock;
diff --git a/pr/src/md/os2/Makefile b/pr/src/md/os2/Makefile
index 1b23db00..7ff5fd27 100644
--- a/pr/src/md/os2/Makefile
+++ b/pr/src/md/os2/Makefile
@@ -43,7 +43,6 @@ INCLUDES = -I$(DIST)/include/private -I$(DIST)/include
include $(MOD_DEPTH)/config/rules.mk
export:: $(TARGETS)
- @cmd /C "copy *.obj $(OBJDIR)\*.o > nul"
install:: export
diff --git a/pr/src/md/os2/os2_errors.c b/pr/src/md/os2/os2_errors.c
index 33f1a062..0b651d25 100644
--- a/pr/src/md/os2/os2_errors.c
+++ b/pr/src/md/os2/os2_errors.c
@@ -362,9 +362,11 @@ void _MD_os2_map_read_error(PRInt32 err)
case ENOTSOCK:
PR_SetError(PR_NOT_SOCKET_ERROR, err);
break;
+#ifdef SOCEFAULT
case SOCEFAULT:
PR_SetError(PR_ACCESS_FAULT_ERROR, err);
break;
+#endif
default:
PR_SetError(PR_UNKNOWN_ERROR, err);
break;
@@ -411,9 +413,11 @@ void _MD_os2_map_transmitfile_error(PRInt32 err)
case ENOTSOCK:
PR_SetError(PR_NOT_SOCKET_ERROR, err);
break;
+#ifdef SOCEFAULT
case SOCEFAULT:
PR_SetError(PR_ACCESS_FAULT_ERROR, err);
break;
+#endif
default:
PR_SetError(PR_UNKNOWN_ERROR, err);
break;
@@ -471,9 +475,11 @@ void _MD_os2_map_write_error(PRInt32 err)
case EISCONN:
PR_SetError(PR_IS_CONNECTED_ERROR, err);
break;
+#ifdef SOCEFAULT
case SOCEFAULT:
PR_SetError(PR_ACCESS_FAULT_ERROR, err);
break;
+#endif
default:
PR_SetError(PR_UNKNOWN_ERROR, err);
break;
@@ -568,9 +574,11 @@ void _MD_os2_map_recv_error(PRInt32 err)
case ENOTSOCK:
PR_SetError(PR_NOT_SOCKET_ERROR, err);
break;
+#ifdef SOCEFAULT
case SOCEFAULT:
PR_SetError(PR_ACCESS_FAULT_ERROR, err);
break;
+#endif
case ERROR_NETNAME_DELETED:
PR_SetError(PR_CONNECT_RESET_ERROR, err);
break;
@@ -592,9 +600,11 @@ void _MD_os2_map_recvfrom_error(PRInt32 err)
case ENOTSOCK:
PR_SetError(PR_NOT_SOCKET_ERROR, err);
break;
+#ifdef SOCEFAULT
case SOCEFAULT:
PR_SetError(PR_ACCESS_FAULT_ERROR, err);
break;
+#endif
case ERROR_NETNAME_DELETED:
PR_SetError(PR_CONNECT_RESET_ERROR, err);
break;
@@ -629,9 +639,11 @@ void _MD_os2_map_send_error(PRInt32 err)
case EISCONN:
PR_SetError(PR_IS_CONNECTED_ERROR, err);
break;
+#ifdef SOCEFAULT
case SOCEFAULT:
PR_SetError(PR_ACCESS_FAULT_ERROR, err);
break;
+#endif
case ERROR_NETNAME_DELETED:
PR_SetError(PR_CONNECT_RESET_ERROR, err);
break;
@@ -666,9 +678,11 @@ void _MD_os2_map_sendto_error(PRInt32 err)
case EISCONN:
PR_SetError(PR_IS_CONNECTED_ERROR, err);
break;
+#ifdef SOCEFAULT
case SOCEFAULT:
PR_SetError(PR_ACCESS_FAULT_ERROR, err);
break;
+#endif
case ERROR_NETNAME_DELETED:
PR_SetError(PR_CONNECT_RESET_ERROR, err);
break;
@@ -693,9 +707,11 @@ void _MD_os2_map_accept_error(PRInt32 err)
case EOPNOTSUPP:
PR_SetError(PR_NOT_TCP_SOCKET_ERROR, err);
break;
+#ifdef SOCEFAULT
case SOCEFAULT:
PR_SetError(PR_ACCESS_FAULT_ERROR, err);
break;
+#endif
case EMFILE:
PR_SetError(PR_PROC_DESC_TABLE_FULL_ERROR, err);
break;
@@ -765,9 +781,11 @@ void _MD_os2_map_connect_error(PRInt32 err)
case EISCONN:
PR_SetError(PR_IS_CONNECTED_ERROR, err);
break;
+#ifdef SOCEFAULT
case SOCEFAULT:
PR_SetError(PR_ACCESS_FAULT_ERROR, err);
break;
+#endif
default:
PR_SetError(PR_UNKNOWN_ERROR, err);
break;
@@ -783,9 +801,11 @@ void _MD_os2_map_bind_error(PRInt32 err)
case ENOTSOCK:
PR_SetError(PR_NOT_SOCKET_ERROR, err);
break;
+#ifdef SOCEFAULT
case SOCEFAULT:
PR_SetError(PR_ACCESS_FAULT_ERROR, err);
break;
+#endif
case EADDRNOTAVAIL:
PR_SetError(PR_ADDRESS_NOT_AVAILABLE_ERROR, err);
break;
@@ -849,9 +869,11 @@ void _MD_os2_map_getsockname_error(PRInt32 err)
case ENOTSOCK:
PR_SetError(PR_NOT_SOCKET_ERROR, err);
break;
+#ifdef SOCEFAULT
case SOCEFAULT:
PR_SetError(PR_ACCESS_FAULT_ERROR, err);
break;
+#endif
case ENOBUFS:
PR_SetError(PR_INSUFFICIENT_RESOURCES_ERROR, err);
break;
@@ -874,9 +896,11 @@ void _MD_os2_map_getpeername_error(PRInt32 err)
case ENOTCONN:
PR_SetError(PR_NOT_CONNECTED_ERROR, err);
break;
+#ifdef SOCEFAULT
case SOCEFAULT:
PR_SetError(PR_ACCESS_FAULT_ERROR, err);
break;
+#endif
case ENOBUFS:
PR_SetError(PR_INSUFFICIENT_RESOURCES_ERROR, err);
break;
@@ -898,9 +922,11 @@ void _MD_os2_map_getsockopt_error(PRInt32 err)
case ENOPROTOOPT:
PR_SetError(PR_INVALID_ARGUMENT_ERROR, err);
break;
+#ifdef SOCEFAULT
case SOCEFAULT:
PR_SetError(PR_ACCESS_FAULT_ERROR, err);
break;
+#endif
case EINVAL:
PR_SetError(PR_BUFFER_OVERFLOW_ERROR, err);
break;
@@ -922,9 +948,11 @@ void _MD_os2_map_setsockopt_error(PRInt32 err)
case ENOPROTOOPT:
PR_SetError(PR_INVALID_ARGUMENT_ERROR, err);
break;
+#ifdef SOCEFAULT
case SOCEFAULT:
PR_SetError(PR_ACCESS_FAULT_ERROR, err);
break;
+#endif
case EINVAL:
PR_SetError(PR_BUFFER_OVERFLOW_ERROR, err);
break;
@@ -990,9 +1018,11 @@ void _MD_os2_map_open_error(PRInt32 err)
void _MD_os2_map_gethostname_error(PRInt32 err)
{
switch (err) {
+#ifdef SOCEFAULT
case SOCEFAULT:
PR_SetError(PR_ACCESS_FAULT_ERROR, err);
break;
+#endif
case ENETDOWN:
case EINPROGRESS:
default:
@@ -1016,9 +1046,11 @@ void _MD_os2_map_select_error(PRInt32 err)
case EINVAL:
prerror = PR_INVALID_ARGUMENT_ERROR;
break;
+#ifdef SOCEFAULT
case SOCEFAULT:
prerror = PR_ACCESS_FAULT_ERROR;
break;
+#endif
default:
prerror = PR_UNKNOWN_ERROR;
}
diff --git a/pr/src/md/os2/os2cv.c b/pr/src/md/os2/os2cv.c
index 34264dd5..4ef5fc7b 100644
--- a/pr/src/md/os2/os2cv.c
+++ b/pr/src/md/os2/os2cv.c
@@ -147,7 +147,7 @@ md_UnlockAndPostNotifies(
}
/* Release the lock before notifying */
- LeaveCriticalSection(&lock->mutex);
+ DosReleaseMutexSem(lock->mutex);
notified = &post; /* this is where we start */
do {
@@ -254,14 +254,14 @@ _PR_MD_WAIT_CV(_MDCVar *cv, _MDLock *lock, PRIntervalTime timeout )
md_UnlockAndPostNotifies(lock, thred, cv);
} else {
AddThreadToCVWaitQueueInternal(thred, cv);
- LeaveCriticalSection(&lock->mutex);
+ DosReleaseMutexSem(lock->mutex);
}
/* Wait for notification or timeout; don't really care which */
rv = DosWaitEventSem(thred->md.blocked_sema.sem, msecs);
DosResetEventSem(thred->md.blocked_sema.sem, &count);
- EnterCriticalSection(&(lock->mutex));
+ DosRequestMutexSem(lock->mutex,-1);
PR_ASSERT(rv == NO_ERROR || rv == ERROR_TIMEOUT);
@@ -326,7 +326,7 @@ _PR_MD_UNLOCK(_MDLock *lock)
if (0 != lock->notified.length) {
md_UnlockAndPostNotifies(lock, NULL, NULL);
} else {
- LeaveCriticalSection(&lock->mutex);
+ DosReleaseMutexSem(lock->mutex);
}
return;
}
diff --git a/pr/src/md/os2/os2gc.c b/pr/src/md/os2/os2gc.c
index 00db7e15..cbe2a7ba 100644
--- a/pr/src/md/os2/os2gc.c
+++ b/pr/src/md/os2/os2gc.c
@@ -22,8 +22,6 @@
*/
#include "primpl.h"
-extern APIRET (* APIENTRY QueryThreadContext)(TID, ULONG, PCONTEXTRECORD);
-
PRWord *_MD_HomeGCRegisters(PRThread *t, int isCurrent, int *np)
{
CONTEXTRECORD context;
diff --git a/pr/src/md/os2/os2inrval.c b/pr/src/md/os2/os2inrval.c
index a204a639..03d585af 100644
--- a/pr/src/md/os2/os2inrval.c
+++ b/pr/src/md/os2/os2inrval.c
@@ -32,8 +32,6 @@ PRInt32 _os2_highMask = 0;
PR_IMPLEMENT(void)
_PR_MD_INTERVAL_INIT()
{
- ULONG count;
-
if (DosTmrQueryFreq(&_os2_ticksPerSec) == NO_ERROR)
{
while(_os2_ticksPerSec > PR_INTERVAL_MAX) {
diff --git a/pr/src/md/os2/os2io.c b/pr/src/md/os2/os2io.c
index b2e89d27..0dd200d9 100644
--- a/pr/src/md/os2/os2io.c
+++ b/pr/src/md/os2/os2io.c
@@ -23,7 +23,11 @@
*/
#include "primpl.h"
+#ifdef XP_OS2_VACPP
#include <direct.h>
+#else
+#include <dirent.h>
+#endif
struct _MDLock _pr_ioq_lock;
diff --git a/pr/src/md/os2/os2misc.c b/pr/src/md/os2/os2misc.c
index 00913013..e5d25fcc 100644
--- a/pr/src/md/os2/os2misc.c
+++ b/pr/src/md/os2/os2misc.c
@@ -20,6 +20,7 @@
* os2misc.c
*
*/
+#include <string.h>
#include "primpl.h"
PR_IMPLEMENT(char *)
@@ -335,8 +336,6 @@ PRProcess * _PR_CreateOS2Process(
}
if (attr) {
- PRBool redirected = PR_FALSE;
-
/* On OS/2, there is really no way to pass file handles for stdin, stdout,
* and stderr to a new process. Instead, we can make it a child process
* and make the given file handles a copy of our stdin, stdout, and stderr.
@@ -434,7 +433,7 @@ PRStatus _PR_WaitOS2Process(PRProcess *process,
&pidEnded, process->md.pid);
if (ulRetVal != NO_ERROR) {
- printf("\nDosWaitChild rc = %i\n", ulRetVal);
+ printf("\nDosWaitChild rc = %lu\n", ulRetVal);
PR_SetError(PR_UNKNOWN_ERROR, ulRetVal);
return PR_FAILURE;
}
@@ -455,7 +454,6 @@ PRStatus _PR_KillOS2Process(PRProcess *process)
PR_IMPLEMENT(PRStatus) _MD_OS2GetHostName(char *name, PRUint32 namelen)
{
PRIntn rv;
- PRInt32 syserror;
rv = gethostname(name, (PRInt32) namelen);
if (0 == rv) {
diff --git a/pr/src/md/os2/os2poll.c b/pr/src/md/os2/os2poll.c
index b3353aa7..e327541a 100644
--- a/pr/src/md/os2/os2poll.c
+++ b/pr/src/md/os2/os2poll.c
@@ -20,6 +20,10 @@
* This file implements _PR_MD_PR_POLL for OS/2.
*/
+#ifdef XP_OS2_EMX
+ #include <sys/time.h> /* For timeval. */
+#endif
+
#include "primpl.h"
PRInt32
@@ -27,8 +31,7 @@ _PR_MD_PR_POLL(PRPollDesc *pds, PRIntn npds,
PRIntervalTime timeout)
{
PRPollDesc *pd, *epd;
- PRInt32 n, err, pdcnt;
- PRThread *me = _PR_MD_CURRENT_THREAD();
+ PRInt32 n, err;
fd_set rd, wt, ex;
struct timeval tv, *tvp = NULL;
diff --git a/pr/src/md/os2/os2sock.c b/pr/src/md/os2/os2sock.c
index 3eb26d35..b895007d 100644
--- a/pr/src/md/os2/os2sock.c
+++ b/pr/src/md/os2/os2sock.c
@@ -28,6 +28,10 @@
#include "primpl.h"
+#ifdef XP_OS2_EMX
+ #include <sys/time.h> /* For timeval. */
+#endif
+
void
_PR_MD_INIT_IO()
{
@@ -207,7 +211,7 @@ _PR_MD_CONNECT(PRFileDesc *fd, const PRNetAddr *addr, PRUint32 addrlen,
if ((rv = connect(osfd, (struct sockaddr *) addr, addrlen)) == -1)
{
err = sock_errno();
- if ((!fd->secret->nonblocking) && (err == EINPROGRESS) || (err == EWOULDBLOCK))
+ if ((!fd->secret->nonblocking) && ((err == EINPROGRESS) || (err == EWOULDBLOCK)))
{
#ifdef BSD_SELECT
if (timeout == PR_INTERVAL_NO_TIMEOUT)
@@ -291,7 +295,6 @@ PRInt32
_PR_MD_BIND(PRFileDesc *fd, const PRNetAddr *addr, PRUint32 addrlen)
{
PRInt32 rv;
- int one = 1;
rv = bind(fd->secret->md.osfd, (struct sockaddr*) &(addr->inet), addrlen);
diff --git a/pr/src/md/os2/os2thred.c b/pr/src/md/os2/os2thred.c
index e51b3eb3..dc4402a9 100644
--- a/pr/src/md/os2/os2thred.c
+++ b/pr/src/md/os2/os2thred.c
@@ -19,14 +19,16 @@
#include "primpl.h"
#include <process.h> /* for _beginthread() */
-APIRET (* APIENTRY QueryThreadContext)(TID, ULONG, PCONTEXTRECORD);
+/* --- Declare these to avoid "implicit" warnings --- */
+PR_EXTERN(void) _PR_MD_NEW_SEM(_MDSemaphore *md, PRUintn value);
+PR_EXTERN(void) _PR_MD_DESTROY_SEM(_MDSemaphore *md);
/* --- globals ------------------------------------------------ */
_NSPR_TLS* pThreadLocalStorage = 0;
_PRInterruptTable _pr_interruptTable[] = { { 0 } };
PR_IMPLEMENT(void)
-_PR_MD_ENSURE_TLS()
+_PR_MD_ENSURE_TLS(void)
{
if(!pThreadLocalStorage)
{
@@ -65,14 +67,12 @@ _PR_MD_INIT_PRIMORDIAL_THREAD(PRThread *thread)
PR_IMPLEMENT(PRStatus)
_PR_MD_INIT_THREAD(PRThread *thread)
{
- APIRET rc;
-
if (thread->flags & _PR_PRIMORDIAL)
_PR_MD_INIT_PRIMORDIAL_THREAD(thread);
/* Create the blocking IO semaphore */
_PR_MD_NEW_SEM(&thread->md.blocked_sema, 1);
- return (thread->md.blocked_sema.sem != NULL) ? PR_SUCCESS : PR_FAILURE;
+ return (thread->md.blocked_sema.sem != 0) ? PR_SUCCESS : PR_FAILURE;
}
PR_IMPLEMENT(PRStatus)