
# task
#### 命令功能
task命令用于查询系统任务信息。
#### 命令格式
task\[*ID*\]
#### 参数说明
表1参数说明 
| 参数 | 参数说明                      | 取值范围              |
|:---|:---|:---|
| ID | 任务ID号，输入形式以十进制表示或十六进制表示皆可 | \[0, 0xFFFFFFFF\] |
   
#### 使用指南
- 参数缺省时，默认打印全部运行任务信息。
- task后加ID，当ID参数在\[0, 64\]范围内时，返回指定ID号任务的任务名、任务ID、任务的调用栈信息（最大支持15层调用栈），其他取值时返回参数错误的提示。如果指定ID号对应的任务未创建，则提示。
- 如果在task命令中，发现任务是Invalid状态，请确保pthread_create创建函数时有进行如下操作之一，否则资源无法正常回收。
  - 选择的是阻塞模式应该调用pthread_join()函数。
  
  - 选择的是非阻塞模式应该调用pthread_detach()函数。
  
  - 如果不想调用前面两个接口，就需要设置pthread_attr_t状态为PTHREAD_STATE_DETACHED，将attr参数传入pthread_create，此设置和调用pthread_detach函数一样，都是非阻塞模式。
   
 
#### 使用实例
举例1：输入task 6。
举例2：输入task。
#### 输出说明
执行task 0xb，查询ID号为b的任务信息：
```
Huawei LiteOS # task 0xb
TaskName = SerialEntryTask
TaskId = 0xb
*******backtrace begin*******
traceback 0 -- lr = 0x1d804    fp = 0xa86bc
traceback 1 -- lr = 0x1da40    fp = 0xa86e4
traceback 2 -- lr = 0x20154    fp = 0xa86fc
traceback 3 -- lr = 0x258e4    fp = 0xa8714
traceback 4 -- lr = 0x242f4    fp = 0xa872c
traceback 5 -- lr = 0x123e4    fp = 0xa8754
traceback 6 -- lr = 0x2a9d8    fp = 0xb0b0b0b
```
执行task，查询所有任务信息：
```
Huawei LiteOS # task
Name          TaskEntryAddr    TID   Priority  Status     StackSize  WaterLine  StackPoint  TopOfStack EventMask SemID  CPUUSE  CPUUSE10s  CPUUSE1s MEMUSE
----          ------------     ---   -------   --------   ---------  --------   ----------  ---------- -------  -----  -------  ---------  ------  -------
Swt_Task          0x40002770   0x0    0        QueuePend  0x6000     0x2cc     0x4015a318  0x401544e8  0x0      0xffff    0.0       0.0     0.0     0
IdleCore000       0x40002dc8   0x1    31       Ready      0x400      0x15c     0x4015a7f4  0x4015a550  0x0      0xffff   98.6      98.2    99.9     0
system_wq         0x400b80fc   0x3    1        Pend       0x6000     0x244     0x40166928  0x40160ab8  0x1      0xffff    0.0       0.0     0.0     0
SerialShellTask   0x40090158   0x5    9        Running    0x3000     0x55c     0x40174918  0x40171e70  0xfff    0xffff    1.2       1.7     0.0     48
SerialEntryTask   0x4008fe30   0x6    9        Pend       0x1000      0x2c4    0x40175c78  0x40174e88  0x1      0xffff    0.0       0.0     0.0     72
```
![](https://support.huaweicloud.com/maintenance-LiteOS/public_sys-resources/note_3.0-zh-cn.png)
1. 输出项说明：
   - Name：任务名。
   
   - TID：任务ID。
   
   - Priority：任务的优先级。
   
   - Status：任务当前的状态。
   
   - StackSize：任务栈大小。
   
   - WaterLine：该任务栈已经被使用的内存大小。
   
   - StackPoint：任务栈指针，表示栈的起始地址。
   
   - TopOfStack：栈顶的地址。
   
   - EventMask：当前任务的事件掩码，没有使用事件，则默认任务事件掩码为0（如果任务中使用多个事件，则显示的是最近使用的事件掩码）。
   
   - SemID：当前任务拥有的信号量ID，没有使用信号量，则默认0xFFFF（如果任务中使用了多个信号量，则显示的是最近使用的信号量ID）。
   
   - CPUUSE：系统启动以来的CPU占用率。
   
   - CPUUSE10s：系统最近10秒的CPU占用率。
   
   - CPUUSE1s：系统最近1秒的CPU占用率。
   
   - MEMUSE：截止到当前时间，任务所申请的内存大小，以字节为单位显示。MEMUSE仅针对系统内存池进行统计，不包括中断中处理的内存和任务启动之前的内存。 任务申请内存，MEMUSE会增加，任务释放内存，MEMUSE会减小，所以MEMUSE会有正值和负值的情况。
     1）MEMUSE为0：说明该任务没有申请内存，或者申请的内存和释放的内存相同。
     2）MEMUSE为正值：说明该任务中有内存未释放。
     3）MEMUSE为负值：说明该任务释放的内存大于申请的内存。
     
    
2. 系统任务说明（Huawei LiteOS系统初始任务有以下几种）：
   - Swt_Task：软件定时器任务，用于处理软件定时器超时回调函数。
   
   - IdleCore000：系统空闲时执行的任务。
   
   - system_wq：系统默认工作队列处理任务。
   
   - SerialEntryTask：从底层buf读取用户的输入，初步解析命令，例如tab补全，方向键等。
   
   - SerialShellTask：接收命令后进一步解析，并查找匹配的命令处理函数，进行调用。
    
3. 任务状态说明：
   - Ready：任务处于就绪状态。
   
   - Pend：任务处于阻塞状态。
   
   - PendTime：阻塞的任务处于等待超时状态。
   
   - Suspend：任务处于挂起状态。
   
   - Running：该任务正在运行。
   
   - Delay：任务处于延时等待状态。
   
   - SuspendTime：挂起的任务处于等待超时状态。
   
   - Invalid：非上述任务状态。
    
 
