Example #1
0
void setScheduler(int s){
  TaskInfo t;
  int l, i;

  initTaskLists();

  switch(s){
  case RMSCHEDULER :
    /* sort by decreasing period */
    for(l=lastPeriodicTask; l>0; l--){
      for(i=0; i<l; i++){
	if (periodicTaskTable[i].period < periodicTaskTable[i+1].period){
	  t = periodicTaskTable[i];
	  periodicTaskTable[i] = periodicTaskTable[i+1];
	  periodicTaskTable[i+1] = t;
	}
      }
    }
    break;
  default :
    break;
  }

  printf("Compute priorities\n");
  printf("------------------\n");
  for(i=0; i<=lastPeriodicTask; i++){
    putTask(periodicTaskTable[i]);
  }
  printf("------------------\n");
}
Example #2
0
bool ZMQActor::readReactorTasks(const std::string& id, const std::string& address, ZMQMessage& message)
{
  std::ostringstream task;
  task << id << " " << address << " " << message.data();
  ZMQMessage reactorMessage(task.str());
  putTask(reactorMessage);
  return true;
}
Example #3
0
void ZMQActor::stopPerformingTasks()
{

  if (_isSubscribed)
    stopReadingEvents();
  
  if (_isReading)
  {
    ZMQMessage closeMsg("ZMQActor::stopPerformingTasks");
    putTask(closeMsg);

    _isReading = false;
    if (_pReadThread)
      _pReadThread->join();
  }

  _taskQueue.close(100);
  _actor.close(100);

}
Example #4
0
void loadScenario (int s) {
  lastPeriodicTask   = -1;
  lastAperiodicTask  = -1;

  printf("load scenario %d\n", s);

  switch (s) {
  case 1 :
    addPeriodicTask("p1",  4,  0, 10);
    addPeriodicTask("p2",  4,  0, 15);
    break; // OK

  case 2 :
    addPeriodicTask("p1",  4,  0, 10);
    addPeriodicTask("p2",  4,  0, 15);
    addPeriodicTask("p3",  6,  0, 18);
    break; // KO

  case 3:
    addPeriodicTask("p1",  2,  0,  5);
    addPeriodicTask("p2",  4,  0, 15);
    addPeriodicTask("p3",  1,  0,  3);
    break;
  
  case 4:
    addPeriodicTask("p1",  6,  0, 20);
    addPeriodicTask("p2",  4,  0, 10);
    addPeriodicTask("bs",  0,  0, 61);
    addAperiodicTask("a2", 4, 11,  0);
    addAperiodicTask("a1", 3,  7,  0);
    break;
    
  case 5:
    addPeriodicTask("p1",  6,  0, 20);
    addPeriodicTask("p2",  4,  0, 10);
    addPeriodicTask("ps",  2,  0,  8);
    addAperiodicTask("a1", 3,  7,  0);
    addAperiodicTask("a2", 4, 11,  0);
    break;
    
  case 6:
    addPeriodicTask("p1",  6,  0, 20);
    addPeriodicTask("p2",  4,  0, 10);
    addPeriodicTask("ds",  2,  0,  8);
    addAperiodicTask("a1", 3,  7,  0);
    addAperiodicTask("a2", 4, 11,  0);
    break;

  case 7:
    addPeriodicTask("p1",  6,  0, 20);
    addPeriodicTask("p2",  4,  0, 10);
    addPeriodicTask("ss",  2,  0,  8);
    addAperiodicTask("a1", 3,  7,  0);
    addAperiodicTask("a2", 4, 11,  0);
    break;
    
  default:
    printf("no such scenario %d\n", s);
    exit(1);
  };

  printf("Periodic Tasks\n");
  printf("--------------\n");

  int i;
  for(i=0; i<=lastPeriodicTask; i++){
    putTask(periodicTaskTable[i]);
  }
  printf("--------------\n");

  printf("Aperiodic Tasks\n");
  printf("---------------\n");

  for(i=0; i<=lastAperiodicTask; i++){
    putTask(aperiodicTaskTable[i]);
  }
  printf("---------------\n");
};