Back to index

lightning-sunbird  0.9+nobinonly
Classes | Defines | Typedefs | Functions | Variables
_win95.h File Reference
#include "prio.h"
#include <windows.h>
#include <winsock.h>
#include <errno.h>

Go to the source code of this file.

Classes

struct  addrinfo
struct  _md_in6_addr
struct  _md_sockaddr_in6
struct  _MDCPU
struct  _MDThread
struct  _MDThreadStack
struct  _MDSegment
struct  _MDDir
struct  _MDCVar
struct  _MDNotified
struct  _MDLock
struct  _MDSemaphore
struct  _MDFileDesc
struct  _MDProcess
struct  _MDFileMap
union  _md_in6_addr._S6_un
struct  _MDNotified.cv

Defines

#define PR_LINKER_ARCH   "win32"
#define _PR_SI_SYSNAME   "WIN95"
#define _PR_SI_ARCHITECTURE   "x86" /* XXXMB hardcode for now */
#define HAVE_DLL
#define _PR_HAVE_GETADDRINFO
#define _PR_INET6_PROBE
#define AF_INET6   23
#define AI_CANONNAME   0x2
#define _PR_HAVE_MD_SOCKADDR_IN6
#define _PR_HAVE_THREADSAFE_GETHOST
#define _PR_HAVE_ATOMIC_OPS
#define PR_HAVE_WIN32_NAMED_SHARED_MEMORY
#define PR_NUM_GCREGS   8
#define GC_VMBASE   0x40000000
#define GC_VMLIMIT   0x00FFFFFF
#define _MD_MAGIC_THREAD   0x22222222
#define _MD_MAGIC_THREADSTACK   0x33333333
#define _MD_MAGIC_SEGMENT   0x44444444
#define _MD_MAGIC_DIR   0x55555555
#define _MD_MAGIC_CV   0x66666666
#define _MD_CV_NOTIFIED_LENGTH   6
#define _MD_GET_SP(thread)   (thread)->md.gcContext[6]
#define _MD_OPEN   _PR_MD_OPEN
#define _MD_OPEN_FILE   _PR_MD_OPEN_FILE
#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_CLOSE_FILE   _MD_CloseFile
#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_MAKE_DIR   _PR_MD_MAKE_DIR
#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_EACCES   WSAEACCES
#define _MD_EADDRINUSE   WSAEADDRINUSE
#define _MD_EADDRNOTAVAIL   WSAEADDRNOTAVAIL
#define _MD_EAFNOSUPPORT   WSAEAFNOSUPPORT
#define _MD_EAGAIN   WSAEWOULDBLOCK
#define _MD_EALREADY   WSAEALREADY
#define _MD_EBADF   WSAEBADF
#define _MD_ECONNREFUSED   WSAECONNREFUSED
#define _MD_ECONNRESET   WSAECONNRESET
#define _MD_EFAULT   WSAEFAULT
#define _MD_EINPROGRESS   WSAEINPROGRESS
#define _MD_EINTR   WSAEINTR
#define _MD_EINVAL   EINVAL
#define _MD_EISCONN   WSAEISCONN
#define _MD_ENETUNREACH   WSAENETUNREACH
#define _MD_ENOENT   ENOENT
#define _MD_ENOTCONN   WSAENOTCONN
#define _MD_ENOTSOCK   WSAENOTSOCK
#define _MD_EOPNOTSUPP   WSAEOPNOTSUPP
#define _MD_EWOULDBLOCK   WSAEWOULDBLOCK
#define _MD_GET_SOCKET_ERROR()   WSAGetLastError()
#define _MD_SET_SOCKET_ERROR(_err)   WSASetLastError(_err)
#define _MD_INIT_FILEDESC(fd)
#define _MD_MAKE_NONBLOCK   _MD_MakeNonblock
#define _MD_INIT_FD_INHERITABLE   _PR_MD_INIT_FD_INHERITABLE
#define _MD_QUERY_FD_INHERITABLE   _PR_MD_QUERY_FD_INHERITABLE
#define _MD_SHUTDOWN   _PR_MD_SHUTDOWN
#define _MD_LISTEN   _PR_MD_LISTEN
#define _MD_CLOSE_SOCKET   _MD_CloseSocket
#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_SET_FD_INHERITABLE   _PR_MD_SET_FD_INHERITABLE
#define _MD_SELECT   select
#define _MD_FSYNC   _PR_MD_FSYNC
#define READ_FD   1
#define WRITE_FD   2
#define _MD_INIT_ATOMIC()
#define _MD_ATOMIC_INCREMENT(x)   InterlockedIncrement((PLONG)x)
#define _MD_ATOMIC_ADD(ptr, val)   (InterlockedExchangeAdd((PLONG)ptr, (LONG)val) + val)
#define _MD_ATOMIC_DECREMENT(x)   InterlockedDecrement((PLONG)x)
#define _MD_ATOMIC_SET(x, y)   InterlockedExchange((PLONG)x, (LONG)y)
#define _MD_INIT_IO   _PR_MD_INIT_IO
#define _MD_SOCKET   _PR_MD_SOCKET
#define _MD_SOCKETAVAILABLE   _MD_SocketAvailable
#define _MD_PIPEAVAILABLE   _PR_MD_PIPEAVAILABLE
#define _MD_CONNECT   _PR_MD_CONNECT
#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_PR_POLL   _PR_MD_PR_POLL
#define _MD_PAUSE_CPU
#define PR_DIRECTORY_SEPARATOR   '\\'
#define PR_DIRECTORY_SEPARATOR_STR   "\\"
#define PR_PATH_SEPARATOR   ';'
#define PR_PATH_SEPARATOR_STR   ";"
#define _MD_ERRNO()   GetLastError()
#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_INIT_SEGS()
#define _MD_ALLOC_SEGMENT(seg, size, vaddr)   0
#define _MD_FREE_SEGMENT(seg)
#define _MD_GET_ENV   _PR_MD_GET_ENV
#define _MD_PUT_ENV   _PR_MD_PUT_ENV
#define _MD_DEFAULT_STACK_SIZE   0
#define _MD_INIT_THREAD   _PR_MD_INIT_THREAD
#define _MD_INIT_ATTACHED_THREAD   _PR_MD_INIT_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_EXIT   _PR_MD_EXIT
#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_BEGIN_SUSPEND_ALL()
#define _MD_BEGIN_RESUME_ALL()
#define _MD_END_SUSPEND_ALL()
#define _MD_END_RESUME_ALL()
#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)),0)
#define _MD_UNLOCK   _PR_MD_UNLOCK
#define _MD_WAIT   _PR_MD_WAIT
#define _MD_WAKEUP_WAITER   _PR_MD_WAKEUP_WAITER
#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_IOQ_LOCK()
#define _MD_IOQ_UNLOCK()
#define _MD_START_INTERRUPTS()
#define _MD_STOP_INTERRUPTS()
#define _MD_DISABLE_CLOCK_INTERRUPTS()
#define _MD_ENABLE_CLOCK_INTERRUPTS()
#define _MD_BLOCK_CLOCK_INTERRUPTS()
#define _MD_UNBLOCK_CLOCK_INTERRUPTS()
#define _MD_EARLY_INIT   _PR_MD_EARLY_INIT
#define _MD_FINAL_INIT()
#define _MD_INIT_CPUS()
#define _MD_INIT_RUNNING_CPU(cpu)
#define _MD_CREATE_PROCESS   _PR_CreateWindowsProcess
#define _MD_DETACH_PROCESS   _PR_DetachWindowsProcess
#define _MD_WAIT_PROCESS   _PR_WaitWindowsProcess
#define _MD_KILL_PROCESS   _PR_KillWindowsProcess
#define _MD_CLEANUP_BEFORE_EXIT   _PR_MD_CLEANUP_BEFORE_EXIT
#define _MD_INIT_CONTEXT(_thread, _sp, _main, status)
#define _MD_SWITCH_CONTEXT
#define _MD_RESTORE_CONTEXT
#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)
#define _MD_GET_ATTACHED_THREAD()   ((PRThread *) TlsGetValue(_pr_currentThreadIndex))
#define _MD_SET_CURRENT_THREAD(_thread)   TlsSetValue(_pr_currentThreadIndex, (_thread))
#define _MD_LAST_THREAD()   ((PRThread *) TlsGetValue(_pr_lastThreadIndex))
#define _MD_SET_LAST_THREAD(_thread)   TlsSetValue(_pr_lastThreadIndex, 0)
#define _MD_CURRENT_CPU()   ((struct _PRCPU *) TlsGetValue(_pr_currentCPUIndex))
#define _MD_SET_CURRENT_CPU(_cpu)   TlsSetValue(_pr_currentCPUIndex, 0)
#define LOCK_SCHEDULER()   0
#define UNLOCK_SCHEDULER()   0
#define _PR_LockSched()   0
#define _PR_UnlockSched()   0
#define _MD_INIT_LOCKS()
#define _MD_INIT_STACK(stack, redzone)
#define _MD_CLEAR_STACK(stack)
#define _MD_CREATE_FILE_MAP   _MD_CreateFileMap
#define _MD_GET_MEM_MAP_ALIGNMENT   _MD_GetMemMapAlignment
#define _MD_MEM_MAP   _MD_MemMap
#define _MD_MEM_UNMAP   _MD_MemUnmap
#define _MD_CLOSE_FILE_MAP   _MD_CloseFileMap
#define _PR_HAVE_NAMED_SEMAPHORES
#define _MD_OPEN_SEMAPHORE   _PR_MD_OPEN_SEMAPHORE
#define _MD_WAIT_SEMAPHORE   _PR_MD_WAIT_SEMAPHORE
#define _MD_POST_SEMAPHORE   _PR_MD_POST_SEMAPHORE
#define _MD_CLOSE_SEMAPHORE   _PR_MD_CLOSE_SEMAPHORE
#define _MD_DELETE_SEMAPHORE(name)   PR_SUCCESS /* no op */

