Back to index

lightning-sunbird  0.9+nobinonly
Classes | Defines | Functions | Variables
_irix.h File Reference
#include "prclist.h"
#include "prthread.h"
#include <sys/ucontext.h>
#include <mutex.h>
#include <setjmp.h>
#include <errno.h>
#include <unistd.h>
#include <bstring.h>
#include <sys/time.h>
#include <ulocks.h>
#include <sys/prctl.h>
#include <stropts.h>
#include <poll.h>

Go to the source code of this file.

Classes

struct  sproc_private_data
struct  _MDLock
struct  _MDThread
struct  _MDThreadStack
struct  _MDSemaphore
struct  _MDCVar
struct  _MDSegment
struct  _MDCPU_Unix
struct  _MDCPU

Defines

#define _PR_HAVE_ATOMIC_CAS
#define PR_LINKER_ARCH   "irix"
#define _PR_SI_SYSNAME   "IRIX"
#define _PR_SI_ARCHITECTURE   "mips"
#define PR_DLL_SUFFIX   ".so"
#define _PR_VMBASE   0x30000000
#define _PR_STACK_VMBASE   0x50000000
#define _PR_NUM_GCREGS   9
#define _MD_MMAP_FLAGS   MAP_PRIVATE
#define _MD_DEFAULT_STACK_SIZE   65536L
#define _MD_MIN_STACK_SIZE   16384L
#define HAVE_WEAK_IO_SYMBOLS
#define HAVE_WEAK_MALLOC_SYMBOLS
#define HAVE_DLL
#define USE_DLFCN
#define _PR_HAVE_ATOMIC_OPS
#define _PR_POLL_AVAILABLE
#define _PR_USE_POLL
#define _PR_STAT_HAS_ST_ATIM
#define _PR_HAVE_OFF64_T
#define HAVE_POINTER_LOCALTIME_R
#define _PR_HAVE_POSIX_SEMAPHORES
#define PR_HAVE_POSIX_NAMED_SHARED_MEMORY
#define _PR_ACCEPT_INHERIT_NONBLOCK
#define _MD_EARLY_INIT   _MD_EarlyInit
#define _MD_FINAL_INIT   _MD_IrixInit
#define _MD_INIT_IO()
#define _MD_GET_INTERVAL   _MD_IrixGetInterval
#define _MD_INTERVAL_PER_SEC   _MD_IrixIntervalPerSec
#define _MD_GET_SP   _MD_GetSP
#define _MD_INIT_ATOMIC()
#define _MD_ATOMIC_INCREMENT(val)   add_then_test((unsigned long*)val, 1)
#define _MD_ATOMIC_ADD(ptr, val)   add_then_test((unsigned long*)ptr, (unsigned long)val)
#define _MD_ATOMIC_DECREMENT(val)   add_then_test((unsigned long*)val, 0xffffffff)
#define _MD_ATOMIC_SET(val, newval)   test_and_set((unsigned long*)val, newval)
#define _PR_PRDA()   ((struct sproc_private_data *) _nspr_sproc_private)
#define _MD_SET_CURRENT_THREAD(_thread)   _PR_PRDA()->me = (_thread)
#define _MD_THIS_THREAD()   (_PR_PRDA()->me)
#define _MD_LAST_THREAD()   (_PR_PRDA()->last)
#define _MD_SET_LAST_THREAD(_thread)   _PR_PRDA()->last = (_thread)
#define _MD_CURRENT_CPU()   (_PR_PRDA()->cpu)
#define _MD_SET_CURRENT_CPU(_cpu)   _PR_PRDA()->cpu = (_cpu)
#define _MD_SET_INTSOFF(_val)   (_PR_PRDA()->intsOff = _val)
#define _MD_GET_INTSOFF()   (_PR_PRDA()->intsOff)
#define _MD_SET_SPROC_PID(_val)   (_PR_PRDA()->sproc_pid = _val)
#define _MD_GET_SPROC_PID()   (_PR_PRDA()->sproc_pid)
#define _MD_GET_ATTACHED_THREAD()   _MD_get_attached_thread()
#define _MD_CURRENT_THREAD()   _MD_get_current_thread()
#define _MD_CHECK_FOR_EXIT()
#define _MD_ATTACH_THREAD(threadp)
#define _MD_SAVE_ERRNO(_thread)   (_thread)->md.errcode = errno;
#define _MD_RESTORE_ERRNO(_thread)   errno = (_thread)->md.errcode;
#define _PR_LOCK_HEAP()
#define _PR_UNLOCK_HEAP()
#define _PR_OPEN_POLL_SEM(_sem)   usopenpollsema(_sem, 0666)
#define _PR_WAIT_SEM(_sem)   uspsema(_sem)
#define _PR_POST_SEM(_sem)   usvsema(_sem)
#define _MD_CVAR_POST_SEM(threadp)   usvsema((threadp)->md.cvar_pollsem)
#define _MD_IOQ_LOCK()
#define _MD_IOQ_UNLOCK()
#define _PR_LOCK(lock)
#define _PR_UNLOCK(lock)
#define _MD_LOCK(_lockp)   _PR_LOCK((_lockp)->lock)
#define _MD_UNLOCK(_lockp)   _PR_UNLOCK((_lockp)->lock)
#define _MD_TEST_AND_LOCK(_lockp)   (uscsetlock((_lockp)->lock, 1) == 0)
#define _PR_MD_MAX_OSFD   FD_SETSIZE
#define _PR_IOQ(_cpu)   ((_cpu)->md.md_unix.ioQ)
#define _PR_ADD_TO_IOQ(_pq, _cpu)   PR_APPEND_LINK(&_pq.links, &_PR_IOQ(_cpu))
#define _PR_FD_READ_SET(_cpu)   ((_cpu)->md.md_unix.fd_read_set)
#define _PR_FD_READ_CNT(_cpu)   ((_cpu)->md.md_unix.fd_read_cnt)
#define _PR_FD_WRITE_SET(_cpu)   ((_cpu)->md.md_unix.fd_write_set)
#define _PR_FD_WRITE_CNT(_cpu)   ((_cpu)->md.md_unix.fd_write_cnt)
#define _PR_FD_EXCEPTION_SET(_cpu)   ((_cpu)->md.md_unix.fd_exception_set)
#define _PR_FD_EXCEPTION_CNT(_cpu)   ((_cpu)->md.md_unix.fd_exception_cnt)
#define _PR_IOQ_TIMEOUT(_cpu)   ((_cpu)->md.md_unix.ioq_timeout)
#define _PR_IOQ_MAX_OSFD(_cpu)   ((_cpu)->md.md_unix.ioq_max_osfd)
#define _PR_IOQ_OSFD_CNT(_cpu)   ((_cpu)->md.md_unix.ioq_osfd_cnt)
#define _PR_IOQ_POLLFDS(_cpu)   ((_cpu)->md.md_unix.ioq_pollfds)
#define _PR_IOQ_POLLFDS_SIZE(_cpu)   ((_cpu)->md.md_unix.ioq_pollfds_size)
#define _PR_IOQ_MIN_POLLFDS_SIZE(_cpu)   32
#define _MD_INIT_CONTEXT(_thread, _sp, _main, status)
#define _MD_SWITCH_CONTEXT(_thread)
#define _MD_RESTORE_CONTEXT(_newThread)
#define _MD_INIT_THREAD(thread)   _MD_InitThread(thread, PR_TRUE)
#define _MD_INIT_ATTACHED_THREAD(thread)   _MD_InitAttachedThread(thread, PR_FALSE)
#define _MD_EXIT_THREAD   _MD_ExitThread
#define _MD_SUSPEND_THREAD   _MD_SuspendThread
#define _MD_RESUME_THREAD   _MD_ResumeThread
#define _MD_SUSPEND_CPU   _MD_SuspendCPU
#define _MD_RESUME_CPU   _MD_ResumeCPU
#define _MD_BEGIN_SUSPEND_ALL()
#define _MD_END_SUSPEND_ALL()
#define _MD_BEGIN_RESUME_ALL()
#define _MD_END_RESUME_ALL()
#define _MD_INIT_LOCKS   _MD_InitLocks
#define _MD_CLEAN_THREAD   _MD_CleanThread
#define _MD_YIELD()   sginap(0)
#define _MD_WAIT   _MD_wait
#define _MD_WAKEUP_WAITER   _MD_WakeupWaiter
#define _MD_EXIT   _MD_exit
#define _MD_SET_PRIORITY   _MD_SetPriority
#define _MD_CREATE_THREAD   _MD_CreateThread
#define _MD_CLEANUP_BEFORE_EXIT   _MD_CleanupBeforeExit
#define _MD_SELECT   _select
#define _MD_POLL   _poll
#define HAVE_THREAD_AFFINITY   1
#define _MD_GETTHREADAFFINITYMASK   _MD_GetThreadAffinityMask
#define _MD_INIT_RUNNING_CPU   _MD_InitRunningCPU

