Real-Time API Revision2025.1-3
Loading...
Searching...
No Matches
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:

Macros

#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

Macro Definition Documentation

◆ __USE_GNU

#define __USE_GNU

◆ MULTIRATESCHEDULER

#define MULTIRATESCHEDULER

◆ LOG

#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); \
}
SchedShared * pSchedShared
Definition schedutils.c:396
int i
Definition simrtdb.h:7

◆ CHECK

#define CHECK ( i)
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()

REV_STRING ( "$Id$"" SimWB: "SIMWBVERSION"" SIMWB_BUILD)

◆ scheduleExecProcess()

int scheduleExecProcess ( char * file,
char * argv[],
pid_t * pid_ )

◆ scheduleExecProcessEnv()

int scheduleExecProcessEnv ( char * file,
char * argv[],
pid_t * pid_,
char * env[] )

◆ ccurSched_nTasksRunning()

int ccurSched_nTasksRunning ( int ignoreSelf,
int log )

◆ ccurSched_getInitCycles()

int ccurSched_getInitCycles ( )

◆ ccurSched_getTaskInitCycles()

int ccurSched_getTaskInitCycles ( )

◆ ccurSched_syncTaskNew()

SchedTaskInfo * ccurSched_syncTaskNew ( const char * pgmName)

◆ ccurSched_logTxOutLock()

void ccurSched_logTxOutLock ( int lock)

◆ ccurSched_waitDLoggerTaskReady()

void ccurSched_waitDLoggerTaskReady ( int mask)

◆ ccurSched_setDLoggerTaskReady()

void ccurSched_setDLoggerTaskReady ( int mask)

◆ ccurSched_refreshToggle()

void ccurSched_refreshToggle ( )

◆ ccurSched_waitRefreshToggle()

void ccurSched_waitRefreshToggle ( )

◆ ccurSched_ASAMToggle()

void ccurSched_ASAMToggle ( )

◆ ccurSched_waitASAMToggle()

void ccurSched_waitASAMToggle ( )

◆ ccurSched_syncAsyncToggle()

void ccurSched_syncAsyncToggle ( )

◆ ccurSched_waitSyncAsyncToggle()

void ccurSched_waitSyncAsyncToggle ( )

◆ ccurSched_getRunAtCycle()

int ccurSched_getRunAtCycle ( void )

◆ ccurSched_setRunAtCycle()

void ccurSched_setRunAtCycle ( int cycle)

◆ ccurSched_resetProcessStatistics()

void ccurSched_resetProcessStatistics ( void )

◆ ccurSched_setDebugLevel()

void ccurSched_setDebugLevel ( int lvl)

◆ ccurSched_getDebugLevel()

int ccurSched_getDebugLevel ( void )

◆ ccurSched_setDebugLevelAsyncTask()

void ccurSched_setDebugLevelAsyncTask ( AsyncTaskInfo * pAsyncTask,
int lvl )

◆ ccurSched_getDebugLevelAsyncTask()

int ccurSched_getDebugLevelAsyncTask ( AsyncTaskInfo * pAsyncTask)

◆ ccurSched_setDebugLevelSyncThread()

void ccurSched_setDebugLevelSyncThread ( SyncThreadInfo * pSyncThread,
int lvl )

◆ ccurSched_getDebugLevelSyncThread()

int ccurSched_getDebugLevelSyncThread ( SyncThreadInfo * pSyncThread)

◆ ccurSched_setDebugLevelName()

int ccurSched_setDebugLevelName ( const char * name,
int lvl )

◆ ccurSched_setTaskType()

void ccurSched_setTaskType ( int type)

◆ ccurSched_setTaskTypeTask()

void ccurSched_setTaskTypeTask ( SchedTaskInfo * pTask,
int type )

◆ ccurSched_getTaskType()

int ccurSched_getTaskType ( )

◆ ccurSched_initWaitNextFrame()

int ccurSched_initWaitNextFrame ( )

◆ ccurSched_initWaitNextFrameTask()

int ccurSched_initWaitNextFrameTask ( SchedTaskInfo * pTask)

◆ ccurSched_waitNextFrameTask()

int ccurSched_waitNextFrameTask ( SchedTaskInfo * pTask)

◆ ccurSched_endOfFrame()

int ccurSched_endOfFrame ( )

◆ ccurSched_waitResume()

int ccurSched_waitResume ( )

◆ ccurSched_asyncTaskFree()

void ccurSched_asyncTaskFree ( AsyncTaskInfo * pTask)

◆ ccurSched_syncThreadEndOfRun()

int ccurSched_syncThreadEndOfRun ( SyncThreadInfo * pTask)

◆ ccurSched_syncThreadStartOfRun()

int ccurSched_syncThreadStartOfRun ( SyncThreadInfo * pTask,
unsigned long long startOfBasicRate )

◆ ccurSched_getStartOfCycle()

unsigned long long ccurSched_getStartOfCycle ( )

◆ ccurSched_syncThreadNew()

SyncThreadInfo * ccurSched_syncThreadNew ( const char * pgmName,
int entryIndex,
int sampleTime )

◆ ccurSched_isBusy()

int ccurSched_isBusy ( void )

◆ ccurSched_setBusy()

void ccurSched_setBusy ( int busy)

◆ ccurSched_createSchedulingStatistics()

void ccurSched_createSchedulingStatistics ( )

◆ ccurSched_getRTWStatEntry()

int ccurSched_getRTWStatEntry ( const char * rtwName,
int * rates,
int * tids,
int numRates,
int numEntriesLCM )

◆ ccurSched_updateModelCPU()

void ccurSched_updateModelCPU ( )

◆ ccurSched_rtwGetNumberOfPrograms()

int ccurSched_rtwGetNumberOfPrograms ( )

◆ ccurSched_updateRTWStatEntries()

int ccurSched_updateRTWStatEntries ( int entry,
ModelRunTimeEntry * entries )

◆ ccurSched_getThreadInfoByName()

SyncThreadInfo * ccurSched_getThreadInfoByName ( const char * name)

Variable Documentation

◆ pSchedShared

SchedShared* pSchedShared

◆ pSchedModelStat

ModelStatTable* pSchedModelStat

◆ pAsyncQHistory

AsyncQHistory* pAsyncQHistory

◆ pMyTask

SchedTaskInfo* pMyTask

◆ pPseudoSemaphoreNext

atomic_t* pPseudoSemaphoreNext