Typedefs

typedef void(* FiberFunc )(void *)
typedef PRInt32 PR_CONTEXT_TYPE [PR_NUM_GCREGS]
typedef struct _MDNotified

Functions

void _PR_NT_InitSids (void)
void _PR_NT_FreeSids (void)
PRStatus _PR_NT_MakeSecurityDescriptorACL (PRIntn mode, DWORD accessTable[], PSECURITY_DESCRIPTOR *resultSD, PACL *resultACL)
void _PR_NT_FreeSecurityDescriptorACL (PSECURITY_DESCRIPTOR pSD, PACL pACL)
PRInt32 _MD_CloseFile (PRInt32 osfd)
void _PR_MD_InitSockets (void)
void _PR_MD_CleanupSockets (void)
void _MD_MakeNonblock (PRFileDesc *f)
PRInt32 _MD_CloseSocket (PRInt32 osfd)
PRInt32 _MD_SocketAvailable (PRFileDesc *fd)
PRInt32 _MD_Accept (PRFileDesc *fd, PRNetAddr *raddr, PRUint32 *rlen, PRIntervalTime timeout)
struct PRProcess_PR_CreateWindowsProcess (const char *path, char *const *argv, char *const *envp, const struct PRProcessAttr *attr)
PRStatus _PR_DetachWindowsProcess (struct PRProcess *process)
PRStatus _PR_WaitWindowsProcess (struct PRProcess *process, PRInt32 *exitCode)
PRStatus _PR_KillWindowsProcess (struct PRProcess *process)
void _PR_FileTimeToPRTime (const FILETIME *filetime, PRTime *prtm)
struct PRThread_MD_CURRENT_THREAD (void)
PRStatus _MD_CreateFileMap (struct PRFileMap *fmap, PRInt64 size)
PRInt32 _MD_GetMemMapAlignment (void)
void_MD_MemMap (struct PRFileMap *fmap, PRInt64 offset, PRUint32 len)
PRStatus _MD_MemUnmap (void *addr, PRUint32 size)
PRStatus _MD_CloseFileMap (struct PRFileMap *fmap)

