diff options
author | law <devnull@localhost> | 1998-04-08 01:53:17 +0000 |
---|---|---|
committer | law <devnull@localhost> | 1998-04-08 01:53:17 +0000 |
commit | 75f59d7eb37984a62c7bd52827fb18c0a555fcb8 (patch) | |
tree | 3cb5a62f41d0f7b2a44793c26b1dec997bfa0c87 | |
parent | 8810e5373dc3960e83b52bfc42f6e9c5da9d1df0 (diff) | |
download | nspr-hg-75f59d7eb37984a62c7bd52827fb18c0a555fcb8.tar.gz |
Warpzilla patches
-rw-r--r-- | pr/include/md/_os2.h | 178 | ||||
-rw-r--r-- | pr/include/md/_os2_errors.h | 2 | ||||
-rw-r--r-- | pr/include/md/_pcos.h | 3 | ||||
-rw-r--r-- | pr/src/linking/prlink.c | 5 | ||||
-rw-r--r-- | pr/src/md/os2/Makefile | 1 | ||||
-rw-r--r-- | pr/src/md/os2/os2_errors.c | 32 | ||||
-rw-r--r-- | pr/src/md/os2/os2cv.c | 8 | ||||
-rw-r--r-- | pr/src/md/os2/os2gc.c | 2 | ||||
-rw-r--r-- | pr/src/md/os2/os2inrval.c | 2 | ||||
-rw-r--r-- | pr/src/md/os2/os2io.c | 4 | ||||
-rw-r--r-- | pr/src/md/os2/os2misc.c | 6 | ||||
-rw-r--r-- | pr/src/md/os2/os2poll.c | 7 | ||||
-rw-r--r-- | pr/src/md/os2/os2sock.c | 7 | ||||
-rw-r--r-- | pr/src/md/os2/os2thred.c | 10 |
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) |