Back to index

lightning-sunbird  0.9+nobinonly
Classes | Defines | Functions
_reliantunix.h File Reference
#include <ucontext.h>
#include <sys/time.h>
#include <sys/types.h>
#include <sys/select.h>

Go to the source code of this file.

Classes

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

Defines

#define PR_LINKER_ARCH   "sinix"
#define _PR_SI_SYSNAME   "SINIX"
#define _PR_SI_ARCHITECTURE   "mips"
#define PR_DLL_SUFFIX   ".so"
#define _PR_VMBASE   0x30000000
#define _PR_STACK_VMBASE   0x50000000
#define _MD_DEFAULT_STACK_SIZE   (2*65536L)
#define _MD_MMAP_FLAGS   MAP_PRIVATE|MAP_FIXED
#define HAVE_DLL
#define USE_DLFCN
#define NEED_STRFTIME_LOCK
#define NEED_TIME_R
#define HAVE_NETCONFIG
#define HAVE_WEAK_IO_SYMBOLS
#define HAVE_WEAK_MALLOC_SYMBOLS
#define _PR_RECV_BROKEN   /* recv doesn't work on Unix Domain Sockets */
#define _PR_POLL_AVAILABLE
#define _PR_USE_POLL
#define _PR_STAT_HAS_ST_ATIM
#define _PR_NO_LARGE_FILES
#define USE_SETCXT   /* temporarily disabled... */
#define _GETCONTEXT   getcxt
#define _SETCONTEXT   setcxt
#define _MD_GET_SP(_t)   (_t)->md.context.uc_mcontext.gpregs[CXT_SP]
#define _PR_CONTEXT_TYPE   ucontext_t
#define _PR_NUM_GCREGS   NGREG
#define CONTEXT(_thread)   (&(_thread)->md.context)
#define _PR_IS_NATIVE_THREAD_SUPPORTED()   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_LOCKS()
#define _MD_NEW_LOCK(lock)   PR_SUCCESS
#define _MD_FREE_LOCK(lock)
#define _MD_LOCK(lock)
#define _MD_UNLOCK(lock)
#define _MD_INIT_IO()
#define _MD_IOQ_LOCK()
#define _MD_IOQ_UNLOCK()
#define _MD_INIT_CONTEXT(thread, _sp, _main, status)
#define _MD_SWITCH_CONTEXT(_thread)
#define _MD_RESTORE_CONTEXT(_thread)
#define _MD_SAVE_ERRNO(t)   (t)->md.errcode = errno;
#define _MD_RESTORE_ERRNO(t)   errno = (t)->md.errcode;
#define _MD_GET_INTERVAL   _PR_UNIX_GetInterval
#define _MD_INTERVAL_PER_SEC   _PR_UNIX_TicksPerSecond
#define _MD_EARLY_INIT   _MD_EarlyInit
#define _MD_FINAL_INIT   _PR_UnixInit
#define _MD_INIT_RUNNING_CPU(cpu)   _MD_unix_init_running_cpu(cpu)
#define _MD_INIT_THREAD   _MD_InitializeThread
#define _MD_EXIT_THREAD(thread)
#define _MD_SUSPEND_THREAD(thread)
#define _MD_RESUME_THREAD(thread)
#define _MD_CLEAN_THREAD(_thread)
#define _MD_SELECT(nfds, r, w, e, tv)   _select(nfds,r,w,e,tv)
#define _MD_POLL   _poll

Functions

int getcxt (ucontext_t *)
int setcxt (ucontext_t *)
int _select (int nfds, fd_set *readfds, fd_set *writefds, fd_set *execptfds, struct timeval *timeout)

Class Documentation

struct _MDThreadStack

Definition at line 165 of file _aix.h.

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

Definition at line 88 of file _reliantunix.h.

#define _MD_CLEAN_THREAD (   _thread)

Definition at line 253 of file _reliantunix.h.

#define _MD_DEFAULT_STACK_SIZE   (2*65536L)

Definition at line 57 of file _reliantunix.h.

Definition at line 246 of file _reliantunix.h.

#define _MD_EXIT_THREAD (   thread)

Definition at line 250 of file _reliantunix.h.

Definition at line 247 of file _reliantunix.h.

Definition at line 177 of file _reliantunix.h.

Definition at line 243 of file _reliantunix.h.

#define _MD_GET_SP (   _t)    (_t)->md.context.uc_mcontext.gpregs[CXT_SP]

Definition at line 98 of file _reliantunix.h.

#define _MD_INIT_CONTEXT (   thread,
  _sp,
  _main,
  status 
)
Value:
PR_BEGIN_MACRO                                                  \
    *status = PR_TRUE;                                              \
    _GETCONTEXT(CONTEXT(thread));                                   \
    /* this is supposed to point to the stack BASE, not to SP */    \
    CONTEXT(thread)->uc_stack.ss_sp = thread->stack->stackBottom;   \
    CONTEXT(thread)->uc_stack.ss_size = thread->stack->stackSize;   \
    CONTEXT(thread)->uc_mcontext.gpregs[CXT_SP] = ((unsigned long)_sp - 128) & 0xfffffff8; \
    CONTEXT(thread)->uc_mcontext.gpregs[CXT_T9] = _main;            \
    CONTEXT(thread)->uc_mcontext.gpregs[CXT_EPC] = _main;           \
    CONTEXT(thread)->uc_mcontext.gpregs[CXT_RA] = 0;                \
    thread->no_sched = 0;                                           \
    PR_END_MACRO

