分类: 嵌入式
2010-08-10 11:07:54
今天完成一个信号的使用。Linux内部定时器。
原理
三个定时器:(递减定时)
1 ITIMER_REAL-SIGALRM
2 ITIMER_VIRTUAL-SIGVTALRM
3 ITIMER_PROF-SIGPROF
步骤:
1 在宿主机编辑文件并交叉编译(MAKE的写法)。
2 在开发板的终端进行执行。
现象:
宿主机下
目标板下
源代码来自周立功:
#include
#include
#include
int limit=10;
void timeout_info(int signo)
{
if(limit==0)
{
printf("Sorry,time limit reached.\n");
exit(0);
}
printf("only %d seconds left.\n",limit--);
}
void init_sigaction(void)
{
struct sigaction act;
act.sa_handler=timeout_info;
act.sa_flags=0;
sigemptyset(&act.sa_mask);
sigaction(SIGPROF,&act,NULL);
}
void init_time(void)
{
struct itimerval val;
val.it_value.tv_sec=1;
val.it_value.tv_usec=0;
val.it_interval=val.it_value;
setitimer(ITIMER_PROF,&val,NULL);
}
int main(void)
{
init_sigaction();
init_time();
printf("You have only 10 seconds for thinking.\n");
timeout_info(10);
while(1);
exit(0);
}