📄 primpl.h
字号:
** The memory segment and the PRSegment are freed** INPUTS: seg: pointer to PRSegment to be freed** OUTPUTS: the the PRSegment and its associated memory segment are freed** RETURN: void***********************************************************************/extern void _PR_DestroySegment(PRSegment *seg);extern PRThreadStack * _PR_NewStack(PRUint32 stackSize);extern void _PR_FreeStack(PRThreadStack *stack);extern PRBool _PR_NotifyThread (PRThread *thread, PRThread *me);extern void _PR_NotifyLockedThread (PRThread *thread);NSPR_API(void) _PR_AddSleepQ(PRThread *thread, PRIntervalTime timeout);NSPR_API(void) _PR_DelSleepQ(PRThread *thread, PRBool propogate_time);extern void _PR_AddThreadToRunQ(PRThread *me, PRThread *thread);NSPR_API(PRThread*) _PR_CreateThread(PRThreadType type, void (*start)(void *arg), void *arg, PRThreadPriority priority, PRThreadScope scope, PRThreadState state, PRUint32 stackSize, PRUint32 flags);extern void _PR_NativeDestroyThread(PRThread *thread);extern void _PR_UserDestroyThread(PRThread *thread);extern PRThread* _PRI_AttachThread( PRThreadType type, PRThreadPriority priority, PRThreadStack *stack, PRUint32 flags);extern void _PRI_DetachThread(void);#define _PR_IO_PENDING(_thread) ((_thread)->io_pending)NSPR_API(void) _PR_MD_INIT_CPUS();#define _PR_MD_INIT_CPUS _MD_INIT_CPUSNSPR_API(void) _PR_MD_WAKEUP_CPUS();#define _PR_MD_WAKEUP_CPUS _MD_WAKEUP_CPUS/* Interrupts related */NSPR_API(void) _PR_MD_START_INTERRUPTS(void);#define _PR_MD_START_INTERRUPTS _MD_START_INTERRUPTSNSPR_API(void) _PR_MD_STOP_INTERRUPTS(void);#define _PR_MD_STOP_INTERRUPTS _MD_STOP_INTERRUPTSNSPR_API(void) _PR_MD_ENABLE_CLOCK_INTERRUPTS(void);#define _PR_MD_ENABLE_CLOCK_INTERRUPTS _MD_ENABLE_CLOCK_INTERRUPTSNSPR_API(void) _PR_MD_DISABLE_CLOCK_INTERRUPTS(void);#define _PR_MD_DISABLE_CLOCK_INTERRUPTS _MD_DISABLE_CLOCK_INTERRUPTSNSPR_API(void) _PR_MD_BLOCK_CLOCK_INTERRUPTS(void);#define _PR_MD_BLOCK_CLOCK_INTERRUPTS _MD_BLOCK_CLOCK_INTERRUPTSNSPR_API(void) _PR_MD_UNBLOCK_CLOCK_INTERRUPTS(void);#define _PR_MD_UNBLOCK_CLOCK_INTERRUPTS _MD_UNBLOCK_CLOCK_INTERRUPTS/* The _PR_MD_WAIT_LOCK and _PR_MD_WAKEUP_WAITER functions put to sleep and * awaken a thread which is waiting on a lock or cvar. */extern PRStatus _PR_MD_WAIT(PRThread *, PRIntervalTime timeout);#define _PR_MD_WAIT _MD_WAITextern PRStatus _PR_MD_WAKEUP_WAITER(PRThread *);#define _PR_MD_WAKEUP_WAITER _MD_WAKEUP_WAITER#ifndef _PR_LOCAL_THREADS_ONLY /* not if only local threads supported */NSPR_API(void) _PR_MD_CLOCK_INTERRUPT(void);#define _PR_MD_CLOCK_INTERRUPT _MD_CLOCK_INTERRUPT#endif/* Stack debugging */NSPR_API(void) _PR_MD_INIT_STACK(PRThreadStack *ts, PRIntn redzone);#define _PR_MD_INIT_STACK _MD_INIT_STACKNSPR_API(void) _PR_MD_CLEAR_STACK(PRThreadStack* ts);#define _PR_MD_CLEAR_STACK _MD_CLEAR_STACK/* CPU related */NSPR_API(PRInt32) _PR_MD_GET_INTSOFF(void);#define _PR_MD_GET_INTSOFF _MD_GET_INTSOFFNSPR_API(void) _PR_MD_SET_INTSOFF(PRInt32 _val);#define _PR_MD_SET_INTSOFF _MD_SET_INTSOFFNSPR_API(_PRCPU*) _PR_MD_CURRENT_CPU(void);#define _PR_MD_CURRENT_CPU _MD_CURRENT_CPUNSPR_API(void) _PR_MD_SET_CURRENT_CPU(_PRCPU *cpu);#define _PR_MD_SET_CURRENT_CPU _MD_SET_CURRENT_CPUNSPR_API(void) _PR_MD_INIT_RUNNING_CPU(_PRCPU *cpu);#define _PR_MD_INIT_RUNNING_CPU _MD_INIT_RUNNING_CPU/* * Returns the number of threads awoken or 0 if a timeout occurred; */extern PRInt32 _PR_MD_PAUSE_CPU(PRIntervalTime timeout);#define _PR_MD_PAUSE_CPU _MD_PAUSE_CPUextern void _PR_MD_CLEANUP_BEFORE_EXIT(void);#define _PR_MD_CLEANUP_BEFORE_EXIT _MD_CLEANUP_BEFORE_EXITextern void _PR_MD_EXIT(PRIntn status);#define _PR_MD_EXIT _MD_EXIT/* Locks related */NSPR_API(void) _PR_MD_INIT_LOCKS(void);#define _PR_MD_INIT_LOCKS _MD_INIT_LOCKSNSPR_API(PRStatus) _PR_MD_NEW_LOCK(_MDLock *md);#define _PR_MD_NEW_LOCK _MD_NEW_LOCKNSPR_API(void) _PR_MD_FREE_LOCK(_MDLock *md);#define _PR_MD_FREE_LOCK _MD_FREE_LOCKNSPR_API(void) _PR_MD_LOCK(_MDLock *md);#define _PR_MD_LOCK _MD_LOCK/* Return 0 on success, a nonzero value on failure. */NSPR_API(PRIntn) _PR_MD_TEST_AND_LOCK(_MDLock *md);#define _PR_MD_TEST_AND_LOCK _MD_TEST_AND_LOCKNSPR_API(void) _PR_MD_UNLOCK(_MDLock *md);#define _PR_MD_UNLOCK _MD_UNLOCKNSPR_API(void) _PR_MD_IOQ_LOCK(void);#define _PR_MD_IOQ_LOCK _MD_IOQ_LOCKNSPR_API(void) _PR_MD_IOQ_UNLOCK(void);#define _PR_MD_IOQ_UNLOCK _MD_IOQ_UNLOCK#ifndef _PR_LOCAL_THREADS_ONLY /* not if only local threads supported *//* Semaphore related -- only for native threads */#ifdef HAVE_CVAR_BUILT_ON_SEMNSPR_API(void) _PR_MD_NEW_SEM(_MDSemaphore *md, PRUintn value);#define _PR_MD_NEW_SEM _MD_NEW_SEMNSPR_API(void) _PR_MD_DESTROY_SEM(_MDSemaphore *md);#define _PR_MD_DESTROY_SEM _MD_DESTROY_SEMNSPR_API(PRStatus) _PR_MD_TIMED_WAIT_SEM( _MDSemaphore *md, PRIntervalTime timeout);#define _PR_MD_TIMED_WAIT_SEM _MD_TIMED_WAIT_SEMNSPR_API(PRStatus) _PR_MD_WAIT_SEM(_MDSemaphore *md);#define _PR_MD_WAIT_SEM _MD_WAIT_SEMNSPR_API(void) _PR_MD_POST_SEM(_MDSemaphore *md);#define _PR_MD_POST_SEM _MD_POST_SEM#endif /* HAVE_CVAR_BUILT_ON_SEM */#endif/* Condition Variables related -- only for native threads */#ifndef _PR_LOCAL_THREADS_ONLY /* not if only local threads supported */NSPR_API(PRInt32) _PR_MD_NEW_CV(_MDCVar *md);#define _PR_MD_NEW_CV _MD_NEW_CVNSPR_API(void) _PR_MD_FREE_CV(_MDCVar *md);#define _PR_MD_FREE_CV _MD_FREE_CVNSPR_API(void) _PR_MD_WAIT_CV( _MDCVar *mdCVar,_MDLock *mdLock,PRIntervalTime timeout);#define _PR_MD_WAIT_CV _MD_WAIT_CVNSPR_API(void) _PR_MD_NOTIFY_CV(_MDCVar *md, _MDLock *lock);#define _PR_MD_NOTIFY_CV _MD_NOTIFY_CVNSPR_API(void) _PR_MD_NOTIFYALL_CV(_MDCVar *md, _MDLock *lock);#define _PR_MD_NOTIFYALL_CV _MD_NOTIFYALL_CV#endif /* _PR_LOCAL_THREADS_ONLY *//* Threads related */NSPR_API(PRThread*) _PR_MD_CURRENT_THREAD(void);#define _PR_MD_CURRENT_THREAD _MD_CURRENT_THREADNSPR_API(PRThread*) _PR_MD_GET_ATTACHED_THREAD(void);#define _PR_MD_GET_ATTACHED_THREAD _MD_GET_ATTACHED_THREADNSPR_API(PRThread*) _PR_MD_LAST_THREAD(void);#define _PR_MD_LAST_THREAD _MD_LAST_THREADNSPR_API(void) _PR_MD_SET_CURRENT_THREAD(PRThread *thread);#define _PR_MD_SET_CURRENT_THREAD _MD_SET_CURRENT_THREADNSPR_API(void) _PR_MD_SET_LAST_THREAD(PRThread *thread);#define _PR_MD_SET_LAST_THREAD _MD_SET_LAST_THREADextern PRStatus _PR_MD_INIT_THREAD(PRThread *thread);#define _PR_MD_INIT_THREAD _MD_INIT_THREADextern void _PR_MD_EXIT_THREAD(PRThread *thread);#define _PR_MD_EXIT_THREAD _MD_EXIT_THREAD#ifndef _PR_LOCAL_THREADS_ONLY /* not if only local threads supported */NSPR_API(PRStatus) _PR_MD_INIT_ATTACHED_THREAD(PRThread *thread);#define _PR_MD_INIT_ATTACHED_THREAD _MD_INIT_ATTACHED_THREADextern void _PR_MD_SUSPEND_THREAD(PRThread *thread);#define _PR_MD_SUSPEND_THREAD _MD_SUSPEND_THREADextern void _PR_MD_RESUME_THREAD(PRThread *thread);#define _PR_MD_RESUME_THREAD _MD_RESUME_THREADextern void _PR_MD_SUSPEND_CPU(_PRCPU *cpu);#define _PR_MD_SUSPEND_CPU _MD_SUSPEND_CPUextern void _PR_MD_RESUME_CPU(_PRCPU *cpu);#define _PR_MD_RESUME_CPU _MD_RESUME_CPUextern void _PR_MD_BEGIN_SUSPEND_ALL(void);#define _PR_MD_BEGIN_SUSPEND_ALL _MD_BEGIN_SUSPEND_ALLextern void _PR_MD_END_SUSPEND_ALL(void);#define _PR_MD_END_SUSPEND_ALL _MD_END_SUSPEND_ALLextern void _PR_MD_BEGIN_RESUME_ALL(void);#define _PR_MD_BEGIN_RESUME_ALL _MD_BEGIN_RESUME_ALLextern void _PR_MD_END_RESUME_ALL(void);#define _PR_MD_END_RESUME_ALL _MD_END_RESUME_ALL#if defined(IRIX) NSPR_API(void) _PR_IRIX_CHILD_PROCESS(void);#endif /* IRIX */#endif /* !_PR_LOCAL_THREADS_ONLY */extern void _PR_MD_CLEAN_THREAD(PRThread *thread);#define _PR_MD_CLEAN_THREAD _MD_CLEAN_THREAD#ifdef HAVE_CUSTOM_USER_THREADSextern void _PR_MD_CREATE_PRIMORDIAL_USER_THREAD(PRThread *);#define _PR_MD_CREATE_PRIMORDIAL_USER_THREAD _MD_CREATE_PRIMORDIAL_USER_THREADextern PRThread* _PR_MD_CREATE_USER_THREAD( PRUint32 stacksize, void (*start)(void *), void *arg);#define _PR_MD_CREATE_USER_THREAD _MD_CREATE_USER_THREAD#endifextern PRStatus _PR_MD_CREATE_THREAD( PRThread *thread, void (*start) (void *), PRThreadPriority priority, PRThreadScope scope, PRThreadState state, PRUint32 stackSize);#define _PR_MD_CREATE_THREAD _MD_CREATE_THREADextern void _PR_MD_JOIN_THREAD(_MDThread *md);#define _PR_MD_JOIN_THREAD _MD_JOIN_THREADextern void _PR_MD_END_THREAD(void);#define _PR_MD_END_THREAD _MD_END_THREADextern void _PR_MD_YIELD(void);#define _PR_MD_YIELD _MD_YIELDextern void _PR_MD_SET_PRIORITY(_MDThread *md, PRThreadPriority newPri);#define _PR_MD_SET_PRIORITY _MD_SET_PRIORITYNSPR_API(void) _PR_MD_SUSPENDALL(void);#define _PR_MD_SUSPENDALL _MD_SUSPENDALLNSPR_API(void) _PR_MD_RESUMEALL(void);#define _PR_MD_RESUMEALL _MD_RESUMEALLextern void _PR_MD_INIT_CONTEXT( PRThread *thread, char *top, void (*start) (void), PRBool *status);#define _PR_MD_INIT_CONTEXT _MD_INIT_CONTEXTextern void _PR_MD_SWITCH_CONTEXT(PRThread *thread);#define _PR_MD_SWITCH_CONTEXT _MD_SWITCH_CONTEXTextern void _PR_MD_RESTORE_CONTEXT(PRThread *thread);#define _PR_MD_RESTORE_CONTEXT _MD_RESTORE_CONTEXT/* Segment related */extern void _PR_MD_INIT_SEGS(void);#define _PR_MD_INIT_SEGS _MD_INIT_SEGSextern PRStatus _PR_MD_ALLOC_SEGMENT(PRSegment *seg, PRUint32 size, void *vaddr);#define _PR_MD_ALLOC_SEGMENT _MD_ALLOC_SEGMENTextern void _PR_MD_FREE_SEGMENT(PRSegment *seg);#define _PR_MD_FREE_SEGMENT _MD_FREE_SEGMENT/* Directory enumeration related */extern PRStatus _PR_MD_OPEN_DIR(_MDDir *md,const char *name);#define _PR_MD_OPEN_DIR _MD_OPEN_DIRextern char * _PR_MD_READ_DIR(_MDDir *md, PRIntn flags);#define _PR_MD_READ_DIR _MD_READ_DIRextern PRInt32 _PR_MD_CLOSE_DIR(_MDDir *md);#define _PR_MD_CLOSE_DIR _MD_CLOSE_DIR/* Named semaphores related */extern PRSem * _PR_MD_OPEN_SEMAPHORE( const char *osname, PRIntn flags, PRIntn mode, PRUintn value);#define _PR_MD_OPEN_SEMAPHORE _MD_OPEN_SEMAPHOREextern PRStatus _PR_MD_WAIT_SEMAPHORE(PRSem *sem);#define _PR_MD_WAIT_SEMAPHORE _MD_WAIT_SEMAPHOREextern PRStatus _PR_MD_POST_SEMAPHORE(PRSem *sem);#define _PR_MD_POST_SEMAPHORE _MD_POST_SEMAPHOREextern PRStatus _PR_MD_CLOSE_SEMAPHORE(PRSem *sem);#define _PR_MD_CLOSE_SEMAPHORE _MD_CLOSE_SEMAPHOREextern PRStatus _PR_MD_DELETE_SEMAPHORE(const char *osname);#define _PR_MD_DELETE_SEMAPHORE _MD_DELETE_SEMAPHORE/* I/O related */extern void _PR_MD_INIT_FILEDESC(PRFileDesc *fd);#define _PR_MD_INIT_FILEDESC _MD_INIT_FILEDESC#ifdef XP_MACextern void _PR_MD_FREE_FILEDESC(PRFileDesc *fd);#define _PR_MD_FREE_FILEDESC _MD_FREE_FILEDESC#endifextern void _PR_MD_MAKE_NONBLOCK(PRFileDesc *fd);#define _PR_MD_MAKE_NONBLOCK _MD_MAKE_NONBLOCK/* File I/O related */extern PRInt32 _PR_MD_OPEN(const char *name, PRIntn osflags, PRIntn mode);#define _PR_MD_OPEN _MD_OPENextern PRInt32 _PR_MD_OPEN_FILE(const char *name, PRIntn osflags, PRIntn mode);#define _PR_MD_OPEN_FILE _MD_OPEN_FILEextern PRInt32 _PR_MD_CLOSE_FILE(PRInt32 osfd);#define _PR_MD_CLOSE_FILE _MD_CLOSE_FILEextern PRInt32 _PR_MD_READ(PRFileDesc *fd, void *buf, PRInt32 amount);#define _PR_MD_READ _MD_READextern PRInt32 _PR_MD_WRITE(PRFileDesc *fd, const void *buf, PRInt32 amount);#define _PR_MD_WRITE _MD_WRITEextern PRInt32 _PR_MD_WRITEV( PRFileDesc *fd, const struct PRIOVec *iov, PRInt32 iov_size, PRIntervalTime timeout);#define _PR_MD_WRITEV _MD_WRITEVextern PRInt32 _PR_MD_FSYNC(PRFileDesc *fd);#define _PR_MD_FSYNC _MD_FSYNCextern PRInt32 _PR_MD_DELETE(const char *name);#define _PR_MD_DELETE _MD_DELETEextern PRInt32 _PR_MD_RENAME(const char *from, const char *to);#define _PR_MD_RENAME _MD_RENAMEextern PRInt32 _PR_MD_ACCESS(const char *name, PRAccessHow how);#define _PR_MD_ACCESS _MD_ACCESSextern PRInt32 _PR_MD_STAT(const char *name, struct stat *buf);#define _PR_MD_STAT _MD_STATextern PRInt32 _PR_MD_MKDIR(const char *name, PRIntn mode);#define _PR_MD_MKDIR _MD_MKDIRextern PRInt32 _PR_MD_MAKE_DIR(const char *name, PRIntn mode);#define _PR_MD_MAKE_DIR _MD_MAKE_DIR
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -