Coda Distributed File System
Classes | Macros | Functions | Variables
lwp.c File Reference
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <time.h>
#include <fcntl.h>
#include <sys/param.h>
#include <sys/mman.h>
#include <assert.h>
#include <lwp/lwp.h>
#include "lwp.private.h"
#include "lwp_ucontext.h"
#include "lwp_stacktrace.h"
#include "valgrind.h"
Include dependency graph for lwp.c:

Classes

struct  QUEUE
 

Macros

#define MAP_FAILED   ((void *)-1)
 
#define ON   1
 
#define OFF   0
 
#define READY   2
 
#define WAITING   3
 
#define MINSTACK   32768 /* allocate at least 32KB for stacks */
 
#define STACKPAD   4096 /* pad any requested stack size to PAGE_SIZE */
 
#define MAX(a, b)   ((a) > (b) ? (a) : (b))
 
#define LWPANCHOR   (*lwp_init)
 
#define MAX_PRIORITIES   (LWP_MAX_PRIORITY + 1)
 
#define REAPER_STACKSIZE   32768
 
#define TRACER_STACKSIZE   32768
 
#define timercmp(tvp, uvp, cmp)
 
#define timerisset(tvp)   ((tvp)->tv_sec || (tvp)->tv_usec)
 
#define timerclear(tvp)
 
#define for_all_elts(var, q, body)
 
#define STACKMAGIC   0xBADBADBA
 

Functions

int LWP_TerminateProcessSupport (void)
 
int LWP_GetRock (int Tag, char **Value)
 
int LWP_NewRock (int Tag, char *Value)
 
int LWP_CurrentProcess (PROCESS *pid)
 
PROCESS LWP_ThisProcess ()
 
void LWP_SetLog (FILE *file, int level)
 
int LWP_GetProcessPriority (PROCESS pid, int *priority)
 
int LWP_WaitProcess (const void *event)
 
char * LWP_Name ()
 
int LWP_Index ()
 
int LWP_HighestIndex ()
 
int LWP_QWait ()
 
int LWP_QSignal (PROCESS pid)
 
int LWP_CreateProcess (void(*ep)(void *), int stacksize, int priority, void *parm, const char *name, PROCESS *pid)
 
int LWP_DestroyProcess (PROCESS pid)
 
void LWP_Print_Processes (void)
 
int LWP_Init (int version, int priority, PROCESS *pid)
 
int LWP_MwaitProcess (int wcount, const void *evlist[])
 
int LWP_DispatchProcess (void)
 
int LWP_INTERNALSIGNAL (const void *event, int yield)
 
int LWP_StackUsed (PROCESS pid, int *max, int *used)
 
void PRE_Concurrent (int on)
 
void PRE_BeginCritical (void)
 
void PRE_EndCritical (void)
 

Variables

struct QUEUE runnable [MAX_PRIORITIES]
 
struct QUEUE blocked [MAX_PRIORITIES]
 
FILE * lwp_logfile = NULL
 
int lwp_debug = 0
 
int LWP_TraceProcesses = 0
 
PROCESS lwp_cpptr
 
int lwp_nextindex
 
int Cont_Sws
 
struct timeval last_context_switch
 
struct timeval cont_sw_threshold
 
PROCESS cont_sw_id
 
struct timeval run_wait_threshold
 
int lwp_overflowAction = LWP_SOABORT
 
int lwp_stackUseEnabled = 1
 

Macro Definition Documentation

◆ for_all_elts

#define for_all_elts (   var,
  q,
  body 
)
Value:
{ \
PROCESS var, _NEXT_; \
int _I_; \
for (_I_ = q.count, var = q.head; _I_ > 0; _I_--, var = _NEXT_) { \
_NEXT_ = var->next; \
body \
} \
}
queue * q
Definition: rw.c:169
int count
Definition: lwp.c:96
PROCESS head
Definition: lwp.c:95

◆ LWPANCHOR

#define LWPANCHOR   (*lwp_init)

◆ MAP_FAILED

#define MAP_FAILED   ((void *)-1)

◆ MAX

#define MAX (   a,
 
)    ((a) > (b) ? (a) : (b))

◆ MAX_PRIORITIES

#define MAX_PRIORITIES   (LWP_MAX_PRIORITY + 1)

◆ MINSTACK

#define MINSTACK   32768 /* allocate at least 32KB for stacks */

◆ OFF

#define OFF   0

