summaryrefslogtreecommitdiff
path: root/pr/src/md
diff options
context:
space:
mode:
Diffstat (limited to 'pr/src/md')
-rw-r--r--pr/src/md/windows/Makefile.in2
-rw-r--r--pr/src/md/windows/ntsec.c13
-rw-r--r--pr/src/md/windows/objs.mk2
-rw-r--r--pr/src/md/windows/w32ipcsem.c35
-rw-r--r--pr/src/md/windows/w32shm.c26
-rw-r--r--pr/src/md/windows/w95sock.c2
-rw-r--r--pr/src/md/windows/w95thred.c10
7 files changed, 85 insertions, 5 deletions
diff --git a/pr/src/md/windows/Makefile.in b/pr/src/md/windows/Makefile.in
index c97c9821..4675bf89 100644
--- a/pr/src/md/windows/Makefile.in
+++ b/pr/src/md/windows/Makefile.in
@@ -62,7 +62,7 @@ CSRCS = \
ntinrval.c \
$(NULL)
else
-ifeq ($(OS_TARGET), WIN95)
+ifeq (,$(filter-out WIN95 WINCE, $(OS_TARGET)))
CSRCS = \
ntmisc.c \
ntsec.c \
diff --git a/pr/src/md/windows/ntsec.c b/pr/src/md/windows/ntsec.c
index 89ac1dfb..2ef73a05 100644
--- a/pr/src/md/windows/ntsec.c
+++ b/pr/src/md/windows/ntsec.c
@@ -69,6 +69,9 @@ static struct {
*/
void _PR_NT_InitSids(void)
{
+#ifdef WINCE /* not supported */
+ return;
+#else
SID_IDENTIFIER_AUTHORITY SIDAuthWorld = SECURITY_WORLD_SID_AUTHORITY;
HANDLE hToken = NULL; /* initialized to an arbitrary value to
* silence a Purify UMR warning */
@@ -128,6 +131,7 @@ void _PR_NT_InitSids(void)
0, 0, 0, 0, 0, 0, 0,
&_pr_nt_sids.everyone);
PR_ASSERT(rv != 0);
+#endif
}
/*
@@ -139,6 +143,9 @@ void _PR_NT_InitSids(void)
void
_PR_NT_FreeSids(void)
{
+#ifdef WINCE
+ return;
+#else
if (_pr_nt_sids.owner) {
PR_Free(_pr_nt_sids.owner);
}
@@ -148,6 +155,7 @@ _PR_NT_FreeSids(void)
if (_pr_nt_sids.everyone) {
FreeSid(_pr_nt_sids.everyone);
}
+#endif
}
/*
@@ -168,6 +176,10 @@ _PR_NT_MakeSecurityDescriptorACL(
PSECURITY_DESCRIPTOR *resultSD,
PACL *resultACL)
{
+#ifdef WINCE
+ PR_SetError(PR_NOT_IMPLEMENTED_ERROR, 0);
+ return PR_FAILURE;
+#else
PSECURITY_DESCRIPTOR pSD = NULL;
PACL pACL = NULL;
DWORD cbACL; /* size of ACL */
@@ -261,6 +273,7 @@ failed:
PR_Free(pACL);
}
return PR_FAILURE;
+#endif
}
/*
diff --git a/pr/src/md/windows/objs.mk b/pr/src/md/windows/objs.mk
index 36f21a44..0c3fa665 100644
--- a/pr/src/md/windows/objs.mk
+++ b/pr/src/md/windows/objs.mk
@@ -51,7 +51,7 @@ CSRCS = ntmisc.c \
w32rng.c \
w32shm.c
else
-ifeq ($(OS_TARGET),WIN95)
+ifeq (,$(filter-out WIN95 WINCE, $(OS_TARGET)))
CSRCS = ntmisc.c \
ntsec.c \
ntsem.c \
diff --git a/pr/src/md/windows/w32ipcsem.c b/pr/src/md/windows/w32ipcsem.c
index 82201a80..443cd7fa 100644
--- a/pr/src/md/windows/w32ipcsem.c
+++ b/pr/src/md/windows/w32ipcsem.c
@@ -42,6 +42,30 @@
#include "primpl.h"
+#ifdef WINCE
+static HANDLE OpenSemaphore(DWORD inDesiredAccess,
+ BOOL inInheritHandle,
+ const char *inName)
+{
+ HANDLE retval = NULL;
+ HANDLE semaphore = NULL;
+ PRUnichar wideName[MAX_PATH]; /* name size is limited to MAX_PATH */
+
+ MultiByteToWideChar(CP_ACP, 0, inName, -1, wideName, MAX_PATH);
+ /* 0x7fffffff is the max count for our semaphore */
+ semaphore = CreateSemaphoreW(NULL, 0, 0x7fffffff, wideName);
+ if (NULL != semaphore) {
+ DWORD lastErr = GetLastError();
+
+ if (ERROR_ALREADY_EXISTS != lastErr)
+ CloseHandle(semaphore);
+ else
+ retval = semaphore;
+ }
+ return retval;
+}
+#endif
+
/*
* NSPR-to-NT access right mapping table for semaphore objects.
*
@@ -147,7 +171,16 @@ PRSem *_PR_MD_OPEN_SEMAPHORE(
sa.bInheritHandle = FALSE;
lpSA = &sa;
}
- sem->sem = CreateSemaphore(lpSA, value, 0x7fffffff, osname);
+#ifdef WINCE
+ {
+ /* The size of a sem's name is limited to MAX_PATH. */
+ PRUnichar wosname[MAX_PATH];
+ MultiByteToWideChar(CP_ACP, 0, osname, -1, wosname, MAX_PATH);
+ sem->sem = CreateSemaphoreW(lpSA, value, 0x7fffffff, wosname);
+ }
+#else
+ sem->sem = CreateSemaphoreA(lpSA, value, 0x7fffffff, osname);
+#endif
if (lpSA != NULL) {
_PR_NT_FreeSecurityDescriptorACL(pSD, pACL);
}
diff --git a/pr/src/md/windows/w32shm.c b/pr/src/md/windows/w32shm.c
index 136b20d2..e34a436a 100644
--- a/pr/src/md/windows/w32shm.c
+++ b/pr/src/md/windows/w32shm.c
@@ -119,13 +119,32 @@ extern PRSharedMemory * _MD_OpenSharedMemory(
sa.bInheritHandle = FALSE;
lpSA = &sa;
}
- shm->handle = CreateFileMapping(
+#ifdef WINCE
+ {
+ /*
+ * This is assuming that the name will never be larger than
+ * MAX_PATH. Should we dynamically allocate?
+ */
+ PRUnichar wideIpcName[MAX_PATH];
+ MultiByteToWideChar(CP_ACP, 0, shm->ipcname, -1,
+ wideIpcName, MAX_PATH);
+ shm->handle = CreateFileMappingW(
+ (HANDLE)-1 ,
+ lpSA,
+ flProtect,
+ dwHi,
+ dwLo,
+ wideIpcName);
+ }
+#else
+ shm->handle = CreateFileMappingA(
(HANDLE)-1 ,
lpSA,
flProtect,
dwHi,
dwLo,
shm->ipcname);
+#endif
if (lpSA != NULL) {
_PR_NT_FreeSecurityDescriptorACL(pSD, pACL);
}
@@ -156,7 +175,12 @@ extern PRSharedMemory * _MD_OpenSharedMemory(
}
}
} else {
+#ifdef WINCE
+ PR_SetError( PR_NOT_IMPLEMENTED_ERROR, 0 );
+ shm->handle = NULL; /* OpenFileMapping not supported */
+#else
shm->handle = OpenFileMapping( FILE_MAP_WRITE, TRUE, shm->ipcname );
+#endif
if ( NULL == shm->handle ) {
_PR_MD_MAP_DEFAULT_ERROR( GetLastError());
PR_LOG(_pr_shm_lm, PR_LOG_DEBUG,
diff --git a/pr/src/md/windows/w95sock.c b/pr/src/md/windows/w95sock.c
index fa5cd0d2..e7a6a87b 100644
--- a/pr/src/md/windows/w95sock.c
+++ b/pr/src/md/windows/w95sock.c
@@ -119,7 +119,7 @@ void _PR_MD_InitSockets(void)
/* if Vista or later... */
if (osvi.dwMajorVersion >= 6)
{
- libWinsock2 = LoadLibrary("Ws2_32.dll");
+ libWinsock2 = LoadLibraryW(L"Ws2_32.dll");
if (libWinsock2)
{
wsaioctlProc = (WSAIOCTLPROC)GetProcAddress(libWinsock2,
diff --git a/pr/src/md/windows/w95thred.c b/pr/src/md/windows/w95thred.c
index 5d8045aa..fcf0a549 100644
--- a/pr/src/md/windows/w95thred.c
+++ b/pr/src/md/windows/w95thred.c
@@ -234,15 +234,24 @@ _PR_MD_EXIT(PRIntn status)
PRInt32 _PR_MD_SETTHREADAFFINITYMASK(PRThread *thread, PRUint32 mask )
{
+#ifdef WINCE
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return -1;
+#else
DWORD_PTR rv;
rv = SetThreadAffinityMask(thread->md.handle, mask);
return rv?0:-1;
+#endif
}
PRInt32 _PR_MD_GETTHREADAFFINITYMASK(PRThread *thread, PRUint32 *mask)
{
+#ifdef WINCE
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return -1;
+#else
BOOL rv;
DWORD_PTR process_mask;
DWORD_PTR system_mask;
@@ -253,6 +262,7 @@ PRInt32 _PR_MD_GETTHREADAFFINITYMASK(PRThread *thread, PRUint32 *mask)
*mask = (PRUint32)process_mask;
return rv?0:-1;
+#endif
}
void