博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
liteos中每个task的时间片默认是10个时钟周期
阅读量:4215 次
发布时间:2019-05-26

本文共 1215 字,大约阅读时间需要 4 分钟。

liteos中的task是基于时间片的,每个task默认只能运行10个时间中断的时间。LITE_OS_SEC_TEXT_INIT VOID osTimesliceInit(VOID){    g_stTaskTimeSlice.pstTask = (LOS_TASK_CB *)NULL;    g_stTaskTimeSlice.usTout = LOSCFG_BASE_CORE_TIMESLICE_TIMEOUT;}其中#ifndef LOSCFG_BASE_CORE_TIMESLICE_TIMEOUT#define LOSCFG_BASE_CORE_TIMESLICE_TIMEOUT                  10#endif可见每个task 默认的时间片就是10个时钟周期的中断在每个时间中断中都会调用osTimesliceCheck来检查当前task的时间片是否已经用完例如下面的g_stTaskTimeSlice 是一个全局变量,用来保存当前运行taskLITE_OS_SEC_TEXT VOID osTimesliceCheck(VOID){#给g_stTaskTimeSlice赋值后,g_stTaskTimeSlice就会记录这个task已经运行的时间片    if (g_stTaskTimeSlice.pstTask != g_stLosTask.pstRunTask)    {        g_stTaskTimeSlice.pstTask = g_stLosTask.pstRunTask;#从这里看到这个task默认运行的时间片是10个时钟周期中断        g_stTaskTimeSlice.usTime = (UINT16)g_ullTickCount + g_stTaskTimeSlice.usTout - 1;    }#当前面的if不成立时,就会判断已经运行的时间,其中g_ullTickCount在时钟周期的中断中会自加,当g_ullTickCount再过10个时钟周期后就会等于g_stTaskTimeSlice.usTime。在#前面的if中已经赋值    if (g_stTaskTimeSlice.usTime == (UINT16)g_ullTickCount)    {#可见如果已经过了10个时钟周期中断,则通过LOS_TaskYield来强制让当前task放弃cpu        g_stTaskTimeSlice.pstTask = (LOS_TASK_CB *)NULL;        if (LOS_TaskYield() != LOS_OK)        {            PRINT_INFO("%s, %d\n", __FUNCTION__, __LINE__);        }    } /*lint !e548*/

 

转载地址:http://fvnmi.baihongyu.com/

你可能感兴趣的文章
【HTML5/CSS/JS】<br>与<p>标签区别(二)
查看>>
【HTML5/CSS/JS】开发跨平台应用工具的选择(三)
查看>>
【心灵鸡汤】Give it five minutes不要让一个好主意随风而去
查看>>
【React Native】Invariant Violation: Application AwesomeProject has not been registered
查看>>
【ReactNative】真机上无法调试 could not connect to development server
查看>>
【XCode 4.6】常用快捷键 特别是格式化代码ctrl+i
查看>>
【iOS游戏开发】icon那点事 之 图标设计(三)
查看>>
【IOS游戏开发】之测试发布(Distribution)
查看>>
【IOS游戏开发】之IPA破解原理
查看>>
【一天一道LeetCode】#45. Jump Game II
查看>>
【一天一道LeetCode】#56. Merge Intervals
查看>>
【一天一道LeetCode】#58. Length of Last Word
查看>>
【一天一道LeetCode】#59. Spiral Matrix II
查看>>
【一天一道LeetCode】#30. Substring with Concatenation of All Words
查看>>
【一天一道LeetCode】#60. Permutation Sequence.
查看>>
【unix网络编程第三版】阅读笔记(二):套接字编程简介
查看>>
【一天一道LeetCode】#116. Populating Next Right Pointers in Each Node
查看>>
【一天一道LeetCode】#118. Pascal's Triangle
查看>>
JAVA实现文件树
查看>>
ebay api - GetUserDisputes 函数
查看>>