.cvsignore |
|
9 |
Makefile.in |
|
1379 |
ntdllmn.c |
The DLL entry point (DllMain) for NSPR.
The only reason we use DLLMain() now is to find out whether
the NSPR DLL is statically or dynamically loaded. When
dynamically loaded, we cannot use static thread-local storage.
However, static TLS is faster than the TlsXXX() functions.
So we want to use static TLS whenever we can. A global
variable _pr_use_static_tls is set in DllMain() during process
attachment to indicate whether it is safe to use static TLS
or not.
|
1641 |
ntgc.c |
GC related routines
|
2949 |
ntinrval.c |
NT interval timers
|
1046 |
ntio.c |
Windows NT IO module
This module handles IO for LOCAL_SCOPE and GLOBAL_SCOPE threads.
For LOCAL_SCOPE threads, we're using NT fibers. For GLOBAL_SCOPE threads
we're using NT-native threads.
When doing IO, we want to use completion ports for optimal performance
with fibers. But if we use completion ports for all IO, it is difficult
to project a blocking model with GLOBAL_SCOPE threads. To handle this
we create an extra thread for completing IO for GLOBAL_SCOPE threads.
We don't really want to complete IO on a separate thread for LOCAL_SCOPE
threads because it means extra context switches, which are really slow
on NT... Since we're using a single completion port, some IO will
be incorrectly completed on the GLOBAL_SCOPE IO thread; this will mean
extra context switching; but I don't think there is anything I can do
about it.
|
129529 |
ntmisc.c |
ntmisc.c
|
32394 |
ntsec.c |
ntsec.c
Implement the POSIX-style mode bits (access permissions) for
files and other securable objects in Windows NT using Windows
NT's security descriptors with appropriate discretionary
access-control lists.
|
7794 |
ntsem.c |
NT-specific semaphore handling code.
|
981 |
ntthread.c |
for _beginthreadex() |
14457 |
objs.mk |
|
884 |
w32ipcsem.c |
File: w32ipcsem.c
Description: implements named semaphores for NT and WIN95.
|
6183 |
w32poll.c |
This file implements _PR_MD_PR_POLL for Win32.
|
8536 |
w32rng.c |
|
1756 |
w32shm.c |
NSPR-to-NT access right mapping table for file-mapping objects.
The OR of these three access masks must equal FILE_MAP_ALL_ACCESS.
This is because if a file-mapping object with the specified name
exists, CreateFileMapping requests full access to the existing
object.
|
9543 |
w95cv.c |
w95cv.c -- Windows 95 Machine-Dependent Code for Condition Variables
We implement our own condition variable wait queue. Each thread
has a semaphore object (thread->md.blocked_sema) to block on while
waiting on a condition variable.
We use a deferred condition notify algorithm. When PR_NotifyCondVar
or PR_NotifyAllCondVar is called, the condition notifies are simply
recorded in the _MDLock structure. We defer the condition notifies
until right after we unlock the lock. This way the awakened threads
have a better chance to reaquire the lock.
|
10796 |
w95dllmain.c |
The DLL entry point (DllMain) for NSPR.
This is used to detach threads that were automatically attached by
nspr.
|
943 |
w95io.c |
Windows 95 IO module
Assumes synchronous I/O.
|
33004 |
w95sock.c |
Win95 Sockets module
|
21146 |
w95thred.c |
for _beginthreadex() |
8708 |
win32_errors.c |
On Win32, we map three kinds of error codes:
- GetLastError(): for Win32 functions
- WSAGetLastError(): for Winsock functions
- errno: for standard C library functions
GetLastError() and WSAGetLastError() return error codes in
non-overlapping ranges, so their error codes (ERROR_* and
WSAE*) can be mapped by the same function. On the other hand,
errno and GetLastError() have overlapping ranges, so we need
to use a separate function to map errno.
We do not check for WSAEINPROGRESS and WSAEINTR because we do not
use blocking Winsock 1.1 calls.
Except for the 'socket' call, we do not check for WSAEINITIALISED.
It is assumed that if Winsock is not initialized, that fact will
be detected at the time we create new sockets.
|
12372 |