SIMulation Workbench Documentation SIMulation Workbench Documentation

schedutils.c File Reference

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <fcntl.h>
#include <string.h>
#include <sched.h>
#include <sys/types.h>
#include <signal.h>
#include <sys/mman.h>
#include <errno.h>
#include <sys/syscall.h>
#include <unistd.h>
#include <sys/time.h>
#include <sys/stat.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <sys/resource.h>
#include "schedutils.h"
#include "schedinternal.h"
#include "rtdbutils.h"
#include "tscutils.h"
#include "simerrors.h"
#include "build_check.h"
#include "simwbversion.h"
#include "simwbbuild.h"
Include dependency graph for schedutils.c:

Defines

#define __USE_GNU
#define MULTIRATESCHEDULER
#define LOG(i, state)
#define CHECK(i)

Functions

 REV_STRING ("$Id$"" SimWB: "SIMWBVERSION""SIMWB_BUILD)
int scheduleExecProcess (char *file, char *argv[], pid_t *pid_)
int scheduleExecProcessEnv (char *file, char *argv[], pid_t *pid_, char *env[])
int ccurSched_mapShared (int init)
int ccurSched_nTasksRunning (int ignoreSelf, int log)
int ccurSched_init (const char *pgmName)
int ccurSched_getInitCycles ()
int ccurSched_getTaskInitCycles ()
SchedTaskInfo * ccurSched_syncTaskNew (const char *pgmName)
void ccurSched_syncEndInit ()
void ccurSched_asyncEndInit ()
void ccurSched_logTxOutLock (int lock)
void ccurSched_initFailed ()
void ccurSched_waitIOTasksComplete ()
int ccurSched_waitModelTasksComplete (int timeout)
void ccurSched_waitDLoggerTaskReady (int mask)
void ccurSched_setDLoggerTaskReady (int mask)
int ccurSched_rtdbDataLoggingReady ()
void ccurSched_setRTDBDataLoggingReady (int ready)
int ccurSched_rtdbInitConditionsReady ()
void ccurSched_setRTDBInitConditionsReady (int ready)
void ccurSched_waitScriptInitComplete ()
int ccurSched_getInitScriptComplete ()
int ccurSched_hasInitScript ()
void ccurSched_setInitScriptComplete (int status)
void ccurSched_setHasInitScript (int has)
void ccurSched_refreshToggle ()
void ccurSched_waitRefreshToggle ()
void ccurSched_ASAMToggle ()
void ccurSched_waitASAMToggle ()
void ccurSched_syncAsyncToggle ()
void ccurSched_waitSyncAsyncToggle ()
void ccurSched_setIOTaskIniComplete ()
void ccurSched_setModelTaskIniComplete ()
void ccurSched_ioTaskCountIncrement ()
int ccurSched_isScript ()
int ccurSched_isModel ()
void ccurSched_modelTaskCountIncrement ()
void * ccurSched_getTaskInfo (const char *pgmName)
void ccurSched_setupThread (void *pTaskInfo)
int ccurSched_getRunAtCycle (void)
void ccurSched_setRunAtCycle (int cycle)
void ccurSched_resetProcessStatistics (void)
void ccurSched_setDebugLevel (int lvl)
int ccurSched_getDebugLevel (void)
void ccurSched_setDebugLevelAsyncTask (AsyncTaskInfo *pAsyncTask, int lvl)
int ccurSched_getDebugLevelAsyncTask (AsyncTaskInfo *pAsyncTask)
void ccurSched_setDebugLevelSyncThread (SyncThreadInfo *pSyncThread, int lvl)
int ccurSched_getDebugLevelSyncThread (SyncThreadInfo *pSyncThread)
int ccurSched_setDebugLevelName (const char *name, int lvl)
int ccurSched_waitNextFrame ()
int ccurSched_waitAsyncResume (int microSec)
void ccurSched_setTaskType (int type)
void ccurSched_setTaskTypeTask (SchedTaskInfo *pTask, int type)
int ccurSched_getTaskType ()
int ccurSched_initWaitNextFrame ()
int ccurSched_initWaitNextFrameTask (SchedTaskInfo *pTask)
int ccurSched_waitNextFrameTask (SchedTaskInfo *pTask)
int ccurSched_waitNextFrameThread (SchedTaskInfo *pTask)
const char * ccurSched_getTaskName ()
int ccurSched_endOfFrame ()
int ccurSched_waitResume ()
int ccurSched_asyncEndOfRun (AsyncTaskInfo *pTask)
int ccurSched_asyncStartOfRun (AsyncTaskInfo *pTask)
AsyncTaskInfo * ccurSched_asyncTaskNew (const char *pgmName)
void ccurSched_asyncTaskFree (AsyncTaskInfo *pTask)
int ccurSched_syncThreadEndOfRun (SyncThreadInfo *pTask)
int ccurSched_syncThreadStartOfRun (SyncThreadInfo *pTask, unsigned long long startOfBasicRate)
unsigned long long ccurSched_getStartOfCycle ()
SyncThreadInfo * ccurSched_syncThreadNew (const char *pgmName, int entryIndex, int sampleTime)
void ccurSched_testStop (int reason)
int ccurSched_getSchedFailureCode (void)
void ccurSched_pause (void)
int ccurSched_isPaused (void)
void ccurSched_resume (void)
void ccurSched_nonRT (void)
void ccurSched_resumeRT (void)
int ccurSched_isBusy (void)
void ccurSched_setBusy (int busy)
void ccurSched_step (int nFrames)
void ccurSched_getState (char *op, char *state)
char ccurSched_stopAtEOR (void)
int ccurSched_spinningMode ()
int ccurSched_getSchedulingMode ()
void ccurSched_getAsyncQHistory (int *history)
void ccurSched_createSchedulingStatistics ()
int ccurSched_getRTWStatEntry (const char *rtwName, int *rates, int *tids, int numRates, int numEntriesLCM)
void ccurSched_updateModelCPU ()
int ccurSched_rtwGetNumberOfPrograms ()
int ccurSched_updateRTWStatEntries (int entry, ModelRunTimeEntry *entries)
double ccurSched_getModelFixedStep ()
int ccurSched_getTaskRate ()
int ccurSched_getNumberOfCores (void)
pid_t ccurSched_gettid (void)
SyncThreadInfo * ccurSched_getThreadInfo (pid_t tid)
SyncThreadInfo * ccurSched_getThreadInfoByName (const char *name)
void ccurSched_setMaxOverruns (int maxOverruns)
int ccurSched_getMaxOverruns ()
void ccurSched_setMaxIOShutdownTime (float maxIOShutdownTime)
float ccurSched_getMaxIOShutdownTime ()
int ccurSched_getSessionOverruns ()
void ccurSched_setSessionOverruns (int overruns)

