Back to index

lightning-sunbird  0.9+nobinonly
Classes | Defines | Functions
_openvms.h File Reference
#include <setjmp.h>
#include <machine/builtins.h>

Go to the source code of this file.

Classes

struct  addrinfo
struct  _md_in6_addr
struct  _md_sockaddr_in6
struct  _MDThread
struct  _MDThreadStack
struct  _MDLock
struct  _MDSemaphore
struct  _MDCVar
struct  _MDSegment
struct  _MDCPU_Unix
struct  _MDCPU
union  _md_in6_addr._S6_un

Defines

#define PR_LINKER_ARCH   "OpenVMS"
#define _PR_SI_SYSNAME   "OpenVMS"
#define _PR_SI_ARCHITECTURE   "vax"
#define PR_DLL_SUFFIX   ".so"
#define _PR_VMBASE   0x30000000
#define _PR_STACK_VMBASE   0x50000000
#define _MD_DEFAULT_STACK_SIZE   131072L
#define _MD_MINIMUM_STACK_SIZE   131072L
#define SA_RESTART   0
#define _MD_MMAP_FLAGS   MAP_PRIVATE|MAP_FIXED
#define NEED_TIME_R
#define HAVE_DLL
#define USE_DLFCN
#define _PR_POLL_AVAILABLE
#define _PR_USE_POLL
#define _PR_STAT_HAS_ONLY_ST_ATIME
#define _PR_NO_LARGE_FILES
#define _PR_STRICT_ADDR_LEN
#define _PR_NEED_SECRET_AF
#define _PR_HAVE_GETIPNODEBYNAME
#define _PR_HAVE_GETIPNODEBYADDR
#define _PR_HAVE_GETADDRINFO
#define _PR_INET6_PROBE
#define AF_INET6   26
#define AI_CANONNAME   0x00000002
#define AI_V4MAPPED   0x00000010
#define AI_ALL   0x00000008
#define AI_ADDRCONFIG   0x00000020
#define _PR_HAVE_MD_SOCKADDR_IN6
#define _MD_GET_SP(_t)   (((struct sigcontext *) (_t)->md.context)->sc_sp)
#define PR_NUM_GCREGS   _JBLEN
#define CONTEXT(_th)   ((_th)->md.context)
#define _MD_INIT_CONTEXT(_thread, _sp, _main, status)
#define _MD_SWITCH_CONTEXT(_thread)
#define _MD_RESTORE_CONTEXT(_thread)
#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_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   __select
#define _MD_POLL   __poll
#define _PR_HAVE_ATOMIC_OPS
#define _MD_INIT_ATOMIC()
#define _MD_ATOMIC_ADD(ptr, val)   (__ATOMIC_ADD_LONG(ptr,val) + val)
#define _MD_ATOMIC_INCREMENT(val)   (__ATOMIC_INCREMENT_LONG(val) + 1)
#define _MD_ATOMIC_DECREMENT(val)   (__ATOMIC_DECREMENT_LONG(val) - 1)
#define _MD_ATOMIC_SET(val, newval)   __ATOMIC_EXCH_LONG(val, newval)

Functions

PRIntervalTime _PR_UNIX_GetInterval (void)
PRIntervalTime _PR_UNIX_TicksPerSecond (void)
void _MD_EarlyInit (void)
int __select (int, fd_set *, fd_set *, fd_set *, struct timeval *)
int __poll (struct pollfd filedes[], unsigned int nfds, int timeout)
int thread_suspend (PRThread *thr_id)
int thread_resume (PRThread *thr_id)

Class Documentation

struct addrinfo

Definition at line 120 of file _openvms.h.

Collaboration diagram for addrinfo:
Class Members
struct sockaddr * ai_addr
size_t ai_addrlen
char * ai_canonname
int ai_family
int ai_flags
struct addrinfo * ai_next
int ai_protocol
int ai_socktype
struct _md_in6_addr

Definition at line 115 of file _hpux.h.

Class Members
union _md_in6_addr _S6_un
union _md_in6_addr _S6_un
union _md_in6_addr _s6_un
union _md_in6_addr _S6_un
union _md_in6_addr _S6_un
struct _md_sockaddr_in6

Definition at line 124 of file _hpux.h.

Class Members
PRUint32 __sin6_src_id
PRInt16 sin6_family
PRUint16 sin6_family
PRUint32 sin6_flowinfo
PRUint16 sin6_port
PRUint32 sin6_scope_id
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
union _md_in6_addr._S6_un

Definition at line 140 of file _openvms.h.

Class Members
PRUint16 _S6_u16
PRUint32 _S6_u32
PRUint8 _S6_u8

Define Documentation