Variables

struct PRLock_pr_schedLock
PRBool _pr_useUnicode
DWORD _pr_currentThreadIndex
DWORD _pr_lastThreadIndex
DWORD _pr_currentCPUIndex

Class Documentation

struct addrinfo

Definition at line 120 of file _openvms.h.

Collaboration diagram for addrinfo:
Class Members
struct sockaddr * ai_addr
size_t ai_addrlen
char * ai_canonname
int ai_family
int ai_flags
struct addrinfo * ai_next
int ai_protocol
int ai_socktype
struct _md_in6_addr

Definition at line 115 of file _hpux.h.

Class Members
union _md_in6_addr _S6_un
union _md_in6_addr _S6_un
union _md_in6_addr _s6_un
union _md_in6_addr _S6_un
union _md_in6_addr _S6_un
struct _md_sockaddr_in6

Definition at line 124 of file _hpux.h.

Class Members
PRUint32 __sin6_src_id
PRInt16 sin6_family
PRUint16 sin6_family
PRUint32 sin6_flowinfo
PRUint16 sin6_port
PRUint32 sin6_scope_id
struct _MDCPU

Definition at line 221 of file _aix.h.

Collaboration diagram for _MDCPU:
Class Members
PRInt16 fd_exception_cnt
fd_set fd_exception_set
PRInt16 fd_read_cnt
fd_set fd_read_set
PRInt16 fd_write_cnt
fd_set fd_write_set
PRInt32 id
PRCList ioQ
PRInt32 ioq_max_osfd
PRUint32 ioq_timeout
AbsoluteTime lastThreadSwitch
AbsoluteTime lastWakeUpProcess
PRInt32 suspending_id
PRBool trackScheduling
int unused
int8 unused
struct _MDThreadStack

Definition at line 165 of file _aix.h.

Class Members
PRIntn cxByteCount
PRUint32 magic
PRInt8 notused
char * stackTop
struct _MDSegment

Definition at line 181 of file _aix.h.

Class Members
PRUint32 magic
PRInt8 notused
struct _MDDir

Definition at line 170 of file _beos.h.

Collaboration diagram for _MDDir:
Class Members
char * currentEntryName
DIR * d
WIN32_FIND_DATA d_entry
union _MDDir d_entry
HANDLE d_hdl
HDIR d_hdl
struct dirent * dir
PRBool firstEntry
long ioDirID
short ioFDirIndex
short ioVRefNum
PRUint32 magic
struct _MDCVar

Definition at line 177 of file _aix.h.

Collaboration diagram for _MDCVar:
Class Members
int16 count
PRUint32 magic
ulock_t mdcvar_lock
PRInt8 notused
PRIntn nwait
sem_id sem1
sem_id sem2
PRUint32 unused
struct PRThread * waitHead
struct PRThread * waitTail
struct _MDNotified

Definition at line 178 of file _os2.h.

Collaboration diagram for _MDNotified:
Class Members
struct _MDNotified cv
struct _MDNotified cv
PRIntn length
_MDNotified * link
struct _MDLock

Definition at line 169 of file _aix.h.

Class Members
usptr_t * arena
int32 benaphoreCount
ulock_t lock
PRUint32 magic
PRUint32 mutex
CRITICAL_SECTION mutex
HMTX mutex
PRInt8 notused
sem_id semaphoreID
struct _MDSemaphore

Definition at line 173 of file _aix.h.

Class Members
PRInt8 notused
HEV sem
HANDLE sem
usema_t * sem
sem_id sid
PRInt32 unused
struct _MDFileDesc

Definition at line 158 of file _beos.h.

Collaboration diagram for _MDFileDesc:
Class Members
PRBool accepted_socket
int connectReturnError
int connectReturnValue
PRBool connectValueValid
OTReason disconnectError
PRBool doListen
PRPackedBool exceptReady
PRBool io_model_committed
_MDSocketCallerInfo misc
PRLock * miscLock
PRPackedBool orderlyDisconnect
int osfd
PRInt32 osfd
PRNetAddr peer_addr
_MDSocketCallerInfo read
PRPackedBool readReady
PRInt32 sock_state
PRBool sync_file_io
_MDSocketCallerInfo write
PRPackedBool writeReady
struct _MDProcess

Definition at line 141 of file _beos.h.

Class Members
HANDLE handle
DWORD id
PRInt8 notused
pid_t pid
PID pid
struct _MDFileMap

Definition at line 183 of file _beos.h.

Class Members
DWORD dwAccess
PRIntn flags
HANDLE hFileMap
PRBool isAnonFM
PRIntn prot
PRInt8 unused
union _md_in6_addr._S6_un

Definition at line 78 of file _win95.h.

Class Members
PRUint16 _S6_u16
PRUint8 _S6_u8
struct _MDNotified.cv

Definition at line 182 of file _win95.h.

Class Members
struct _MDCVar * cv
struct PRThread * notifyHead
PRIntn times

Define Documentation

Definition at line 349 of file _win95.h.

Definition at line 259 of file _win95.h.

#define _MD_ALLOC_SEGMENT (   seg,
  size,
  vaddr 
)    0

Definition at line 371 of file _win95.h.

#define _MD_ATOMIC_ADD (   ptr,
  val 
)    (InterlockedExchangeAdd((PLONG)ptr, (LONG)val) + val)

Definition at line 333 of file _win95.h.

#define _MD_ATOMIC_DECREMENT (   x)    InterlockedDecrement((PLONG)x)

Definition at line 334 of file _win95.h.