Functions

 NSPR_API (void) _MD_EarlyInit(void)
 Prototypes for machine dependent function implementations.
 NSPR_API (PRIntervalTime) _MD_IrixGetInterval(void)
 NSPR_API (void *) _MD_GetSP(PRThread *thread)
 NSPR_API (struct PRThread *) _MD_get_attached_thread(void)
 NSPR_API (PRStatus) _MD_NEW_LOCK(struct _MDLock *md)
void _MD_CleanupBeforeExit (void)
int _select (int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout)
int _poll (struct pollfd *fds, unsigned long nfds, int timeout)
 NSPR_API (PRInt32) _MD_GetThreadAffinityMask(PRThread *unused

Variables

char * _nspr_sproc_private
struct _PRCPU_pr_primordialCPU
usema_t * _pr_irix_exit_sem
PRInt32 _pr_irix_exit_now
int _pr_irix_primoridal_cpu_fd []
PRInt32 _pr_irix_process_exit
PRInt32 _pr_irix_process_exit_code
ulock_t _pr_heapLock
PRBool wakeup_parent
PRIntervalTime timeout
PRThreadPriority newPri
void(* start )(void *)
void(*) PRThreadPriorit priority )
void(*) PRThreadPriority
PRThreadScop 
scope )
void(*) PRThreadPriority
PRThreadScope PRThreadStat 
state )
void(*) PRThreadPriority
PRThreadScope PRThreadState
PRUint3 
stackSize )
PRUint32mask

