task
命令功能
task命令用于查询系统任务信息。
命令格式
task [ID]
参数说明
参数 |
参数说明 |
取值范围 |
---|---|---|
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
- 输出项说明:
- 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为负值:说明该任务释放的内存大于申请的内存。
- 系统任务说明(Huawei LiteOS系统初始任务有以下几种):
- Swt_Task:软件定时器任务,用于处理软件定时器超时回调函数。
- IdleCore000:系统空闲时执行的任务。
- system_wq:系统默认工作队列处理任务。
- SerialEntryTask:从底层buf读取用户的输入,初步解析命令,例如tab补全,方向键等。
- SerialShellTask:接收命令后进一步解析,并查找匹配的命令处理函数,进行调用。
- 任务状态说明:
- Ready:任务处于就绪状态。
- Pend:任务处于阻塞状态。
- PendTime:阻塞的任务处于等待超时状态。
- Suspend:任务处于挂起状态。
- Running:该任务正在运行。
- Delay:任务处于延时等待状态。
- SuspendTime:挂起的任务处于等待超时状态。
- Invalid:非上述任务状态。