⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 createtask.cpp

📁 一个很棒的网络控制系统仿真软件
💻 CPP
字号:
#ifndef CREATE_TASK#define CREATE_TASKbool ttCreateTask(char *name, double deadline, double priority, double (*codeFcn)(int, void*)) {  TaskNode *tn;  Task* task;  if (strcmp(name,"") == 0) {    MEX_ERROR("ttCreate(Periodic)Task: Name should be a non-empty string!");    return false;  }  if (rtsys->prioFcn == NULL) {    MEX_ERROR("ttCreate(Periodic)Task: Kernel must be initialized before creation of tasks!");    return false;  }  tn = (TaskNode*) rtsys->taskList->getFirst();  while (tn!=NULL) {    task = tn->getTask();    if (task->name != NULL) {      if (strcmp(task->name, name) == 0)	break;    }    tn = (TaskNode*) tn->getNext();  }  if (tn!=NULL) {     MEX_ERROR("ttCreate(Periodic)Task: Name of task not unique! Task not created!");    return false;  }  if (priority < EPS) {    MEX_ERROR("ttCreate(Periodic)Task: Priorities are supposed to be positive real numbers!");    return false;  }  task = new Task;  task->name = new char[strlen(name)+1];  strcpy(task->name, name);  task->taskID = rtsys->nbrOfTasks+1;    task->wcExecTime = deadline;  task->deadline = deadline;  task->assignedPriority = priority;  task->priority = priority;    task->isPreemptable = true;  task->display = true;  rtsys->nbrOfSchedTasks++;    task->deadlineORhandler = NULL;  task->exectimeORhandler = NULL;        task->jobQ = new List("JobQ", rtsys->jobQCmpFcn);  task->blockList = new List("BlockList", NULL);  task->currentJob = NULL;  task->perTimer = NULL;  task->data = NULL;  task->dataMATLAB = NULL;  task->codeFcn = codeFcn;  task->codeFcnMATLAB = NULL;    task->released_hook   = rtsys->default_release;  task->started_hook    = rtsys->default_start;  task->suspended_hook  = rtsys->default_suspend;  task->resumed_hook    = rtsys->default_resume;  task->finished_hook   = rtsys->default_finish;        rtsys->taskList->appendNode(new TaskNode(task));        rtsys->nbrOfTasks++;  return true;}bool ttCreateTask(char *name, double deadline, double priority, double (*codeFcn)(int, void*), void* data) {  TaskNode *n;  if (ttCreateTask(name, deadline, priority, codeFcn)) {    n = (TaskNode*) rtsys->taskList->getLast();    n->getTask()->data = data;    return true;  } else {    return false;  }}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -