Notifies all components of an empty tick loop by calling notifyEmptyTickloop. Returns the number of components that reported that they are waiting for additional data. If at least one component is waiting, the tick loop should continue and EOI should not be set.
| 1179 | // data. If at least one component is waiting, the tick loop should continue and |
| 1180 | // EOI should not be set. |
| 1181 | long cComponentManager::componentOnEmptyTickloop(long long threadId, long long tickNr) |
| 1182 | { |
| 1183 | long nWaiting = 0; |
| 1184 | std::string stat; |
| 1185 | for (long i = 0; i <= lastComponent; i++) { |
| 1186 | if (component[i] != NULL) { |
| 1187 | if (((threadId == -1) || (threadId == componentThreadId[i])) |
| 1188 | && (componentThreadId[i] != -2)) { |
| 1189 | bool isWaiting = component[i]->notifyEmptyTickloop(); |
| 1190 | if (isWaiting) { |
| 1191 | nWaiting++; |
| 1192 | if (execDebug) { // show summary of components executed during this tick |
| 1193 | stat += std::string(component[i]->getInstName()) + " "; |
| 1194 | } |
| 1195 | } |
| 1196 | } |
| 1197 | } |
| 1198 | } |
| 1199 | if (execDebug) { // show summary of components executed during this tick |
| 1200 | SMILE_PRINT("NOTIFY EMPTY tick #%i thread %i, (eoi=%i) waiting (%i): %s\n", (int)tickNr, |
| 1201 | (int)threadId, EOI, nWaiting, stat.c_str()); |
| 1202 | } |
| 1203 | return nWaiting; |
| 1204 | } |
| 1205 | |
| 1206 | void cComponentManager::printExecDebug(int threadId) { |
| 1207 | eTickResult tickResults[6] = { |
nothing calls this directly
no test coverage detected