赞
踩
SylixOS 中查看线程此时所处的状态可通过 Shell 命令 ts 查看“STAT”列,如下,线程“t_test”处于“SLP”状态。
扩展:“ts” 命令线程打印信息含义为:线程名、ID 号、所属进程 ID、优先级、状态、线程锁、线程安全模式标志、等待计数器、缺页中断
查看SylixOS中该部分代码描述:
if (tcbdesc.TCBD_usStatus & LW_THREAD_STATUS_SEM) { /* 等待信号量 */ pcPendType = "SEM"; } else if (tcbdesc.TCBD_usStatus & LW_THREAD_STATUS_MSGQUEUE) { /* 等待消息队列 */ pcPendType = "MSGQ"; } else if (tcbdesc.TCBD_usStatus & LW_THREAD_STATUS_JOIN) { /* 等待其他线程 */ pcPendType = "JOIN"; } else if (tcbdesc.TCBD_usStatus & LW_THREAD_STATUS_SUSPEND) { /* 挂起 */ pcPendType = "SUSP"; } else if (tcbdesc.TCBD_usStatus & LW_THREAD_STATUS_EVENTSET) { /* 等待事件组 */ pcPendType = "ENTS"; } else if (tcbdesc.TCBD_usStatus & LW_THREAD_STATUS_SIGNAL) { /* 等待信号 */ pcPendType = "WSIG"; } else if (tcbdesc.TCBD_usStatus & LW_THREAD_STATUS_INIT) { /* 初始化中 */ pcPendType = "INIT"; } else if (tcbdesc.TCBD_usStatus & LW_THREAD_STATUS_WDEATH) { /* 僵死状态 */ pcPendType = "WDEA"; } else if (tcbdesc.TCBD_usStatus & LW_THREAD_STATUS_DELAY) { /* 睡眠 */ pcPendType = "SLP"; } else if (tcbdesc.TCBD_usStatus & LW_THREAD_STATUS_STOP) { /* 停止 */ pcPendType = "STOP"; } else if (tcbdesc.TCBD_usStatus & LW_THREAD_STATUS_WSTAT) { /* 等待状态转换 */ pcPendType = "WSTA"; } else { pcPendType = "RDY"; /* 就绪态 */ }```
根据代码中获取tcb后信息的判断可知 “ts” 命令中 “STAT” 打印字符串表示的信息为:
STAT | 状态 |
---|---|
SEM | 等待信号量 |
MSGQ | 等待消息队列 |
JOIN | 等待其他线程 |
SUSP | 挂起 |
ENTS | 等待事件组 |
WSIG | 等待信号 |
INIT | 初始化中 |
WDEA | 僵死状态 |
SLP | 睡眠 |
STOP | 停止 |
WSTA | 等待状态转换 |
RDY | 就绪态 |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。