◆ ON

#define ON   1

◆ READY

#define READY   2

◆ REAPER_STACKSIZE

#define REAPER_STACKSIZE   32768

◆ STACKMAGIC

#define STACKMAGIC   0xBADBADBA

◆ STACKPAD

#define STACKPAD   4096 /* pad any requested stack size to PAGE_SIZE */

◆ timerclear

#define timerclear (   tvp)
Value:
do { \
(tvp)->tv_sec = 0; \
(tvp)->tv_usec = 0; \
} while (0);

◆ timercmp

#define timercmp (   tvp,
  uvp,
  cmp 
)
Value:
((tvp)->tv_sec cmp(uvp)->tv_sec || \
(tvp)->tv_sec == (uvp)->tv_sec && (tvp)->tv_usec cmp(uvp)->tv_usec)

◆ timerisset

#define timerisset (   tvp)    ((tvp)->tv_sec || (tvp)->tv_usec)

◆ TRACER_STACKSIZE

#define TRACER_STACKSIZE   32768

◆ WAITING

#define WAITING   3

Function Documentation

◆ LWP_CreateProcess()

int LWP_CreateProcess ( void(*)(void *)  ep,
int  stacksize,
int  priority,
void *  parm,
const char *  name,
PROCESS pid 
)

◆ LWP_CurrentProcess()

int LWP_CurrentProcess ( PROCESS pid)

◆ LWP_DestroyProcess()

int LWP_DestroyProcess ( PROCESS  pid)

◆ LWP_DispatchProcess()

int LWP_DispatchProcess ( void  )

◆ LWP_GetProcessPriority()

int LWP_GetProcessPriority ( PROCESS  pid,
int *  priority 
)

◆ LWP_GetRock()

int LWP_GetRock ( int  Tag,
char **  Value 
)

◆ LWP_HighestIndex()

int LWP_HighestIndex ( )

◆ LWP_Index()

int LWP_Index ( )

◆ LWP_Init()

int LWP_Init ( int  version,
int  priority,
PROCESS pid 
)

◆ LWP_INTERNALSIGNAL()

int LWP_INTERNALSIGNAL ( const void *  event,
int  yield 
)

◆ LWP_MwaitProcess()

int LWP_MwaitProcess ( int  wcount,
const void *  evlist[] 
)

◆ LWP_Name()

char * LWP_Name ( void  )

◆ LWP_NewRock()

int LWP_NewRock ( int  Tag,
char *  Value 
)

◆ LWP_Print_Processes()

void LWP_Print_Processes ( void  )

◆ LWP_QSignal()

int LWP_QSignal ( PROCESS  pid)

◆ LWP_QWait()

int LWP_QWait ( )

◆ LWP_SetLog()

void LWP_SetLog ( FILE *  file,
int  level 
)

◆ LWP_StackUsed()

int LWP_StackUsed ( PROCESS  pid,
int *  max,
int *  used 
)

◆ LWP_TerminateProcessSupport()

int LWP_TerminateProcessSupport ( void  )

◆ LWP_ThisProcess()

PROCESS LWP_ThisProcess ( void  )

◆ LWP_WaitProcess()

int LWP_WaitProcess ( const void *  event)

◆ PRE_BeginCritical()

void PRE_BeginCritical ( void  )

◆ PRE_Concurrent()

void PRE_Concurrent ( int  on)

◆ PRE_EndCritical()

void PRE_EndCritical ( void  )

Variable Documentation

◆ blocked

struct QUEUE blocked[MAX_PRIORITIES]

◆ cont_sw_id

PROCESS cont_sw_id

◆ cont_sw_threshold

struct timeval cont_sw_threshold

◆ Cont_Sws

int Cont_Sws

◆ last_context_switch

struct timeval last_context_switch

◆ lwp_cpptr

PROCESS lwp_cpptr

◆ lwp_debug

int lwp_debug = 0

◆ lwp_logfile

FILE* lwp_logfile = NULL

◆ lwp_nextindex

int lwp_nextindex

◆ lwp_overflowAction

int lwp_overflowAction = LWP_SOABORT

◆ lwp_stackUseEnabled

int lwp_stackUseEnabled = 1

◆ LWP_TraceProcesses

int LWP_TraceProcesses = 0

◆ run_wait_threshold

struct timeval run_wait_threshold

◆ runnable

struct QUEUE runnable[MAX_PRIORITIES]