Definition at line 190 of file _reliantunix.h.

Definition at line 180 of file _reliantunix.h.

Definition at line 175 of file _reliantunix.h.

Definition at line 248 of file _reliantunix.h.

Definition at line 249 of file _reliantunix.h.

Definition at line 244 of file _reliantunix.h.

Definition at line 181 of file _reliantunix.h.

Definition at line 182 of file _reliantunix.h.

Definition at line 178 of file _reliantunix.h.

#define _MD_MMAP_FLAGS   MAP_PRIVATE|MAP_FIXED

Definition at line 58 of file _reliantunix.h.

Definition at line 176 of file _reliantunix.h.

Definition at line 268 of file _reliantunix.h.

#define _MD_RESTORE_CONTEXT (   _thread)
Value:
PR_BEGIN_MACRO                     \
    ucontext_t *uc = CONTEXT(_thread); \
    uc->uc_mcontext.gpregs[CXT_V0] = 1;\
    uc->uc_mcontext.gpregs[CXT_A3] = 0;\
    _MD_RESTORE_ERRNO(_thread);        \
    _MD_SET_CURRENT_THREAD(_thread);   \
    _SETCONTEXT(uc);                   \
    PR_END_MACRO

Definition at line 230 of file _reliantunix.h.

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

Definition at line 241 of file _reliantunix.h.

#define _MD_RESUME_THREAD (   thread)

Definition at line 252 of file _reliantunix.h.

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

Definition at line 240 of file _reliantunix.h.

#define _MD_SELECT (   nfds,
  r,
  w,
  e,
  tv 
)    _select(nfds,r,w,e,tv)

Definition at line 267 of file _reliantunix.h.

#define _MD_SUSPEND_THREAD (   thread)

Definition at line 251 of file _reliantunix.h.

#define _MD_SWITCH_CONTEXT (   _thread)
Value:
PR_BEGIN_MACRO                        \
    if (!_GETCONTEXT(CONTEXT(_thread))) { \
       _MD_SAVE_ERRNO(_thread);          \
       _MD_SET_LAST_THREAD(_thread);     \
        _PR_Schedule();                   \
    }                                     \
    PR_END_MACRO

Definition at line 207 of file _reliantunix.h.

Definition at line 179 of file _reliantunix.h.

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

Definition at line 156 of file _reliantunix.h.

#define _PR_CONTEXT_TYPE   ucontext_t

Definition at line 99 of file _reliantunix.h.

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

Definition at line 162 of file _reliantunix.h.

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

Definition at line 161 of file _reliantunix.h.

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

Definition at line 158 of file _reliantunix.h.

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

Definition at line 157 of file _reliantunix.h.

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

Definition at line 160 of file _reliantunix.h.

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

Definition at line 159 of file _reliantunix.h.

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

Definition at line 155 of file _reliantunix.h.

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

Definition at line 164 of file _reliantunix.h.

#define _PR_IOQ_MIN_POLLFDS_SIZE (   _cpu)    32

Definition at line 169 of file _reliantunix.h.

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

Definition at line 165 of file _reliantunix.h.

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

Definition at line 166 of file _reliantunix.h.

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

Definition at line 167 of file _reliantunix.h.

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

Definition at line 163 of file _reliantunix.h.

Definition at line 104 of file _reliantunix.h.

Definition at line 138 of file _reliantunix.h.

Definition at line 72 of file _reliantunix.h.

#define _PR_NUM_GCREGS   NGREG

Definition at line 100 of file _reliantunix.h.

Definition at line 69 of file _reliantunix.h.

#define _PR_RECV_BROKEN   /* recv doesn't work on Unix Domain Sockets */

Definition at line 68 of file _reliantunix.h.

Definition at line 52 of file _reliantunix.h.

#define _PR_SI_SYSNAME   "SINIX"

Definition at line 51 of file _reliantunix.h.

#define _PR_STACK_VMBASE   0x50000000

Definition at line 56 of file _reliantunix.h.

Definition at line 71 of file _reliantunix.h.

Definition at line 70 of file _reliantunix.h.

#define _PR_VMBASE   0x30000000

Definition at line 55 of file _reliantunix.h.

Definition at line 89 of file _reliantunix.h.

#define CONTEXT (   _thread)    (&(_thread)->md.context)

Definition at line 102 of file _reliantunix.h.

Definition at line 61 of file _reliantunix.h.

Definition at line 65 of file _reliantunix.h.

Definition at line 66 of file _reliantunix.h.

Definition at line 67 of file _reliantunix.h.

Definition at line 63 of file _reliantunix.h.

Definition at line 64 of file _reliantunix.h.

#define PR_DLL_SUFFIX   ".so"

Definition at line 53 of file _reliantunix.h.

#define PR_LINKER_ARCH   "sinix"

Definition at line 50 of file _reliantunix.h.

Definition at line 62 of file _reliantunix.h.

#define USE_SETCXT   /* temporarily disabled... */

Definition at line 82 of file _reliantunix.h.


Function Documentation

int _select ( int  nfds,
fd_set readfds,
fd_set writefds,
fd_set execptfds,
struct timeval timeout 
)
int getcxt ( ucontext_t *  )
int setcxt ( ucontext_t *  )