| | 网站首页 | 新闻 | SOPC | FPGA | DSP | ARM | 嵌入式操作系统 | 下载 | 所有产品 | 留言 | 论坛 | 购买指南 | 网络协议 | 驱动设计 | | |
![]() |
![]() |
| 您现在的位置: 21嵌入式控制研究室 >> 嵌入式操作系统 >> Vxworks >> 文章正文 |
|
|||||
| 简单例子,测试CPU空闲率(Vxworks) | |||||
| 作者:佚名 文章来源:21control 点击数: 更新时间:2005-12-26 | |||||
|
#include "taskLib.h" #include "wdLib.h" #include "intLib.h" #define DEADLINE_TIME 1 #define PRIORITY 255 LOCAL WDOG_ID wdid; LOCAL unsigned int idleBaseCount = 0; LOCAL unsigned int idleCount = 0; unsigned int G_idlePercent = 0xffffffff; LOCAL void IdleFuncEntry (void); LOCAL void calculateIdleHandle (void); unsigned int getIdlePercent(void) { return G_idlePercent; } BOOL initIdleFunction ( void ) { int tid; idleBaseCount = 0; if( NULL == ( wdid = wdCreate() ) ) { perror("cannot create idle watchdog\n"); return ERROR; } if( ERROR == wdStart(wdid,sysClkRateGet()*DEADLINE_TIME, (FUNCPTR)calculateIdleHandle,0 ) ) { perror("error in starting idle watchdog timer\n" ); return ERROR; } if( ERROR == (tid = taskSpawn( (char *)"IdleTask", PRIORITY,0, 1024, (FUNCPTR)IdleFuncEntry, 0,0,0,0,0,0,0,0,0,0 ) ) ) { perror("error in create idle task\n" ); return ERROR; } return TRUE; } LOCAL void calculateIdleHandle( void ) { if( idleBaseCount == 0 ) { G_idlePercent = 0xffffffff; idleBaseCount = idleCount; } else { G_idlePercent = (idleCount * 100) / idleBaseCount; if( G_idlePercent > 100 ) { G_idlePercent = 100; idleBaseCount = idleCount; } } idleCount = 0; if( ERROR == wdStart(wdid,sysClkRateGet()*DEADLINE_TIME , (FUNCPTR)calculateIdleHandle,0 ) ) { perror("error in restarting idle watchdog timer\n" ); } } LOCAL void IdleFuncEntry(void) { idleCount = 0; while( TRUE ) { if( INT_CONTEXT() ) { } else { ++idleCount ; } taskDelay(0); } } |
|||||
| 文章录入:fengfeiyi 责任编辑:fengfeiyi | |||||
| 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | |||||
| 最新热点 | 最新推荐 | 相关文章 | ||
网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) |
| | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 管理登录 | | |
![]() |
站长:康草科技 |