#define _MD_ATOMIC_ADD (   ptr,
  val 
)    (__ATOMIC_ADD_LONG(ptr,val) + val)

Definition at line 325 of file _openvms.h.

#define _MD_ATOMIC_DECREMENT (   val)    (__ATOMIC_DECREMENT_LONG(val) - 1)

Definition at line 327 of file _openvms.h.

#define _MD_ATOMIC_INCREMENT (   val)    (__ATOMIC_INCREMENT_LONG(val) + 1)

Definition at line 326 of file _openvms.h.

#define _MD_ATOMIC_SET (   val,
  newval 
)    __ATOMIC_EXCH_LONG(val, newval)

Definition at line 328 of file _openvms.h.

#define _MD_CLEAN_THREAD (   _thread)

Definition at line 303 of file _openvms.h.

Definition at line 61 of file _openvms.h.

Definition at line 291 of file _openvms.h.

#define _MD_EXIT_THREAD (   thread)

Definition at line 300 of file _openvms.h.

Definition at line 293 of file _openvms.h.

Definition at line 274 of file _openvms.h.

Definition at line 286 of file _openvms.h.

#define _MD_GET_SP (   _t)    (((struct sigcontext *) (_t)->md.context)->sc_sp)

Definition at line 162 of file _openvms.h.

Definition at line 324 of file _openvms.h.

#define _MD_INIT_CONTEXT (   _thread,
  _sp,
  _main,
  status 
)
Value:
{                                                                \
        *status = PR_TRUE;              \
    if (setjmp(CONTEXT(_thread))) {                            \
       (*_main)();                                      \
    }                                                   \
    _MD_GET_SP(_thread) = (long) ((_sp) - 64);                 \
    _MD_GET_SP(_thread) &= ~15;                                \
}

Definition at line 174 of file _openvms.h.

Definition at line 277 of file _openvms.h.

Definition at line 271 of file _openvms.h.

Definition at line 294 of file _openvms.h.

Definition at line 295 of file _openvms.h.

Definition at line 288 of file _openvms.h.

Definition at line 278 of file _openvms.h.

Definition at line 279 of file _openvms.h.

Definition at line 275 of file _openvms.h.

Definition at line 62 of file _openvms.h.

#define _MD_MMAP_FLAGS   MAP_PRIVATE|MAP_FIXED

Definition at line 87 of file _openvms.h.

Definition at line 273 of file _openvms.h.

Definition at line 310 of file _openvms.h.

#define _MD_RESTORE_CONTEXT (   _thread)
Value:
{                                \
    errno = (_thread)->md.errcode;     \
    _MD_SET_CURRENT_THREAD(_thread);      \
    longjmp(CONTEXT(_thread), 1);    \
}

Definition at line 193 of file _openvms.h.

#define _MD_RESUME_THREAD (   thread)

Definition at line 302 of file _openvms.h.

Definition at line 307 of file _openvms.h.

#define _MD_SUSPEND_THREAD (   thread)

Definition at line 301 of file _openvms.h.

#define _MD_SWITCH_CONTEXT (   _thread)
Value:
if (!setjmp(CONTEXT(_thread))) { \
       (_thread)->md.errcode = errno;  \
       _PR_Schedule();                  \
    }

Definition at line 184 of file _openvms.h.

Definition at line 276 of file _openvms.h.

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

Definition at line 251 of file _openvms.h.

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

Definition at line 257 of file _openvms.h.

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

Definition at line 256 of file _openvms.h.

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

Definition at line 253 of file _openvms.h.

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

Definition at line 252 of file _openvms.h.

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

Definition at line 255 of file _openvms.h.

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

Definition at line 254 of file _openvms.h.

Definition at line 323 of file _openvms.h.

Definition at line 112 of file _openvms.h.

Definition at line 111 of file _openvms.h.

Definition at line 110 of file _openvms.h.

Definition at line 136 of file _openvms.h.

Definition at line 113 of file _openvms.h.

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

Definition at line 250 of file _openvms.h.

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

Definition at line 259 of file _openvms.h.

#define _PR_IOQ_MIN_POLLFDS_SIZE (   _cpu)    32

Definition at line 264 of file _openvms.h.

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

Definition at line 260 of file _openvms.h.

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

Definition at line 261 of file _openvms.h.

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

Definition at line 262 of file _openvms.h.

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

Definition at line 258 of file _openvms.h.

Definition at line 233 of file _openvms.h.

Definition at line 104 of file _openvms.h.

Definition at line 102 of file _openvms.h.

Definition at line 99 of file _openvms.h.

Definition at line 55 of file _openvms.h.

#define _PR_SI_SYSNAME   "OpenVMS"

Definition at line 51 of file _openvms.h.

#define _PR_STACK_VMBASE   0x50000000