#define _MD_ATOMIC_INCREMENT (   x)    InterlockedIncrement((PLONG)x)

Definition at line 332 of file _win95.h.

#define _MD_ATOMIC_SET (   x,
  y 
)    InterlockedExchange((PLONG)x, (LONG)y)

Definition at line 336 of file _win95.h.

Definition at line 395 of file _win95.h.

Definition at line 394 of file _win95.h.

Definition at line 350 of file _win95.h.

Definition at line 431 of file _win95.h.

Definition at line 385 of file _win95.h.

Definition at line 460 of file _win95.h.

Definition at line 519 of file _win95.h.

Definition at line 366 of file _win95.h.

Definition at line 252 of file _win95.h.

Definition at line 542 of file _win95.h.

Definition at line 549 of file _win95.h.

Definition at line 312 of file _win95.h.

Definition at line 346 of file _win95.h.

Definition at line 529 of file _win95.h.

Definition at line 441 of file _win95.h.

Definition at line 382 of file _win95.h.

#define _MD_CURRENT_CPU ( )    ((struct _PRCPU *) TlsGetValue(_pr_currentCPUIndex))

Definition at line 504 of file _win95.h.

Definition at line 177 of file _win95.h.

Definition at line 379 of file _win95.h.

Definition at line 260 of file _win95.h.

#define _MD_DELETE_SEMAPHORE (   name)    PR_SUCCESS /* no op */

Definition at line 550 of file _win95.h.

Definition at line 449 of file _win95.h.

Definition at line 429 of file _win95.h.

#define _MD_EACCES   WSAEACCES

Definition at line 281 of file _win95.h.

#define _MD_EADDRINUSE   WSAEADDRINUSE

Definition at line 282 of file _win95.h.

#define _MD_EADDRNOTAVAIL   WSAEADDRNOTAVAIL

Definition at line 283 of file _win95.h.

#define _MD_EAFNOSUPPORT   WSAEAFNOSUPPORT

Definition at line 284 of file _win95.h.

#define _MD_EAGAIN   WSAEWOULDBLOCK

Definition at line 285 of file _win95.h.

#define _MD_EALREADY   WSAEALREADY

Definition at line 286 of file _win95.h.

Definition at line 433 of file _win95.h.

#define _MD_EBADF   WSAEBADF

Definition at line 287 of file _win95.h.

#define _MD_ECONNREFUSED   WSAECONNREFUSED

Definition at line 288 of file _win95.h.

#define _MD_ECONNRESET   WSAECONNRESET

Definition at line 289 of file _win95.h.

#define _MD_EFAULT   WSAEFAULT

Definition at line 290 of file _win95.h.

#define _MD_EINPROGRESS   WSAEINPROGRESS

Definition at line 291 of file _win95.h.

#define _MD_EINTR   WSAEINTR

Definition at line 292 of file _win95.h.

Definition at line 293 of file _win95.h.

#define _MD_EISCONN   WSAEISCONN

Definition at line 294 of file _win95.h.

Definition at line 430 of file _win95.h.

Definition at line 397 of file _win95.h.

Definition at line 396 of file _win95.h.

#define _MD_ENETUNREACH   WSAENETUNREACH

Definition at line 295 of file _win95.h.

Definition at line 296 of file _win95.h.

#define _MD_ENOTCONN   WSAENOTCONN

Definition at line 297 of file _win95.h.

#define _MD_ENOTSOCK   WSAENOTSOCK

Definition at line 298 of file _win95.h.

#define _MD_EOPNOTSUPP   WSAEOPNOTSUPP

Definition at line 299 of file _win95.h.

Definition at line 364 of file _win95.h.

#define _MD_EWOULDBLOCK   WSAEWOULDBLOCK

Definition at line 300 of file _win95.h.

Definition at line 389 of file _win95.h.

Definition at line 388 of file _win95.h.

Definition at line 434 of file _win95.h.

Definition at line 416 of file _win95.h.

#define _MD_FREE_LOCK (   lock)    DeleteCriticalSection(&((lock)->mutex))

Definition at line 404 of file _win95.h.

Definition at line 372 of file _win95.h.

Definition at line 322 of file _win95.h.

Definition at line 496 of file _win95.h.

Definition at line 375 of file _win95.h.

Definition at line 470 of file _win95.h.

Definition at line 532 of file _win95.h.

Definition at line 301 of file _win95.h.

#define _MD_GET_SP (   thread)    (thread)->md.gcContext[6]

Definition at line 227 of file _win95.h.

Definition at line 253 of file _win95.h.

Definition at line 254 of file _win95.h.

Definition at line 255 of file _win95.h.

Definition at line 256 of file _win95.h.

Definition at line 317 of file _win95.h.

Definition at line 316 of file _win95.h.

Definition at line 318 of file _win95.h.

Definition at line 387 of file _win95.h.

Definition at line 326 of file _win95.h.

Definition at line 381 of file _win95.h.

#define _MD_INIT_CONTEXT (   _thread,
  _sp,
  _main,
  status 
)
Value:
PR_BEGIN_MACRO \
    *status = PR_TRUE; \
    PR_END_MACRO

Definition at line 461 of file _win95.h.

Definition at line 435 of file _win95.h.

Definition at line 307 of file _win95.h.

Definition at line 304 of file _win95.h.

Definition at line 338 of file _win95.h.

Definition at line 515 of file _win95.h.

Definition at line 436 of file _win95.h.

Definition at line 370 of file _win95.h.

Definition at line 518 of file _win95.h.

Definition at line 380 of file _win95.h.

Definition at line 469 of file _win95.h.

Definition at line 473 of file _win95.h.

Definition at line 472 of file _win95.h.

Definition at line 471 of file _win95.h.

Definition at line 422 of file _win95.h.

Definition at line 423 of file _win95.h.

Definition at line 457 of file _win95.h.

#define _MD_LAST_THREAD ( )    ((PRThread *) TlsGetValue(_pr_lastThreadIndex))

Definition at line 500 of file _win95.h.

Definition at line 310 of file _win95.h.

#define _MD_LOCK (   lock)    EnterCriticalSection(&((lock)->mutex))

Definition at line 405 of file _win95.h.

Definition at line 264 of file _win95.h.

Definition at line 249 of file _win95.h.

Definition at line 250 of file _win95.h.

#define _MD_MAGIC_CV   0x66666666

Definition at line 113 of file _win95.h.

#define _MD_MAGIC_DIR   0x55555555

Definition at line 112 of file _win95.h.

#define _MD_MAGIC_SEGMENT   0x44444444

Definition at line 111 of file _win95.h.

#define _MD_MAGIC_THREAD   0x22222222

Definition at line 109 of file _win95.h.

#define _MD_MAGIC_THREADSTACK   0x33333333

Definition at line 110 of file _win95.h.

Definition at line 262 of file _win95.h.

Definition at line 306 of file _win95.h.

Definition at line 536 of file _win95.h.

Definition at line 539 of file _win95.h.

Definition at line 261 of file _win95.h.

Definition at line 415 of file _win95.h.

#define _MD_NEW_LOCK (   lock)    (InitializeCriticalSection(&((lock)->mutex)),(lock)->notified.length=0,(lock)->notified.link=NULL,PR_SUCCESS)

Definition at line 403 of file _win95.h.

Definition at line 417 of file _win95.h.

Definition at line 418 of file _win95.h.

Definition at line 244 of file _win95.h.

Definition at line 365 of file _win95.h.

Definition at line 245 of file _win95.h.

Definition at line 546 of file _win95.h.

Definition at line 357 of file _win95.h.

Definition at line 345 of file _win95.h.

Definition at line 548 of file _win95.h.

Definition at line 353 of file _win95.h.

Definition at line 376 of file _win95.h.

Definition at line 308 of file _win95.h.

Definition at line 246 of file _win95.h.

Definition at line 367 of file _win95.h.

Definition at line 351 of file _win95.h.

Definition at line 314 of file _win95.h.

Definition at line 258 of file _win95.h.

Definition at line 466 of file _win95.h.

Definition at line 393 of file _win95.h.

Definition at line 391 of file _win95.h.

Definition at line 263 of file _win95.h.

Definition at line 321 of file _win95.h.

Definition at line 352 of file _win95.h.

Definition at line 313 of file _win95.h.

#define _MD_SET_CURRENT_CPU (   _cpu)    TlsSetValue(_pr_currentCPUIndex, 0)

Definition at line 505 of file _win95.h.

#define _MD_SET_CURRENT_THREAD (   _thread)    TlsSetValue(_pr_currentThreadIndex, (_thread))

Definition at line 497 of file _win95.h.

Definition at line 320 of file _win95.h.

#define _MD_SET_LAST_THREAD (   _thread)    TlsSetValue(_pr_lastThreadIndex, 0)

Definition at line 501 of file _win95.h.

Definition at line 384 of file _win95.h.

#define _MD_SET_SOCKET_ERROR (   _err)    WSASetLastError(_err)

Definition at line 302 of file _win95.h.

Definition at line 319 of file _win95.h.

Definition at line 386 of file _win95.h.

Definition at line 309 of file _win95.h.

Definition at line 342 of file _win95.h.

Definition at line 344 of file _win95.h.

#define _MD_SOCKETPAIR (   s,
  type,
  proto,
  sv 
)    -1

Definition at line 315 of file _win95.h.

Definition at line 427 of file _win95.h.

Definition at line 257 of file _win95.h.

Definition at line 428 of file _win95.h.

Definition at line 392 of file _win95.h.

Definition at line 390 of file _win95.h.

Definition at line 465 of file _win95.h.

#define _MD_TEST_AND_LOCK (   lock)    (EnterCriticalSection(&((lock)->mutex)),0)

Definition at line 406 of file _win95.h.

Definition at line 265 of file _win95.h.

Definition at line 432 of file _win95.h.

Definition at line 407 of file _win95.h.

Definition at line 266 of file _win95.h.

Definition at line 410 of file _win95.h.

Definition at line 414 of file _win95.h.

Definition at line 453 of file _win95.h.

Definition at line 547 of file _win95.h.

Definition at line 411 of file _win95.h.

Definition at line 247 of file _win95.h.

Definition at line 248 of file _win95.h.

Definition at line 383 of file _win95.h.

Definition at line 93 of file _win95.h.

Definition at line 57 of file _win95.h.

Definition at line 75 of file _win95.h.

Definition at line 545 of file _win95.h.

Definition at line 92 of file _win95.h.

Definition at line 58 of file _win95.h.

Definition at line 400 of file _win95.h.

#define _PR_LockSched ( )    0

Definition at line 511 of file _win95.h.

#define _PR_SI_ARCHITECTURE   "x86" /* XXXMB hardcode for now */

Definition at line 53 of file _win95.h.

#define _PR_SI_SYSNAME   "WIN95"

Definition at line 52 of file _win95.h.

Definition at line 401 of file _win95.h.

#define _PR_UnlockSched ( )    0

Definition at line 512 of file _win95.h.

#define AF_INET6   23

Definition at line 60 of file _win95.h.

#define AI_CANONNAME   0x2

Definition at line 63 of file _win95.h.

#define GC_VMBASE   0x40000000

Definition at line 106 of file _win95.h.

#define GC_VMLIMIT   0x00FFFFFF

Definition at line 107 of file _win95.h.

Definition at line 55 of file _win95.h.

#define LOCK_SCHEDULER ( )    0

Definition at line 509 of file _win95.h.

Definition at line 360 of file _win95.h.

Definition at line 361 of file _win95.h.

Definition at line 94 of file _win95.h.

#define PR_LINKER_ARCH   "win32"

Definition at line 51 of file _win95.h.

Definition at line 104 of file _win95.h.

Definition at line 362 of file _win95.h.

Definition at line 363 of file _win95.h.

#define READ_FD   1

Definition at line 323 of file _win95.h.

#define UNLOCK_SCHEDULER ( )    0

Definition at line 510 of file _win95.h.

#define WRITE_FD   2

Definition at line 324 of file _win95.h.


Typedef Documentation

typedef struct _MDNotified

Definition at line 178 of file _win95.h.

typedef void(* FiberFunc)(void *)

Definition at line 102 of file _win95.h.

Definition at line 105 of file _win95.h.


Function Documentation

PRInt32 _MD_Accept ( PRFileDesc fd,
PRNetAddr raddr,
PRUint32 rlen,
PRIntervalTime  timeout 
)

Definition at line 267 of file os2sock.c.

{
    PRInt32 osfd = fd->secret->md.osfd;
    PRInt32 rv, err;
    PRThread *me = _PR_MD_CURRENT_THREAD();

    while ((rv = accept(osfd, (struct sockaddr*) addr, (int*)addrlen)) == -1)
    {
        err = sock_errno();
        if ((err == EWOULDBLOCK) || (err == ECONNABORTED))
        {
            if (fd->secret->nonblocking) {
                break;
            }
                if ((rv = socket_io_wait(osfd, READ_FD, timeout)) < 0)
                    goto done;
        } else if ((err == EINTR) && (!_PR_PENDING_INTERRUPT(me))){
            continue;
        } else {
            break;
        }
    }
    if (rv < 0) {
        _PR_MD_MAP_ACCEPT_ERROR(err);
    }
done:
    return(rv);
}

Here is the call graph for this function:

Definition at line 426 of file os2io.c.

{
    PRInt32 rv;
    
    rv = DosClose((HFILE)osfd);
       if (rv != NO_ERROR)
              _PR_MD_MAP_CLOSE_ERROR(rv);
    return rv;
}
PRStatus _MD_CloseFileMap ( struct PRFileMap fmap)

Definition at line 1943 of file macio.c.

{
#pragma unused (fmap)

    PR_SetError(PR_NOT_IMPLEMENTED_ERROR, 0);
    return PR_FAILURE;
}

Definition at line 91 of file os2sock.c.

{
    PRInt32 rv, err;

    rv = soclose(osfd);
    if (rv == -1) {
        err = sock_errno();
        _PR_MD_MAP_CLOSE_ERROR(err);
    }
    return rv;
}

Here is the call graph for this function:

PRStatus _MD_CreateFileMap ( struct PRFileMap fmap,
PRInt64  size 
)

Definition at line 1910 of file macio.c.

{
#pragma unused (fmap, size)

    PR_SetError(PR_NOT_IMPLEMENTED_ERROR, 0);
    return PR_FAILURE;
}
struct PRThread* _MD_CURRENT_THREAD ( void  ) [read]

Definition at line 392 of file os2thred.c.

{
    PRThread *thread;

    thread = _MD_GET_ATTACHED_THREAD();

    if (NULL == thread) {
        thread = _PRI_AttachThread(PR_USER_THREAD, PR_PRIORITY_NORMAL, NULL, 0);
    }

    PR_ASSERT(thread != NULL);
    return thread;
}

Definition at line 1918 of file macio.c.

{
    PR_SetError(PR_NOT_IMPLEMENTED_ERROR, 0);
    return -1;
}

Definition at line 667 of file os2sock.c.

{
    PRInt32 osfd = fd->secret->md.osfd;
    PRInt32 err;
    PRUint32  one = 1;
    
    if (osfd <= 2) {
        /* Don't mess around with stdin, stdout or stderr */
        return;
    }

    err = _OS2_IOCTL( osfd, FIONBIO, (char *) &one, sizeof(one));
    if ( err != 0 )
    {
        err = sock_errno();
        _PR_MD_MAP_SOCKET_ERROR(err);
    }
}
void* _MD_MemMap ( struct PRFileMap fmap,
PRInt64  offset,
PRUint32  len 
)

Definition at line 1924 of file macio.c.

{
#pragma unused (fmap, offset, len)

    PR_SetError(PR_NOT_IMPLEMENTED_ERROR, 0);
    return NULL;
}
PRStatus _MD_MemUnmap ( void addr,
PRUint32  size 
)

Definition at line 1935 of file macio.c.

{
#pragma unused (addr, len)

    PR_SetError(PR_NOT_IMPLEMENTED_ERROR, 0);
    return PR_FAILURE;
}

Definition at line 104 of file os2sock.c.

{
    PRInt32 result;

    if (_OS2_IOCTL(fd->secret->md.osfd, FIONREAD, (char *) &result, sizeof(result)) < 0) {
        PR_SetError(PR_BAD_DESCRIPTOR_ERROR, sock_errno());
        return -1;
    }
    return result;
}

Here is the call graph for this function:

struct PRProcess* _PR_CreateWindowsProcess ( const char *  path,
char *const argv,
char *const envp,
const struct PRProcessAttr attr 
) [read]

Definition at line 444 of file ntmisc.c.

{
    CloseHandle(process->md.handle);
    PR_DELETE(process);
    return PR_SUCCESS;
}
void _PR_FileTimeToPRTime ( const FILETIME *  filetime,
PRTime prtm 
)

Definition at line 2854 of file ntio.c.