Variables

SchedShared * pSchedShared
ModelStatTable * pSchedModelStat
AsyncQHistory * pAsyncQHistory
SchedTaskInfo * pMyTask
atomic_t * pPseudoSemaphoreNext

Define Documentation

#define __USE_GNU
#define MULTIRATESCHEDULER
#define LOG ( i,
state   ) 
Value:
if (log) { \
        Log_Info("0x%08x  %7s  %c%s\n", pSchedShared->schedTasks[i].pid, state, pSchedShared->schedTasks[i].pid==self?'*':' ', pSchedShared->schedTasks[i].name); \
    }
#define CHECK (  ) 
Value:
if (ignore && ignore == pSchedShared->schedTasks[i].pid) { \
        LOG(i, "ignored"); \
        continue; \
    } \
    r = kill(pSchedShared->schedTasks[i].pid, 0); \
    if (r == -1) { \
        LOG(i, "gone"); \
    } else { \
        n++; \
        LOG(i, "running"); \
    }

Function Documentation

REV_STRING ( "$Id$"" SimWB: "SIMWBVERSION""  SIMWB_BUILD  ) 
int scheduleExecProcess ( char *  file,
char *  argv[],
pid_t *  pid_ 
)
int scheduleExecProcessEnv ( char *  file,
char *  argv[],
pid_t *  pid_,
char *  env[] 
)
int ccurSched_nTasksRunning ( int  ignoreSelf,
int  log 
)
int ccurSched_getInitCycles (  ) 
int ccurSched_getTaskInitCycles (  ) 
SchedTaskInfo* ccurSched_syncTaskNew ( const char *  pgmName  ) 
void ccurSched_logTxOutLock ( int  lock  ) 
void ccurSched_waitDLoggerTaskReady ( int  mask  ) 
void ccurSched_setDLoggerTaskReady ( int  mask  ) 
void ccurSched_refreshToggle (  ) 
void ccurSched_waitRefreshToggle (  ) 
void ccurSched_ASAMToggle (  ) 
void ccurSched_waitASAMToggle (  ) 
void ccurSched_syncAsyncToggle (  ) 
void ccurSched_waitSyncAsyncToggle (  ) 
int ccurSched_getRunAtCycle ( void   ) 
void ccurSched_setRunAtCycle ( int  cycle  ) 
void ccurSched_resetProcessStatistics ( void   ) 
void ccurSched_setDebugLevel ( int  lvl  ) 
int ccurSched_getDebugLevel ( void   ) 
void ccurSched_setDebugLevelAsyncTask ( AsyncTaskInfo *  pAsyncTask,
int  lvl 
)
int ccurSched_getDebugLevelAsyncTask ( AsyncTaskInfo *  pAsyncTask  ) 
void ccurSched_setDebugLevelSyncThread ( SyncThreadInfo *  pSyncThread,
int  lvl 
)
int ccurSched_getDebugLevelSyncThread ( SyncThreadInfo *  pSyncThread  ) 
int ccurSched_setDebugLevelName ( const char *  name,
int  lvl 
)
void ccurSched_setTaskType ( int  type  ) 
void ccurSched_setTaskTypeTask ( SchedTaskInfo *  pTask,
int  type 
)
int ccurSched_getTaskType (  ) 
int ccurSched_initWaitNextFrame (  ) 
int ccurSched_initWaitNextFrameTask ( SchedTaskInfo *  pTask  ) 
int ccurSched_waitNextFrameTask ( SchedTaskInfo *  pTask  ) 
int ccurSched_endOfFrame (  ) 
int ccurSched_waitResume (  ) 
void ccurSched_asyncTaskFree ( AsyncTaskInfo *  pTask  ) 
int ccurSched_syncThreadEndOfRun ( SyncThreadInfo *  pTask  ) 
int ccurSched_syncThreadStartOfRun ( SyncThreadInfo *  pTask,
unsigned long long  startOfBasicRate 
)
unsigned long long ccurSched_getStartOfCycle (  ) 
SyncThreadInfo* ccurSched_syncThreadNew ( const char *  pgmName,
int  entryIndex,
int  sampleTime 
)
int ccurSched_isBusy ( void   ) 
void ccurSched_setBusy ( int  busy  ) 
void ccurSched_createSchedulingStatistics (  ) 
int ccurSched_getRTWStatEntry ( const char *  rtwName,
int *  rates,
int *  tids,
int  numRates,
int  numEntriesLCM 
)
void ccurSched_updateModelCPU (  ) 
int ccurSched_rtwGetNumberOfPrograms (  ) 
int ccurSched_updateRTWStatEntries ( int  entry,
ModelRunTimeEntry *  entries 
)
SyncThreadInfo* ccurSched_getThreadInfoByName ( const char *  name  ) 

Variable Documentation

SchedShared* pSchedShared
ModelStatTable* pSchedModelStat
AsyncQHistory* pAsyncQHistory
SchedTaskInfo* pMyTask