⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 _win95.h

📁 Netscape NSPR库源码
💻 H
📖 第 1 页 / 共 2 页
字号:
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- *//*  * The contents of this file are subject to the Mozilla Public * License Version 1.1 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.mozilla.org/MPL/ *  * Software distributed under the License is distributed on an "AS * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or * implied. See the License for the specific language governing * rights and limitations under the License. *  * The Original Code is the Netscape Portable Runtime (NSPR). *  * The Initial Developer of the Original Code is Netscape * Communications Corporation.  Portions created by Netscape are  * Copyright (C) 1998-2000 Netscape Communications Corporation.  All * Rights Reserved. *  * Contributor(s): *  * Alternatively, the contents of this file may be used under the * terms of the GNU General Public License Version 2 or later (the * "GPL"), in which case the provisions of the GPL are applicable  * instead of those above.  If you wish to allow use of your  * version of this file only under the terms of the GPL and not to * allow others to use your version of this file under the MPL, * indicate your decision by deleting the provisions above and * replace them with the notice and other provisions required by * the GPL.  If you do not delete the provisions above, a recipient * may use your version of this file under either the MPL or the * GPL. */#ifndef nspr_win95_defs_h___#define nspr_win95_defs_h___#include "prio.h"#include <windows.h>#include <winsock.h>#include <errno.h>/* * Internal configuration macros */#define PR_LINKER_ARCH      "win32"#define _PR_SI_SYSNAME        "WIN95"#define _PR_SI_ARCHITECTURE   "x86"    /* XXXMB hardcode for now */#define HAVE_DLL#undef  HAVE_THREAD_AFFINITY#define _PR_HAVE_ATOMIC_OPS#define PR_HAVE_WIN32_NAMED_SHARED_MEMORY/* --- Common User-Thread/Native-Thread Definitions --------------------- *//* --- Globals --- */extern struct PRLock                      *_pr_schedLock;/* --- Typedefs --- */typedef void (*FiberFunc)(void *);#define PR_NUM_GCREGS           8typedef PRInt32	                PR_CONTEXT_TYPE[PR_NUM_GCREGS];#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        0x66666666struct _MDCPU {    int              unused;};struct _MDThread {    HANDLE           blocked_sema;      /* Threads block on this when waiting                                         * for IO or CondVar.                                         */    PRBool           inCVWaitQueue;     /* PR_TRUE if the thread is in the                                         * wait queue of some cond var.                                         * PR_FALSE otherwise.  */    HANDLE           handle;            /* Win32 thread handle */    PRUint32         id;    void            *sp;                /* only valid when suspended */    PRUint32         magic;             /* for debugging */    PR_CONTEXT_TYPE  gcContext;         /* Thread context for GC */    struct PRThread *prev, *next;       /* used by the cvar wait queue to                                         * chain the PRThread structures                                         * together */};struct _MDThreadStack {    PRUint32           magic;          /* for debugging */};struct _MDSegment {    PRUint32           magic;          /* for debugging */};#undef PROFILE_LOCKSstruct _MDDir {    HANDLE           d_hdl;    WIN32_FIND_DATA  d_entry;    PRBool           firstEntry;     /* Is this the entry returned                                      * by FindFirstFile()? */    PRUint32         magic;          /* for debugging */};struct _MDCVar {    PRUint32 magic;    struct PRThread *waitHead, *waitTail;  /* the wait queue: a doubly-                                            * linked list of threads                                            * waiting on this condition                                            * variable */    PRIntn nwait;                          /* number of threads in the                                            * wait queue */};#define _MD_CV_NOTIFIED_LENGTH 6typedef struct _MDNotified _MDNotified;struct _MDNotified {    PRIntn length;                     /* # of used entries in this                                        * structure */    struct {        struct _MDCVar *cv;            /* the condition variable notified */        PRIntn times;                  /* and the number of times notified */        struct PRThread *notifyHead;   /* list of threads to wake up */    } cv[_MD_CV_NOTIFIED_LENGTH];    _MDNotified *link;                 /* link to another of these, or NULL */};struct _MDLock {    CRITICAL_SECTION mutex;          /* this is recursive on NT */    /*     * When notifying cvars, there is no point in actually     * waking up the threads waiting on the cvars until we've     * released the lock.  So, we temporarily record the cvars.     * When doing an unlock, we'll then wake up the waiting threads.     */    struct _MDNotified notified;     /* array of conditions notified */#ifdef PROFILE_LOCKS    PRInt32 hitcount;    PRInt32 misscount;#endif};struct _MDSemaphore {    HANDLE           sem;};struct _MDFileDesc {    PRInt32 osfd;    /* The osfd can come from one of three spaces:                      * - For stdin, stdout, and stderr, we are using                      *   the libc file handle (0, 1, 2), which is an int.                      * - For files and pipes, we are using Win32 HANDLE,                      *   which is a void*.                      * - For sockets, we are using Winsock SOCKET, which                      *   is a u_int.                      */};struct _MDProcess {    HANDLE handle;    DWORD id;};/* --- Misc stuff --- */#define _MD_GET_SP(thread)            (thread)->md.gcContext[6]/* --- NT security stuff --- */extern void _PR_NT_InitSids(void);extern void _PR_NT_FreeSids(void);extern PRStatus _PR_NT_MakeSecurityDescriptorACL(    PRIntn mode,    DWORD accessTable[],    PSECURITY_DESCRIPTOR *resultSD,    PACL *resultACL);extern void _PR_NT_FreeSecurityDescriptorACL(    PSECURITY_DESCRIPTOR pSD, PACL pACL);/* --- IO stuff --- */#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_LSEEK64extern PRInt32 _MD_CloseFile(PRInt32 osfd);#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/* --- Socket IO stuff --- */#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)extern void _MD_MakeNonblock(PRFileDesc *f);#define _MD_MAKE_NONBLOCK             _MD_MakeNonblock

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -