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"); }
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; }
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); }
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"); };