目 录
引言 ……………………………………………………………………………………………………… 01
概述:
缩略语:
02任务与中断有啥异同?
03何谓原子性操作?
04任务栈是怎么回事?
05何谓现场?
06临界保护对子中C语言的变量跟汇编子函数中的寄存器是怎样联系起来的?
OS_CPU_SR_Save
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
07任务切换时具体做些什么?
END
08任务切换在什么时候发生?
09任务被切后是个什么样子?
10关于就绪表中高效的调度算法
X
INT8U const OSUnMapTbl[] = {
11系统启动时运行的第一个任务,第一步是怎么运行的?
12空闲任务 OS_TaskIdle 在什么时候运行?
13μC/OS-II中的中断同单片机程序的中断有什么异同?
14什么是函数的可重入性?其意义何在?
15信号量的内部机理是什么?
16优先级翻转是怎么回事?
17邮箱的内部机理是什么?
18消息队列的内部机理是什么?
19标志组的内部机理是什么?
20μC/OS-II的内存管理机制是什么?
21什么是堆?malloc和free是怎么运作的?
22操作系统到底是什么东东?
OS_FLAG_GRP *OSFlagCreate(OS_FLAGS flags, INT8U *
INT8U const OSUnMapTbl[] = {
#if OS_TASK_STAT_EN > 0
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
#endif
OS_EXIT_CRITICAL();
OS_ENTER_CRITICAL();
#else
#endif
INT8U *ptbl;
#endif
#endif
#endif
#endif
#endif
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
#endif
OS_ENTER_CRITICAL();
#endif
OS_ENTER_CRITICAL();
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
AREA |.text|, CODE, READONLY, ALIGN=2
OS_CPU_SR_Save
OS_CPU_SR_Restore
OSStartHighRdy
OSStartHang
OSCtxSw
OSIntCtxSw
OS_CPU_PendSVHandler
#endif
#else
#endif
#else
#endif
#endif
OS_STK *stk;
#endif
#else
#endif
OS_CPU_SR cpu_sr;
OS_EXIT_CRITICAL();
INT32U cnts;
OS_CPU_CM3_NVIC_ST_CTRL |= OS_CPU_CM3_NVIC_ST
OS_CPU_CM3_NVIC_ST_CTRL |= OS_CPU_CM3_NVIC_ST
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_ENTER_CRITICAL();
#if OS_EVENT_EN > 0
OS_EXIT_CRITICAL();
} else {
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_ENTER_CRITICAL();
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_ENTER_CRITICAL();
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
#endif
OS_ENTER_CRITICAL();
} else {
OS_EXIT_CRITICAL();
OS_ENTER_CRITICAL();
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
} else {
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
* == (void *)0 if no event control b
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
OS_ENTER_CRITICAL();
#endif
OS_ENTER_CRITICAL();
* == 0 a) if the resource is no
OS_EXIT_CRITICAL();
#endif
OS_ENTER_CRITICAL();
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
#endif
} else {
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
#endif
OS_ENTER_CRITICAL();
} else {
OS_EXIT_CRITICAL();
* == (void *)0 if the mailbox is emp
#endif
OS_ENTER_CRITICAL();
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
* == (OS_EVENT *)0 if no event contr
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
* == (void *)0 if no message was rec
#endif
OS_ENTER_CRITICAL();
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
* == (void *)0 if the queue is empty
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_ENTER_CRITICAL();
} else {
OS_EXIT_CRITICAL();
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
* == (void *)0 if no message was rec
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
#endif
OS_ENTER_CRITICAL();
} else {
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
OS_EXIT_CRITICAL();
#endif
OS_EXIT_CRITICAL();
OS_ENTER_CRITICAL();
#endif
OS_EXIT_CRITICAL();
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_FLAG_NODE *pnode_next;
#endif
#endif
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
#endif
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();
OS_ENTER_CRITICAL();
OS_EXIT_CRITICAL();