Chinaunix首页 | 论坛 | 博客
  • 博客访问: 425060
  • 博文数量: 103
  • 博客积分: 1455
  • 博客等级: 上尉
  • 技术积分: 1380
  • 用 户 组: 普通用户
  • 注册时间: 2012-09-15 22:17
文章分类

全部博文(103)

文章存档

2013年(4)

2012年(99)

我的朋友

分类: LINUX

2012-11-12 09:54:35

有一个疑问,stat函数的就绪标志位是什么时候用什么方法设置的呢?
下面继续堆栈检查的函数
这个函数有两个参数,分别是优先级prio和指向OS_STK_DATA数据结构的指针
这个数据结构里面有两个变量分别是
INT32U  OSFree;  /* Number of free bytes on the stack*/
INT32U  OSUsed;  /* Number of bytes used on the stack  */
用来返回栈的使用情况
 
第一步,设置关中断使用的cpu_sr
第二步,检查prio是不是合法的,在0-idleprio之间,检查指向OS_STK_DATA返回值的指针是不是为空
第三步,初始化OS_STK_DATA中的两个变量为0
第四步,关中断
第五步,检查相应的任务TCB是否存在,赋值给ptcb指针,ptcb->OSTCBOpt & OS_TASK_OPT_STK_CHK检查TCB的chk使能标志位是不是被置1
第六步,从TCB读取栈的信息,栈大小,栈底地址等
第七步,开中断
第八步,判断是高地址栈顶还是低地址栈顶,分别用while循环检查是否为0,如果为零,free变量加1
第九步,将free*sizeof(OS_STK)和(size - free) * sizeof(OS_STK)存入p_stk_data返回的数据中
返回NO_ERR宏结束
 
 
阅读(1257) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~