Class Documentation

struct sproc_private_data

Definition at line 141 of file _irix.h.

Collaboration diagram for sproc_private_data:
Class Members
struct _PRCPU * cpu
PRUintn intsOff
struct PRThread * last
struct PRThread * me
int sproc_pid
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 _MDThreadStack

Definition at line 165 of file _aix.h.

Class Members
PRIntn cxByteCount
PRUint32 magic
PRInt8 notused
char * stackTop
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 _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 _MDSegment

Definition at line 181 of file _aix.h.

Class Members
PRUint32 magic
PRInt8 notused
struct _MDCPU_Unix

Definition at line 190 of file _aix.h.

Collaboration diagram for _MDCPU_Unix:
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
PRCList ioQ
PRInt32 ioq_max_osfd
PRInt32 ioq_osfd_cnt
struct pollfd * ioq_pollfds
int ioq_pollfds_size
PRUint32 ioq_timeout
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

Define Documentation

#define _MD_ATOMIC_ADD (   ptr,
  val 
)    add_then_test((unsigned long*)ptr, (unsigned long)val)

Definition at line 115 of file _irix.h.

#define _MD_ATOMIC_DECREMENT (   val)    add_then_test((unsigned long*)val, 0xffffffff)

Definition at line 116 of file _irix.h.

#define _MD_ATOMIC_INCREMENT (   val)    add_then_test((unsigned long*)val, 1)

Definition at line 114 of file _irix.h.

#define _MD_ATOMIC_SET (   val,
  newval 
)    test_and_set((unsigned long*)val, newval)

Definition at line 117 of file _irix.h.

#define _MD_ATTACH_THREAD (   threadp)

Definition at line 177 of file _irix.h.

Definition at line 400 of file _irix.h.

Definition at line 398 of file _irix.h.

Value:
{                                  \
              if (_pr_irix_exit_now) {                         \
                     _PR_POST_SEM(_pr_irix_exit_sem);   \
                     _MD_Wakeup_CPUs();                               \
                     _exit(0);                                               \
              }                                                                     \
       }

Definition at line 169 of file _irix.h.

Definition at line 407 of file _irix.h.

Definition at line 442 of file _irix.h.

Definition at line 439 of file _irix.h.

#define _MD_CURRENT_CPU ( )    (_PR_PRDA()->cpu)

Definition at line 156 of file _irix.h.

Definition at line 167 of file _irix.h.

#define _MD_CVAR_POST_SEM (   threadp)    usvsema((threadp)->md.cvar_pollsem)

Definition at line 213 of file _irix.h.

Definition at line 66 of file _irix.h.

Definition at line 93 of file _irix.h.

Definition at line 401 of file _irix.h.

Definition at line 399 of file _irix.h.

Definition at line 424 of file _irix.h.

Definition at line 384 of file _irix.h.

Definition at line 96 of file _irix.h.

Definition at line 166 of file _irix.h.

Definition at line 102 of file _irix.h.

