首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 操作系统 >

嵌入式操作系统内核原理跟开发(延时操作)

2014-07-26 
嵌入式操作系统内核原理和开发(延时操作)【 声明:版权所有,欢迎转载,请勿用于商业用途。联系信箱:feixiaoxin

嵌入式操作系统内核原理和开发(延时操作)


【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱:feixiaoxing @163.com】    


    延时操作是操作系统中经常遇到的一种情形。延时的原因很多,有的时候是为了等待外设芯片处理结束,有的时候是为了暂时释放cpu的使用权,有的就是为了希望在一段时间获取资源,如果没法在单位时间内获取,放弃等待。但是不管怎么说,延时都是操作系统必不可少的一个工作。下面我们就看看延时是怎么实现的,

RAW_U16 raw_pend_object(RAW_COMMON_BLOCK_OBJECT  *block_common_obj, RAW_TASK_OBJ *task_ptr, RAW_U32 timeout) {  #if (CONFIG_RAW_ASSERT > 0)  if (timeout == 0) { RAW_ASSERT(0); }  #endif  task_ptr->block_obj = block_common_obj;   if (timeout == RAW_WAIT_FOREVER) {   task_ptr->task_state = RAW_PEND;  } /*task is blocked with timeout*/ else {      tick_list_insert(task_ptr,timeout);  task_ptr->task_state = RAW_PEND_TIMEOUT;  }  /*Remove from the ready list*/ remove_ready_list(&raw_ready_queue, task_ptr);  if (block_common_obj->block_way == RAW_BLOCKED_WAY_FIFO) {  list_insert(&block_common_obj->block_list, &task_ptr->task_list);  }  else {  /*add to the priority sorted block list*/ add_to_priority_list(&block_common_obj->block_list, task_ptr);  }  return RAW_SUCCESS; } 
    大家留意一下这里timeout参数的处理过程,关注一下对应的tick_list_insert函数,这样就可以明白我的意思了。




热点排行