Name Description Size
.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