How to get to know the task status of MQX

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
已解决

How to get to know the task status of MQX

跳至解决方案
1,336 次查看
george
Senior Contributor II

Hi all,

I want to have a function for fail safe in MQX using Kinetis.

I think that it becomes possible by detecting the task which is keeping being blocked by another task.

For example, those status is in mqx_priv.h.

390 /*--------------------------------------------------------------------------*/

391 /*

392 **                             TASK STATES

393 **

394 ** The following define all of the states that a task have.

395 */

396

397 /* All blocked states have this bit set */

398 #define IS_BLOCKED                      (0x001)

399

400 /* Some states may also have the task on a timeout queue when blocked */

401 #define IS_ON_TIMEOUT_Q                 (0x100)

402

403 /* Some states may also have their task descriptors on a queue when blocked */

404 #define TD_IS_ON_QUEUE                  (0x200)

405

406 /*

407 ** Some states may also have their task descriptors on a queue using their

408 ** AUX pointer fields in the TD

409 */

410 #define TD_IS_ON_AUX_QUEUE              (0x400)

411

412 /* Mask to remove queueing and timeout bits */

413 #define STATE_MASK                      (0x0ff)

414

415 #define READY                           (0x02)

416 #define BLOCKED                         (0x02 | IS_BLOCKED)

417 #define RCV_SPECIFIC_BLOCKED            (0x04 | IS_BLOCKED)

418 #define RCV_ANY_BLOCKED                 (0x06 | IS_BLOCKED)

419 #define DYING                           (0x08 | IS_BLOCKED)

420 #define UNHANDLED_INT_BLOCKED           (0x0A | IS_BLOCKED)

421 #define SEND_BLOCKED                    (0x0C | IS_BLOCKED)

422 #define BREAKPOINT_BLOCKED              (0x0E | IS_BLOCKED)

423 #define IO_BLOCKED                      (0x10 | IS_BLOCKED | TD_IS_ON_QUEUE)

424

425 #define SEM_BLOCKED                     (0x20 | IS_BLOCKED)

426 #define MUTEX_BLOCKED                   (0x22 | IS_BLOCKED | TD_IS_ON_QUEUE)

427 #define EVENT_BLOCKED                   (0x24 | IS_BLOCKED)

428 #define TASK_QUEUE_BLOCKED              (0x28 | IS_BLOCKED | TD_IS_ON_QUEUE)

429 #define BLOCKED_ON_AUX_QUEUE            (TD_IS_ON_AUX_QUEUE|IS_BLOCKED)

430 #define LWSEM_BLOCKED                   (0x2A | BLOCKED_ON_AUX_QUEUE)

431 #define LWEVENT_BLOCKED                 (0x2C | BLOCKED_ON_AUX_QUEUE)

Please tell me how to get to know each task status from other task.

And, if there is a way good for others, please let me know.

Best Regards,

George


标记 (4)
0 项奖励
1 解答
486 次查看
c0170
Senior Contributor III

Hello Goerge Fukutomi,

I remember there was one similar request, Task Manager in MQX. Please follow this link, might partially answer your question:

https://community.freescale.com/thread/302553

Regards,

MartinK

在原帖中查看解决方案

0 项奖励
1 回复
487 次查看
c0170
Senior Contributor III

Hello Goerge Fukutomi,

I remember there was one similar request, Task Manager in MQX. Please follow this link, might partially answer your question:

https://community.freescale.com/thread/302553

Regards,

MartinK

0 项奖励