{
    PR_ASSERT(sizeof(FILETIME) == sizeof(PRTime));
    CopyMemory(prtm, filetime, sizeof(PRTime));
#ifdef __GNUC__
    *prtm = (*prtm - _pr_filetime_offset) / 10LL;
#else
    *prtm = (*prtm - _pr_filetime_offset) / 10i64;
#endif

#ifdef DEBUG
    /* Doublecheck our calculation. */
    {
        SYSTEMTIME systime;
        PRExplodedTime etm;
        PRTime cmp; /* for comparison */
        BOOL rv;

        rv = FileTimeToSystemTime(filetime, &systime);
        PR_ASSERT(0 != rv);

        /*
         * PR_ImplodeTime ignores wday and yday.
         */
        etm.tm_usec = systime.wMilliseconds * PR_USEC_PER_MSEC;
        etm.tm_sec = systime.wSecond;
        etm.tm_min = systime.wMinute;
        etm.tm_hour = systime.wHour;
        etm.tm_mday = systime.wDay;
        etm.tm_month = systime.wMonth - 1;
        etm.tm_year = systime.wYear;
        /*
         * It is not well-documented what time zone the FILETIME's
         * are in.  WIN32_FIND_DATA is documented to be in UTC (GMT).
         * But BY_HANDLE_FILE_INFORMATION is unclear about this.
         * By our best judgement, we assume that FILETIME is in UTC.
         */
        etm.tm_params.tp_gmt_offset = 0;
        etm.tm_params.tp_dst_offset = 0;
        cmp = PR_ImplodeTime(&etm);

        /*
         * SYSTEMTIME is in milliseconds precision, so we convert PRTime's
         * microseconds to milliseconds before doing the comparison.
         */
        PR_ASSERT((cmp / PR_USEC_PER_MSEC) == (*prtm / PR_USEC_PER_MSEC));
    }
#endif /* DEBUG */
}

Here is the caller graph for this function:

PRStatus _PR_KillWindowsProcess ( struct PRProcess process)

Definition at line 476 of file ntmisc.c.

{
    /*
     * On Unix, if a process terminates normally, its exit code is
     * between 0 and 255.  So here on Windows, we use the exit code
     * 256 to indicate that the process is killed.
     */
    if (TerminateProcess(process->md.handle, 256)) {
       return PR_SUCCESS;
    }
    PR_SetError(PR_UNKNOWN_ERROR, GetLastError());
    return PR_FAILURE;
}

Definition at line 135 of file w95sock.c.

Here is the caller graph for this function:

Definition at line 111 of file w95sock.c.

{
    OSVERSIONINFO osvi;

    memset(&osvi, 0, sizeof(osvi));
    osvi.dwOSVersionInfoSize = sizeof(osvi);
    GetVersionEx(&osvi);

    /* if Vista or later... */
    if (osvi.dwMajorVersion >= 6)
    {
        libWinsock2 = LoadLibrary("Ws2_32.dll");
        if (libWinsock2)
        {
            wsaioctlProc = (WSAIOCTLPROC)GetProcAddress(libWinsock2, 
                                                        "WSAIoctl");
            if (wsaioctlProc)
            {
                socketSetCompatMode = PR_TRUE;
            }
        }
    }
}

Here is the call graph for this function:

Here is the caller graph for this function:

void _PR_NT_FreeSecurityDescriptorACL ( PSECURITY_DESCRIPTOR  pSD,
PACL  pACL 
)

Definition at line 271 of file ntsec.c.

{
    if (pSD) {
        PR_Free(pSD);
    }
    if (pACL) {
        PR_Free(pACL);
    }
}

Here is the caller graph for this function:

Definition at line 140 of file ntsec.c.

{
    if (_pr_nt_sids.owner) {
        PR_Free(_pr_nt_sids.owner);
    }
    if (_pr_nt_sids.group) {
        PR_Free(_pr_nt_sids.group);
    }
    if (_pr_nt_sids.everyone) {
        FreeSid(_pr_nt_sids.everyone);
    }
}

Here is the caller graph for this function:

Definition at line 70 of file ntsec.c.

{
    SID_IDENTIFIER_AUTHORITY SIDAuthWorld = SECURITY_WORLD_SID_AUTHORITY;
    HANDLE hToken = NULL; /* initialized to an arbitrary value to
                           * silence a Purify UMR warning */
    UCHAR infoBuffer[1024];
    PTOKEN_OWNER pTokenOwner = (PTOKEN_OWNER) infoBuffer;
    PTOKEN_PRIMARY_GROUP pTokenPrimaryGroup
            = (PTOKEN_PRIMARY_GROUP) infoBuffer;
    DWORD dwLength;
    BOOL rv;

    /*
     * Look up and make a copy of the owner and primary group
     * SIDs in the access token of the calling process.
     */
    rv = OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &hToken);
    if (rv == 0) {
        /*
         * On non-NT systems, this function is not implemented
         * (error code ERROR_CALL_NOT_IMPLEMENTED), and neither are
         * the other security functions.  There is no point in
         * going further.
         *
         * A process with insufficient access permissions may fail
         * with the error code ERROR_ACCESS_DENIED.
         */
        PR_LOG(_pr_io_lm, PR_LOG_DEBUG,
                ("_PR_NT_InitSids: OpenProcessToken() failed. Error: %d",
                GetLastError()));
        return;
    }

    rv = GetTokenInformation(hToken, TokenOwner, infoBuffer,
            sizeof(infoBuffer), &dwLength);
    PR_ASSERT(rv != 0);
    dwLength = GetLengthSid(pTokenOwner->Owner);
    _pr_nt_sids.owner = (PSID) PR_Malloc(dwLength);
    PR_ASSERT(_pr_nt_sids.owner != NULL);
    rv = CopySid(dwLength, _pr_nt_sids.owner, pTokenOwner->Owner);
    PR_ASSERT(rv != 0);

    rv = GetTokenInformation(hToken, TokenPrimaryGroup, infoBuffer,
            sizeof(infoBuffer), &dwLength);
    PR_ASSERT(rv != 0);
    dwLength = GetLengthSid(pTokenPrimaryGroup->PrimaryGroup);
    _pr_nt_sids.group = (PSID) PR_Malloc(dwLength);
    PR_ASSERT(_pr_nt_sids.group != NULL);
    rv = CopySid(dwLength, _pr_nt_sids.group,
            pTokenPrimaryGroup->PrimaryGroup);
    PR_ASSERT(rv != 0);

    rv = CloseHandle(hToken);
    PR_ASSERT(rv != 0);

    /* Create a well-known SID for the Everyone group. */
    rv = AllocateAndInitializeSid(&SIDAuthWorld, 1,
            SECURITY_WORLD_RID,
            0, 0, 0, 0, 0, 0, 0,
            &_pr_nt_sids.everyone);
    PR_ASSERT(rv != 0);
}

Here is the caller graph for this function:

PRStatus _PR_NT_MakeSecurityDescriptorACL ( PRIntn  mode,
DWORD  accessTable[],
PSECURITY_DESCRIPTOR *  resultSD,
PACL *  resultACL 
)

Definition at line 165 of file ntsec.c.

{
    PSECURITY_DESCRIPTOR pSD = NULL;
    PACL pACL = NULL;
    DWORD cbACL;  /* size of ACL */
    DWORD accessMask;

    if (_pr_nt_sids.owner == NULL) {
        PR_SetError(PR_NOT_IMPLEMENTED_ERROR, 0);
        return PR_FAILURE;
    }

    pSD = (PSECURITY_DESCRIPTOR) PR_Malloc(SECURITY_DESCRIPTOR_MIN_LENGTH);
    if (pSD == NULL) {
        _PR_MD_MAP_DEFAULT_ERROR(GetLastError());
        goto failed;
    }
    if (!InitializeSecurityDescriptor(pSD, SECURITY_DESCRIPTOR_REVISION)) {
        _PR_MD_MAP_DEFAULT_ERROR(GetLastError());
        goto failed;
    }
    if (!SetSecurityDescriptorOwner(pSD, _pr_nt_sids.owner, FALSE)) {
        _PR_MD_MAP_DEFAULT_ERROR(GetLastError());
        goto failed;
    }
    if (!SetSecurityDescriptorGroup(pSD, _pr_nt_sids.group, FALSE)) {
        _PR_MD_MAP_DEFAULT_ERROR(GetLastError());
        goto failed;
    }

    /*
     * Construct a discretionary access-control list with three
     * access-control entries, one each for owner, primary group,
     * and Everyone.
     */

    cbACL = sizeof(ACL)
          + 3 * (sizeof(ACCESS_ALLOWED_ACE) - sizeof(DWORD))
          + GetLengthSid(_pr_nt_sids.owner)
          + GetLengthSid(_pr_nt_sids.group)
          + GetLengthSid(_pr_nt_sids.everyone);
    pACL = (PACL) PR_Malloc(cbACL);
    if (pACL == NULL) {
        _PR_MD_MAP_DEFAULT_ERROR(GetLastError());
        goto failed;
    }
    if (!InitializeAcl(pACL, cbACL, ACL_REVISION)) {
        _PR_MD_MAP_DEFAULT_ERROR(GetLastError());
        goto failed;
    }
    accessMask = 0;
    if (mode & 00400) accessMask |= accessTable[0];
    if (mode & 00200) accessMask |= accessTable[1];
    if (mode & 00100) accessMask |= accessTable[2];
    if (accessMask && !AddAccessAllowedAce(pACL, ACL_REVISION, accessMask,
            _pr_nt_sids.owner)) {
        _PR_MD_MAP_DEFAULT_ERROR(GetLastError());
        goto failed;
    }
    accessMask = 0;
    if (mode & 00040) accessMask |= accessTable[0];
    if (mode & 00020) accessMask |= accessTable[1];
    if (mode & 00010) accessMask |= accessTable[2];
    if (accessMask && !AddAccessAllowedAce(pACL, ACL_REVISION, accessMask,
            _pr_nt_sids.group)) {
        _PR_MD_MAP_DEFAULT_ERROR(GetLastError());
        goto failed;
    }
    accessMask = 0;
    if (mode & 00004) accessMask |= accessTable[0];
    if (mode & 00002) accessMask |= accessTable[1];
    if (mode & 00001) accessMask |= accessTable[2];
    if (accessMask && !AddAccessAllowedAce(pACL, ACL_REVISION, accessMask,
            _pr_nt_sids.everyone)) {
        _PR_MD_MAP_DEFAULT_ERROR(GetLastError());
        goto failed;
    }

    if (!SetSecurityDescriptorDacl(pSD, TRUE, pACL, FALSE)) {
        _PR_MD_MAP_DEFAULT_ERROR(GetLastError());
        goto failed;
    }

    *resultSD = pSD;
    *resultACL = pACL;
    return PR_SUCCESS;

failed:
    if (pSD) {
        PR_Free(pSD);
    }
    if (pACL) {
        PR_Free(pACL);
    }
    return PR_FAILURE;
}

Here is the caller graph for this function:

PRStatus _PR_WaitWindowsProcess ( struct PRProcess process,
PRInt32 exitCode 
)

Definition at line 455 of file ntmisc.c.

{
    DWORD dwRetVal;

    dwRetVal = WaitForSingleObject(process->md.handle, INFINITE);
    if (dwRetVal == WAIT_FAILED) {
        PR_SetError(PR_UNKNOWN_ERROR, GetLastError());
        return PR_FAILURE;
    }
    PR_ASSERT(dwRetVal == WAIT_OBJECT_0);
    if (exitCode != NULL &&
            GetExitCodeProcess(process->md.handle, exitCode) == FALSE) {
        PR_SetError(PR_UNKNOWN_ERROR, GetLastError());
        return PR_FAILURE;
    }
    CloseHandle(process->md.handle);
    PR_DELETE(process);
    return PR_SUCCESS;
}

Variable Documentation

Definition at line 49 of file w95thred.c.

Definition at line 47 of file w95thred.c.

Definition at line 48 of file w95thred.c.

Definition at line 42 of file ntthread.c.

Definition at line 1133 of file w95io.c.