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

📄 _beos.h

📁 Netscape NSPR库源码
💻 H
📖 第 1 页 / 共 2 页
字号:
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- *//*  * 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_beos_defs_h___#define nspr_beos_defs_h___#include "prtypes.h"#include "prio.h"#include "prthread.h"#include "prproces.h"#include "prmem.h"#include "obsolete/prsem.h"#include <errno.h>#include <support/SupportDefs.h>#include <kernel/OS.h>#include <dirent.h>/* * Internal configuration macros */#ifdef BONE_VERSION#define _PR_HAVE_SOCKADDR_LEN#endif#define PR_LINKER_ARCH	"beos"#define _PR_SI_SYSNAME  "BEOS"#ifdef __powerpc__#define _PR_SI_ARCHITECTURE "ppc"#else#define _PR_SI_ARCHITECTURE "x86"#endif#define PR_DLL_SUFFIX		".so"#define _PR_VMBASE              0x30000000#define _PR_STACK_VMBASE	0x50000000#define _MD_DEFAULT_STACK_SIZE	65536L#define _MD_MMAP_FLAGS          MAP_PRIVATE#undef	HAVE_STACK_GROWING_UP#define HAVE_DLL#define _PR_NO_CLOCK_TIMER/* * The Atomic operations */#define _PR_HAVE_ATOMIC_OPS#define _MD_INIT_ATOMIC _MD_AtomicInit#define _MD_ATOMIC_INCREMENT _MD_AtomicIncrement#define _MD_ATOMIC_ADD _MD_AtomicAdd#define _MD_ATOMIC_DECREMENT _MD_AtomicDecrement#define _MD_ATOMIC_SET _MD_AtomicSet#define HAVE_CVAR_BUILT_ON_SEM#define _PR_GLOBAL_THREADS_ONLY#define _PR_BTHREADS#define _PR_NEED_FAKE_POLL#define _PR_HAVE_PEEK_BUFFER#define _PR_PEEK_BUFFER_MAX (16 * 1024)#define _PR_FD_NEED_EMULATE_MSG_PEEK(fd) 1#define _PR_CONNECT_DOES_NOT_BIND/* Define threading functions and objects as native BeOS */struct _MDThread {    thread_id	tid;	/* BeOS thread handle */	sem_id		joinSem;	/* sems used to synchronzie joining */	PRBool	is_joining;	/* TRUE if someone is currently waiting to						   join this thread */};struct _MDThreadStack {    PRInt8	notused;};/* * Lock and Semaphore related definitions */struct _MDLock {    sem_id semaphoreID;    int32  benaphoreCount;};struct _MDCVar {    sem_id sem1;    sem_id sem2;    int16  count;};struct _MDSemaphore {    sem_id sid;};/*** CPU-related definitions*/struct _MDCPU {    int8		unused;};/*** Process-related definitions*/struct _MDProcess {    pid_t pid;};struct _MDSegment {    PRInt8 notused;};/*** File- and directory-related definitions*/#ifndef BONE_VERSION#define BE_SOCK_SHUTDOWN_READ	0x01#define BE_SOCK_SHUTDOWN_WRITE	0x02#endifstruct _MDFileDesc {    PRInt32	osfd;    PRInt32	sock_state;    PRBool	accepted_socket;    PRNetAddr	peer_addr;#ifndef BONE_VERSION    PRBool	connectValueValid;    int		connectReturnValue;    int		connectReturnError;#endif};struct _MDDir {    DIR		*d;};#define PR_DIRECTORY_SEPARATOR		'/'#define PR_DIRECTORY_SEPARATOR_STR	"/"#define PR_PATH_SEPARATOR		':'#define PR_PATH_SEPARATOR_STR		":"#define GETTIMEOFDAY(tp)	gettimeofday((tp), NULL)/* --- Memory-mapped files stuff --- not implemented on BeOS */struct _MDFileMap {    PRInt8 unused;};/* * Network related definitions. */#ifndef BONE_VERSION#define IPPROTO_IP 0#define AF_UNIX 2#define TCP_NODELAY SO_NONBLOCK#define SO_LINGER -1#define SO_ERROR 4#endif#define _PR_INTERRUPT_CHECK_INTERVAL_SECS 5#ifndef BONE_VERSION/* these aren't actually used. if they are, we're screwed */struct  protoent {    char    *p_name;        /* official protocol name */    char    **p_aliases;    /* alias list */    int     p_proto;        /* protocol # */};struct protoent* getprotobyname(const char* name);struct protoent* getprotobynumber(int number);#endif/* * malloc() related definitions. */#undef _PR_OVERRIDE_MALLOC/* Miscellaneous */#define _MD_ERRNO()             (errno)#define _MD_CLEANUP_BEFORE_EXIT _MD_cleanup_before_exit#define _MD_EXIT _MD_exit#define _MD_GET_ENV getenv#define _MD_PUT_ENV putenv#define _MD_EARLY_INIT _MD_early_init#define _MD_FINAL_INIT _MD_final_init/* CPU Stuff */#define _MD_INIT_CPUS _MD_init_cpus#define _MD_WAKEUP_CPUS _MD_wakeup_cpus#define _MD_START_INTERRUPTS _MD_start_interrupts#define _MD_STOP_INTERRUPTS _MD_stop_interrupts#define _MD_DISABLE_CLOCK_INTERRUPTS _MD_disable_clock_interrupts#define _MD_BLOCK_CLOCK_INTERRUPTS _MD_block_clock_interrupts#define _MD_UNBLOCK_CLOCK_INTERRUPTS _MD_unblock_clock_interrupts#define _MD_CLOCK_INTERRUPT _MD_clock_interrupt#define _MD_INIT_STACK _MD_init_stack#define _MD_CLEAR_STACK _MD_clear_stack// #define _MD_GET_INTSOFF _MD_get_intsoff// #define _MD_SET_INTSOFF _MD_set_intsoff#define _MD_CURRENT_CPU _MD_current_cpu#define _MD_SET_CURRENT_CPU _MD_set_current_cpu#define _MD_INIT_RUNNING_CPU _MD_init_running_cpu#define _MD_PAUSE_CPU _MD_pause_cpu/* Thread stuff */#define _MD_CURRENT_THREAD() PR_GetCurrentThread()// #define _MD_GET_ATTACHED_THREAD _MD_get_attached_thread#define _MD_LAST_THREAD _MD_last_thread#define _MD_SET_CURRENT_THREAD _MD_set_current_THREAD#define _MD_SET_LAST_THREAD _MD_set_last_thread#define _MD_INIT_THREAD _MD_init_thread#define _MD_EXIT_THREAD _MD_exit_thread#define _MD_INIT_ATTACHED_THREAD _MD_init_attached_thread#define _MD_SUSPEND_THREAD _MD_suspend_thread#define _MD_RESUME_THREAD _MD_resume_thread#define _MD_SUSPEND_CPU _MD_suspend_cpu#define _MD_RESUME_CPU _MD_resume_cpu#define _MD_BEGIN_SUSPEND_ALL _MD_begin_suspend_all#define _MD_END_SUSPEND_ALL _MD_end_suspend_all#define _MD_BEGIN_RESUME_ALL _MD_begin_resume_all#define _MD_END_RESUME_ALL _MD_end_resume_all#define _MD_GET_SP _MD_get_sp#define _MD_CLEAN_THREAD _MD_clean_thread#define _MD_CREATE_PRIMORDIAL_USER_THREAD _MD_create_primordial_user_thread#define _MD_CREATE_USER_THREAD _MD_create_user_thread#define _MD_INIT_PRIMORDIAL_THREAD _MD_init_primordial_thread#define _MD_CREATE_THREAD _MD_create_thread#define _MD_YIELD _MD_yield#define _MD_SET_PRIORITY _MD_set_priority#define _MD_SUSPENDALL _MD_suspendall#define _MD_RESUMEALL _MD_resumeall#define _MD_SWITCH_CONTEXT _MD_switch_context#define _MD_RESTORE_CONTEXT _MD_restore_context#define _MD_WAIT _MD_wait#define _MD_WAKEUP_WAITER _MD_wakeup_waiter#define _MD_SETTHREADAFFINITYMASK _MD_setthreadaffinitymask#define _MD_GETTHREADAFFINITYMASK _MD_getthreadaffinitymask/* Thread Synchronization */#define _MD_INIT_LOCKS _MD_init_locks#define _MD_NEW_LOCK _MD_new_lock#define _MD_FREE_LOCK _MD_free_lock#define _MD_LOCK _MD_lock#define _MD_TEST_AND_LOCK _MD_test_and_lock#define _MD_UNLOCK _MD_unlock#define _MD_IOQ_LOCK _MD_ioq_lock#define _MD_IOQ_UNLOCK _MD_ioq_unlock#define _MD_NEW_SEM _MD_new_sem#define _MD_DESTROY_SEM _MD_destroy_sem#define _MD_TIMED_WAIT_SEM _MD_timed_wait_sem#define _MD_WAIT_SEM _MD_wait_sem#define _MD_POST_SEM _MD_post_sem// #define _MD_NEW_CV _MD_new_cv// #define _MD_FREE_CV _MD_free_cv

⌨️ 快捷键说明

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