#define _MD_GET_INTSOFF ( )    (_PR_PRDA()->intsOff)

Definition at line 159 of file _irix.h.

Definition at line 109 of file _irix.h.

#define _MD_GET_SPROC_PID ( )    (_PR_PRDA()->sproc_pid)

Definition at line 162 of file _irix.h.

Definition at line 461 of file _irix.h.

Definition at line 113 of file _irix.h.

Definition at line 380 of file _irix.h.

#define _MD_INIT_CONTEXT (   _thread,
  _sp,
  _main,
  status 
)
Value:
PR_BEGIN_MACRO                                  \
       int *jb = (_thread)->md.jb;              \
    *status = PR_TRUE;              \
       (void) setjmp(jb);                       \
       (_thread)->md.jb[JB_SP] = (int) ((_sp) - 64); \
       (_thread)->md.jb[JB_PC] = (int) _main;          \
       _thread->no_sched = 0; \
    PR_END_MACRO

Definition at line 331 of file _irix.h.

Definition at line 98 of file _irix.h.

Definition at line 404 of file _irix.h.

Definition at line 464 of file _irix.h.

#define _MD_INIT_THREAD (   thread)    _MD_InitThread(thread, PR_TRUE)

Definition at line 379 of file _irix.h.

Definition at line 105 of file _irix.h.

Definition at line 215 of file _irix.h.

Definition at line 216 of file _irix.h.

Definition at line 154 of file _irix.h.

#define _MD_LOCK (   _lockp)    _PR_LOCK((_lockp)->lock)

Definition at line 251 of file _irix.h.

#define _MD_MIN_STACK_SIZE   16384L

Definition at line 67 of file _irix.h.

#define _MD_MMAP_FLAGS   MAP_PRIVATE

Definition at line 64 of file _irix.h.

Definition at line 454 of file _irix.h.

#define _MD_RESTORE_CONTEXT (   _newThread)
Value:
PR_BEGIN_MACRO \
    int *jb = (_newThread)->md.jb; \
    _MD_RESTORE_ERRNO(_newThread) \
    _MD_SET_CURRENT_THREAD(_newThread); \
    _newThread->no_sched = 1;             \
    longjmp(jb, 1); \
    PR_END_MACRO

Definition at line 366 of file _irix.h.

#define _MD_RESTORE_ERRNO (   _thread)    errno = (_thread)->md.errcode;

Definition at line 180 of file _irix.h.

Definition at line 396 of file _irix.h.

Definition at line 390 of file _irix.h.

#define _MD_SAVE_ERRNO (   _thread)    (_thread)->md.errcode = errno;

Definition at line 179 of file _irix.h.

Definition at line 450 of file _irix.h.

#define _MD_SET_CURRENT_CPU (   _cpu)    _PR_PRDA()->cpu = (_cpu)

Definition at line 157 of file _irix.h.

#define _MD_SET_CURRENT_THREAD (   _thread)    _PR_PRDA()->me = (_thread)

Definition at line 152 of file _irix.h.

#define _MD_SET_INTSOFF (   _val)    (_PR_PRDA()->intsOff = _val)

Definition at line 158 of file _irix.h.

#define _MD_SET_LAST_THREAD (   _thread)    _PR_PRDA()->last = (_thread)

Definition at line 155 of file _irix.h.

Definition at line 430 of file _irix.h.

#define _MD_SET_SPROC_PID (   _val)    (_PR_PRDA()->sproc_pid = _val)

Definition at line 161 of file _irix.h.

Definition at line 393 of file _irix.h.

Definition at line 387 of file _irix.h.

#define _MD_SWITCH_CONTEXT (   _thread)
Value:
PR_BEGIN_MACRO    \
    PR_ASSERT(_thread->no_sched); \
    if (!setjmp(_thread->md.jb)) { \
        _MD_SAVE_ERRNO(_thread) \
        _MD_SET_LAST_THREAD(_thread); \
        _PR_Schedule(); \
    } else {      \
        PR_ASSERT(_MD_LAST_THREAD() !=_MD_CURRENT_THREAD()); \
            _MD_LAST_THREAD()->no_sched = 0;                   \
    }             \
    PR_END_MACRO

Definition at line 349 of file _irix.h.

#define _MD_TEST_AND_LOCK (   _lockp)    (uscsetlock((_lockp)->lock, 1) == 0)

Definition at line 253 of file _irix.h.

#define _MD_THIS_THREAD ( )    (_PR_PRDA()->me)

Definition at line 153 of file _irix.h.

#define _MD_UNLOCK (   _lockp)    _PR_UNLOCK((_lockp)->lock)

Definition at line 252 of file _irix.h.

Definition at line 415 of file _irix.h.

Definition at line 421 of file _irix.h.

#define _MD_YIELD (   void)    sginap(0)

Definition at line 409 of file _irix.h.

Definition at line 82 of file _irix.h.

#define _PR_ADD_TO_IOQ (   _pq,
  _cpu 
)    PR_APPEND_LINK(&_pq.links, &_PR_IOQ(_cpu))

Definition at line 306 of file _irix.h.

#define _PR_FD_EXCEPTION_CNT (   _cpu)    ((_cpu)->md.md_unix.fd_exception_cnt)

Definition at line 312 of file _irix.h.

#define _PR_FD_EXCEPTION_SET (   _cpu)    ((_cpu)->md.md_unix.fd_exception_set)

Definition at line 311 of file _irix.h.

#define _PR_FD_READ_CNT (   _cpu)    ((_cpu)->md.md_unix.fd_read_cnt)

Definition at line 308 of file _irix.h.

#define _PR_FD_READ_SET (   _cpu)    ((_cpu)->md.md_unix.fd_read_set)

Definition at line 307 of file _irix.h.

#define _PR_FD_WRITE_CNT (   _cpu)    ((_cpu)->md.md_unix.fd_write_cnt)

Definition at line 310 of file _irix.h.

#define _PR_FD_WRITE_SET (   _cpu)    ((_cpu)->md.md_unix.fd_write_set)

Definition at line 309 of file _irix.h.

Definition at line 41 of file _irix.h.

Definition at line 74 of file _irix.h.

Definition at line 78 of file _irix.h.

Definition at line 80 of file _irix.h.

#define _PR_IOQ (   _cpu)    ((_cpu)->md.md_unix.ioQ)

Definition at line 305 of file _irix.h.

#define _PR_IOQ_MAX_OSFD (   _cpu)    ((_cpu)->md.md_unix.ioq_max_osfd)

Definition at line 314 of file _irix.h.

#define _PR_IOQ_MIN_POLLFDS_SIZE (   _cpu)    32

Definition at line 319 of file _irix.h.

#define _PR_IOQ_OSFD_CNT (   _cpu)    ((_cpu)->md.md_unix.ioq_osfd_cnt)

Definition at line 315 of file _irix.h.

#define _PR_IOQ_POLLFDS (   _cpu)    ((_cpu)->md.md_unix.ioq_pollfds)

Definition at line 316 of file _irix.h.

#define _PR_IOQ_POLLFDS_SIZE (   _cpu)    ((_cpu)->md.md_unix.ioq_pollfds_size)

Definition at line 317 of file _irix.h.

#define _PR_IOQ_TIMEOUT (   _cpu)    ((_cpu)->md.md_unix.ioq_timeout)

Definition at line 313 of file _irix.h.

Value:
{                                         \
              PRIntn _is;                                      \
		PRThread *me = _MD_GET_ATTACHED_THREAD();                    \
              if (me && !_PR_IS_NATIVE_THREAD(me))                    \
                     _PR_INTSOFF(_is);                         \
              ussetlock(lock);                                 \
              if (me && !_PR_IS_NATIVE_THREAD(me))                    \
                     _PR_FAST_INTSON(_is);                            \
       }

Definition at line 228 of file _irix.h.

Value:
{                                         \
                     PRIntn _is;                               \
                            if (_pr_primordialCPU) {           \
                            if (_MD_GET_ATTACHED_THREAD() &&          \
                                   !_PR_IS_NATIVE_THREAD(             \
                                   _MD_GET_ATTACHED_THREAD())) \
                                          _PR_INTSOFF(_is);    \
                                   _PR_LOCK(_pr_heapLock);            \
                            }

Definition at line 190 of file _irix.h.

Definition at line 288 of file _irix.h.

Definition at line 63 of file _irix.h.

#define _PR_OPEN_POLL_SEM (   _sem)    usopenpollsema(_sem, 0666)

Definition at line 209 of file _irix.h.

Definition at line 75 of file _irix.h.

#define _PR_POST_SEM (   _sem)    usvsema(_sem)

Definition at line 211 of file _irix.h.

Definition at line 151 of file _irix.h.

Definition at line 58 of file _irix.h.

#define _PR_SI_SYSNAME   "IRIX"

Definition at line 57 of file _irix.h.

#define _PR_STACK_VMBASE   0x50000000

Definition at line 62 of file _irix.h.

Definition at line 77 of file _irix.h.

Value:
{                                         \
              PRIntn _is;                                      \
		PRThread *me = _MD_GET_ATTACHED_THREAD();                    \
              if (me && !_PR_IS_NATIVE_THREAD(me))                    \
                     _PR_INTSOFF(_is);                         \
              usunsetlock(lock);                               \
              if (me && !_PR_IS_NATIVE_THREAD(me))                    \
                     _PR_FAST_INTSON(_is);                            \
       }

Definition at line 238 of file _irix.h.

Value:
if (_pr_primordialCPU)      {             \
                                   _PR_UNLOCK(_pr_heapLock);   \
                            if (_MD_GET_ATTACHED_THREAD() &&          \
                                   !_PR_IS_NATIVE_THREAD(             \
                                   _MD_GET_ATTACHED_THREAD())) \
                                          _PR_INTSON(_is);     \
                            }                                  \
                       }

