MCPcopy Create free account
hub / github.com/Marus/cortex-debug / analyzeTaskState

Method analyzeTaskState

src/frontend/rtos/rtos-embos.ts:307–379  ·  view source on GitHub ↗
(curTaskObj: object, objectNameEntries: Map<number, string>)

Source from the content-addressed store, hash-verified

305 }
306
307 protected async analyzeTaskState(curTaskObj: object, objectNameEntries: Map<number, string>): Promise<TaskState> {
308 const state = parseInt(curTaskObj['Stat-val']);
309
310 const suspendCount = (state & OS_TASK_STATE_SUSPEND_MASK);
311 if (suspendCount !== 0) {
312 return new TaskSuspended(suspendCount);
313 }
314
315 let pendTimeout = Number.MAX_SAFE_INTEGER;
316 let TimeoutActive = false;
317
318 if (state & OS_TASK_STATE_TIMEOUT_ACTIVE) {
319 pendTimeout = parseInt(curTaskObj['Timeout-val']);
320 TimeoutActive = true;
321 }
322
323 const maskedState = (state & OS_TASK_STATE_MASK);
324
325 switch (maskedState) {
326 case OsTaskPendingState.READY:
327 if (pendTimeout) {
328 return new TaskDelayed(pendTimeout);
329 }
330 else {
331 return new TaskReady();
332 }
333
334 case OsTaskPendingState.TASK_EVENT:
335 const resultState = new TaskPending();
336 resultState.addEventType(maskedState);
337
338 if (curTaskObj['EventMask-val']) {
339 const eventMask = parseInt(curTaskObj['EventMask-val']); // Waiting bits
340 const event = parseInt(curTaskObj['Events-val']); // Set bits
341 const eventInfo: EventInfo = { address: eventMask, eventType: state, name: `mask ${eventMask} - set ${event}` };
342
343 if (TimeoutActive) {
344 eventInfo.timeOut = pendTimeout;
345 }
346
347 resultState.addEvent(eventInfo);
348 }
349
350 return resultState;
351
352 default: {
353 const resultState = new TaskPending();
354 resultState.addEventType(maskedState);
355
356 if (curTaskObj['pWaitList-val']) {
357 const waitListEntryAddress = parseInt(curTaskObj['pWaitList-val']);
358
359 if (waitListEntryAddress !== 0) {
360 const waitListEntry = await this.getVarChildrenObj(curTaskObj['pWaitList-ref'], 'pWaitList');
361 const waitObject = parseInt(waitListEntry['pWaitObj-val']);
362 const eventInfo: EventInfo = { address: waitObject, eventType: state };
363
364 if (objectNameEntries.has(waitObject)) {

Callers 1

getThreadInfoMethod · 0.95

Calls 3

addEventTypeMethod · 0.95
addEventMethod · 0.95
getVarChildrenObjMethod · 0.80

Tested by

no test coverage detected