Definition at line 60 of file _openvms.h.

Definition at line 101 of file _openvms.h.

Definition at line 103 of file _openvms.h.

Definition at line 100 of file _openvms.h.

#define _PR_VMBASE   0x30000000

Definition at line 59 of file _openvms.h.

#define AF_INET6   26

Definition at line 117 of file _openvms.h.

#define AI_ADDRCONFIG   0x00000020

Definition at line 133 of file _openvms.h.

#define AI_ALL   0x00000008

Definition at line 132 of file _openvms.h.

#define AI_CANONNAME   0x00000002

Definition at line 119 of file _openvms.h.

#define AI_V4MAPPED   0x00000010

Definition at line 131 of file _openvms.h.

#define CONTEXT (   _th)    ((_th)->md.context)

Definition at line 164 of file _openvms.h.

Definition at line 96 of file _openvms.h.

Definition at line 94 of file _openvms.h.

#define PR_DLL_SUFFIX   ".so"

Definition at line 57 of file _openvms.h.

#define PR_LINKER_ARCH   "OpenVMS"

Definition at line 50 of file _openvms.h.

#define PR_NUM_GCREGS   _JBLEN

Definition at line 163 of file _openvms.h.

#define SA_RESTART   0

Definition at line 69 of file _openvms.h.

Definition at line 97 of file _openvms.h.


Function Documentation

int __poll ( struct pollfd  filedes[],
unsigned int  nfds,
int  timeout 
)
int __select ( int  ,
fd_set ,
fd_set ,
fd_set ,
struct timeval  
)

Definition at line 291 of file mdmac.c.

{
       Handle                      environmentVariables;

       GetCurrentProcess(&gApplicationProcess);

       INIT_CRITICAL_REGION();
       InitIdleSemaphore();

#if !defined(MAC_NSPR_STANDALONE)
       // MacintoshInitializeMemory();  Moved to mdmacmem.c: AllocateRawMemory(Size blockSize)
#else
       MacintoshInitializeMemory();
#endif
       MacintoshInitializeTime();
       
       //     Install resource-controlled environment variables.
       
       environmentVariables = GetResource('Envi', 128);
       if (environmentVariables != NULL) {
       
              Size   resourceSize;
              char   *currentPutEnvString = (char *)*environmentVariables,
                            *currentScanChar = currentPutEnvString;
                            
              resourceSize = GetHandleSize(environmentVariables);                   
              DetachResource(environmentVariables);
              HLock(environmentVariables);
              
              while (resourceSize--) {
              
                     if ((*currentScanChar == '\n') || (*currentScanChar == '\r')) {
                            *currentScanChar = 0;
                            _MD_PutEnv (currentPutEnvString);
                            currentPutEnvString = currentScanChar + 1;
                     }
              
                     currentScanChar++;
              
              }
              
              DisposeHandle(environmentVariables);

       }

#ifdef PR_INTERNAL_LOGGING
       _MD_PutEnv ("NSPR_LOG_MODULES=clock:6,cmon:6,io:6,mon:6,linker:6,cvar:6,sched:6,thread:6");
#endif

       InstallStackSpacePatch();
}

Definition at line 124 of file beos.c.

{
       struct timeval time;
       PRIntervalTime ticks;

       (void)GETTIMEOFDAY(&time);  /* fallicy of course */
       ticks = (PRUint32)time.tv_sec * PR_MSEC_PER_SEC;  /* that's in milliseconds */
       ticks += (PRUint32)time.tv_usec / PR_USEC_PER_MSEC;  /* so's that */
       return ticks;
}  /* _PR_SUNOS_GetInterval */

Definition at line 135 of file beos.c.

{
       return 1000;  /* this needs some work :) */
}
int thread_resume ( PRThread thr_id)

Definition at line 199 of file openvms.c.

                                    {
    extern int pthread_resume_np(pthread_t thread);
    int res;

    res = pthread_resume_np (thr_id->id);
       
    thr_id->suspend |= PT_THREAD_RESUMED;

    return 0;
}
int thread_suspend ( PRThread thr_id)

Definition at line 174 of file openvms.c.

                                     {

    extern int pthread_suspend_np (
                     pthread_t                       thread,
                     __pthreadLongUint_t             *regs,
                     void                            *spare);

    __pthreadLongUint_t regs[34];
    int res;

    /*
    ** A return res < 0 indicates that the thread was suspended
    ** but register information could not be obtained
    */

    res = pthread_suspend_np(thr_id->id,&regs[0],0);
    if (res==0)
       thr_id->sp = (void *) regs[30]; 

    thr_id->suspend |= PT_THREAD_SUSPENDED;

    /* Always succeeds */
    return 0;
}