luxinsun 发表于 2010-6-16 09:58:00

RTT编程手册勘误,对2个地方提出修改建议

1.42页对线程“就绪态”的描述不明确。
2.152页倒数第二行的“counter”变量找不到。

aozima 发表于 2010-6-16 10:08:55

楼主的描述也不明确.如同那个被改了标题的贴子一样.

1.42页对线程“就绪态”的描述不明确。
具体是如何不明确?

2.152页倒数第二行的“counter”变量找不到。

12.4.3 宏方式输出函数、变量
当使能了FINSH USING SYMTAB宏时,也能够使用宏输出的方式向finsh shell增加命令。当需要
输出函数或变量到finsh shell时,可以通过引用宏:FINSH FUNCTION EXPORT和FINSH VAR EXPORT
的方式。例如:
long hello()
{
rt kprintf("Hello RT-Thread!\n");
return 0;
}
FINSH FUNCTION EXPORT(hello, say hello world)
static int dummy = 0;
FINSH VAR EXPORT(dummy, finsh type int, dummy variable for finsh)
hello函数、counter变量将自动输出到shell中,即可在shell中调用、访问hello函数、counter变量。
而定义了宏FINSH USING DESCRIPTION将可以在list()列出函数、变量列表时显示相应的帮助描述。

估计是说 dummy

luxinsun 发表于 2010-6-16 13:22:02

不明确就是看不明白。

ffxz 发表于 2010-6-16 19:46:16

就绪态不清楚,能否详细说说?例如说,现在你的理解是什么样的,而手册上的描述给你造成了什么样的迷惑?谢谢你的反馈。

原文是:
RT_THREAD_READY
就绪态。线程正在运行;或当前线程运行完让出处理机后,操作系统寻找最高优先级的就绪态线程运行

RT_THREAD_RUNNING
运行态。线程当前正在运行,在单核系统中,只有rt_thread_self()函数返回的线程处于这个状态;在多核系统中则不受这个限制。

目前的情况,RUNNING状态和READY状态是相同的。

luxinsun 发表于 2010-6-16 20:44:10

呵呵,就说说我的理解。
比如一个优先级低、周期为20ms的周期性任务A,运行5ms后,任务睡眠15ms,20ms后,因为优先低,cpu在运行高优先级的任务,直到22ms起才开始重新运行A任务。
那么
0-5ms内任务A处于运行态,5-20ms内任务A处于挂起态,20-22ms内任务A处于就绪态。

请指正!

ffxz 发表于 2010-6-16 21:06:27

是的,就是这样的。

而且,
0-5ms内任务A处于就绪态,5-20ms内任务A处于挂起态,20-22-27ms内任务A处于就绪态。

当前就绪态=运行态(值相等,意义稍微有些不同),如果要使用多核,那么就绪态!=运行态。

luxinsun 发表于 2010-6-16 21:19:08

简单说,任务在此时刻本应该运行,但因为CPU被高优先级的任务(或中断)占着而没有运行,那么这段时间内任务处于就绪态。
页: [1]
查看完整版本: RTT编程手册勘误,对2个地方提出修改建议