欢迎来到天天文库
浏览记录
ID:27520236
大小:98.78 KB
页数:5页
时间:2018-12-03
《linux定时器实验》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、Linux第六次实验及分析报告实验要求:1)在用户态编写一个程序,该程序设定一个定时器,在时间到期的时候做出某种可观察的响应(方法不限);2)分析你的程序的实呩执行借助了A核的哪些机制;3)提交实验与分析报告;一:在用户态编写一个程序,该程序设定一个定时器,在时间到期的时候做出某种可观察的响应(方法不限);程序源代码如下:#include#include#include#include#includei
2、ntnum=O;voidrealtimer_set()▼{~structitimervalitv.oldtv;itv.it_interval.tv_sec=l;itv.it_interval.tv_usec=0;//足义事件为Isitv.it_value.tv_sec=l;itv.it_value.tv_usec=G;//interval=ls■setitimer(ITIMER_REAL,&itv,&oldtv);//调用realtiaer}一voidsigalrm_handler(intsig)▼
3、{■num++;}intmain()▼{signal(SIGALRM,sigalrm_handler);realtimer_set()jprintf(Hyouhaveonly10s:M);while(num4、26.tar.gzmyinitrd4M.“gSourceInsighttime.c公共的裰報文搭&乐Lnit.clinux-2.6.26linux实验65求rootfstioetime.c-模板囝片下載臬面5、运行结果如下:xuhao@ubuntu:gcc-static-otimeti»e.cxuhao@ubuntu:Isinitinit.c-linux-2.6.26.tar.qzmyinitrd4M.ingSourceInsighttine.c公共的视钡init.cli6、nux-2.6.26linux实轤6H求rootfstiaetiie.c-權板下載xuhao@ubuntu:./timeyouhaveonly10s:nowtiieisup!xuhao@ubuntu:7、4见调用间隔定时器定时10秒成功!二:分析你的程序的实际执行借助了内核的哪些机制;realtimer_set()函数分析:voidrealtimerset(){structitimervalitv,oldtv;itv.itinterval.tvsec=l;itv.it_interval.tv_usec8、=0;//定义事件为Isitv.itvalue,tvsec=l;itv.it_value.tv_usec=O;//interval=lssetitimer(ITIMERREAL,&itv,&oldtv)://调用realtimer}这里声明两个为itimerval类型的结构体itv,oldtv,itimerval在time.h屮的定义。其中,it_interval和it_value分别表豕时间间隔和当前值,它们又是timeval类型的结构体,继续追踪:time」tv_sec;/*seconds*/s9、useconds_ttv_usec:/*microseconds*};Timeval有两个变量,分别表示秒和微秒,通过对itv赋值,可以看到,它表示当前时间为Is,间隔为Is。分析函数setitimer,执行系统调用do_setitimer,(Itimer.c)intQO_SGXIIim©r(intwhich,structitimerval一value,structitimervalUpvalue){-structtask_struct*tsk=current;structhrtimer*timer10、;ktime_texpires;cputime_tcval,cintervaLnval,ninterval;/**Validatethetimevalsinvalue.*/if(!timeval_valid(&value->it_value)!timeval_valid(&value->it_interval))return-EINVAL;switch(which){caseITIMER_REAL:again:spin_lock_irq(&tsk->sighand->
4、26.tar.gzmyinitrd4M.“gSourceInsighttime.c公共的裰報文搭&乐Lnit.clinux-2.6.26linux实验65求rootfstioetime.c-模板囝片下載臬面5、运行结果如下:xuhao@ubuntu:gcc-static-otimeti»e.cxuhao@ubuntu:Isinitinit.c-linux-2.6.26.tar.qzmyinitrd4M.ingSourceInsighttine.c公共的视钡init.cli6、nux-2.6.26linux实轤6H求rootfstiaetiie.c-權板下載xuhao@ubuntu:./timeyouhaveonly10s:nowtiieisup!xuhao@ubuntu:7、4见调用间隔定时器定时10秒成功!二:分析你的程序的实际执行借助了内核的哪些机制;realtimer_set()函数分析:voidrealtimerset(){structitimervalitv,oldtv;itv.itinterval.tvsec=l;itv.it_interval.tv_usec8、=0;//定义事件为Isitv.itvalue,tvsec=l;itv.it_value.tv_usec=O;//interval=lssetitimer(ITIMERREAL,&itv,&oldtv)://调用realtimer}这里声明两个为itimerval类型的结构体itv,oldtv,itimerval在time.h屮的定义。其中,it_interval和it_value分别表豕时间间隔和当前值,它们又是timeval类型的结构体,继续追踪:time」tv_sec;/*seconds*/s9、useconds_ttv_usec:/*microseconds*};Timeval有两个变量,分别表示秒和微秒,通过对itv赋值,可以看到,它表示当前时间为Is,间隔为Is。分析函数setitimer,执行系统调用do_setitimer,(Itimer.c)intQO_SGXIIim©r(intwhich,structitimerval一value,structitimervalUpvalue){-structtask_struct*tsk=current;structhrtimer*timer10、;ktime_texpires;cputime_tcval,cintervaLnval,ninterval;/**Validatethetimevalsinvalue.*/if(!timeval_valid(&value->it_value)!timeval_valid(&value->it_interval))return-EINVAL;switch(which){caseITIMER_REAL:again:spin_lock_irq(&tsk->sighand->
5、运行结果如下:xuhao@ubuntu:gcc-static-otimeti»e.cxuhao@ubuntu:Isinitinit.c-linux-2.6.26.tar.qzmyinitrd4M.ingSourceInsighttine.c公共的视钡init.cli
6、nux-2.6.26linux实轤6H求rootfstiaetiie.c-權板下載xuhao@ubuntu:./timeyouhaveonly10s:nowtiieisup!xuhao@ubuntu:
7、4见调用间隔定时器定时10秒成功!二:分析你的程序的实际执行借助了内核的哪些机制;realtimer_set()函数分析:voidrealtimerset(){structitimervalitv,oldtv;itv.itinterval.tvsec=l;itv.it_interval.tv_usec
8、=0;//定义事件为Isitv.itvalue,tvsec=l;itv.it_value.tv_usec=O;//interval=lssetitimer(ITIMERREAL,&itv,&oldtv)://调用realtimer}这里声明两个为itimerval类型的结构体itv,oldtv,itimerval在time.h屮的定义。其中,it_interval和it_value分别表豕时间间隔和当前值,它们又是timeval类型的结构体,继续追踪:time」tv_sec;/*seconds*/s
9、useconds_ttv_usec:/*microseconds*};Timeval有两个变量,分别表示秒和微秒,通过对itv赋值,可以看到,它表示当前时间为Is,间隔为Is。分析函数setitimer,执行系统调用do_setitimer,(Itimer.c)intQO_SGXIIim©r(intwhich,structitimerval一value,structitimervalUpvalue){-structtask_struct*tsk=current;structhrtimer*timer
10、;ktime_texpires;cputime_tcval,cintervaLnval,ninterval;/**Validatethetimevalsinvalue.*/if(!timeval_valid(&value->it_value)!timeval_valid(&value->it_interval))return-EINVAL;switch(which){caseITIMER_REAL:again:spin_lock_irq(&tsk->sighand->
此文档下载收益归作者所有