Definition at line 200 of file _irix.h.

Definition at line 76 of file _irix.h.

#define _PR_VMBASE   0x30000000

Definition at line 61 of file _irix.h.

#define _PR_WAIT_SEM (   _sem)    uspsema(_sem)

Definition at line 210 of file _irix.h.

Definition at line 72 of file _irix.h.

Definition at line 79 of file _irix.h.

Definition at line 458 of file _irix.h.

Definition at line 70 of file _irix.h.

Definition at line 71 of file _irix.h.

#define PR_DLL_SUFFIX   ".so"

Definition at line 59 of file _irix.h.

Definition at line 81 of file _irix.h.

#define PR_LINKER_ARCH   "irix"

Definition at line 56 of file _irix.h.

Definition at line 73 of file _irix.h.


Function Documentation

Definition at line 812 of file irix.c.

{
    extern PRInt32    _pr_cpus_exit;

    _MD_unix_terminate_waitpid_daemon();

       _pr_irix_exit_now = 1;
    if (_pr_numCPU > 1) {
        /*
         * Set a global flag, and wakeup all cpus which will notice the flag
         * and exit.
         */
        _pr_cpus_exit = getpid();
        _MD_Wakeup_CPUs();
        while(_pr_numCPU > 1) {
            _PR_WAIT_SEM(_pr_irix_exit_sem);
            _pr_numCPU--;
        }
    }
    /*
     * cause global threads on the recycle list to exit
     */
     _PR_DEADQ_LOCK;
     if (_PR_NUM_DEADNATIVE != 0) {
       PRThread *thread;
       PRCList *ptr;

        ptr = _PR_DEADNATIVEQ.next;
        while( ptr != &_PR_DEADNATIVEQ ) {
              thread = _PR_THREAD_PTR(ptr);
              _MD_CVAR_POST_SEM(thread);
                ptr = ptr->next;
        } 
     }
     _PR_DEADQ_UNLOCK;
     while(_PR_NUM_DEADNATIVE > 1) {
       _PR_WAIT_SEM(_pr_irix_exit_sem);
       _PR_DEC_DEADNATIVE;
     }
}

Here is the call graph for this function:

int _poll ( struct pollfd *  fds,
unsigned long  nfds,
int  timeout 
)
int _select ( int  nfds,
fd_set readfds,
fd_set writefds,
fd_set exceptfds,
struct timeval timeout 
)
NSPR_API ( void  )

Prototypes for machine dependent function implementations.

(Too bad NSPR's MD system blows so much that we have to reiterate every stinking thing we implement here in our MD header file.)

NSPR_API ( void )
NSPR_API ( struct PRThread )

Variable Documentation

Definition at line 72 of file irix.c.

ulock_t _pr_heapLock

Definition at line 117 of file irix.c.

Definition at line 120 of file irix.c.

Definition at line 119 of file irix.c.

Definition at line 125 of file irix.c.

Definition at line 122 of file irix.c.

Definition at line 121 of file irix.c.

Definition at line 40 of file prucpu.c.

Definition at line 460 of file _irix.h.

Definition at line 429 of file _irix.h.

void(*) PRThreadPriorit priority)

Definition at line 435 of file _irix.h.

void(*) PRThreadPriority PRThreadScop scope)

Definition at line 435 of file _irix.h.

Definition at line 435 of file _irix.h.

void(* start)(void *)

Definition at line 434 of file _irix.h.

Definition at line 435 of file _irix.h.

Definition at line 414 of file _irix.h.

Definition at line 376 of file _irix.h.