900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > linux 内核模块 定时器 linux内核定时器__backup_timer_hour_struct_定时器_模块__169IT.COM...

linux 内核模块 定时器 linux内核定时器__backup_timer_hour_struct_定时器_模块__169IT.COM...

时间:2022-05-27 02:03:35

相关推荐

linux 内核模块 定时器 linux内核定时器__backup_timer_hour_struct_定时器_模块__169IT.COM...

我做的程序需要两个定时器,一个用于自动备份,一个用于自动清理所以我觉得用alarm()的话,统一发送SIG_ALRM信号是不行的,所以我采用了structtimer_list和add_timer机制,但是发现要包含linux/timer.h,所以不得不改用模块编程(正好可以深入一下内核),可是发现在内核里包含time.h并调用localtime(),mktime()等函数都不行,后来又改包含linux/time.h,发现那个里面的函数跟time.h不一样,请各位指点一下怎样做。

另外,我对内核模块的编译也很迷糊,希望各位大侠可以耐心指点一下。不胜感谢。我的模块代码和makefile如下,请指正:

#include

#include

#include

#include

#include

staticintbackup_time=0;//模块参数,自动备份时间

staticintclean_time=0;//模块参数,自动清理时间

structtimer_listbackup_timer[2];//全局变量,两个计时器

intDB_BACKUP()

{

return0;

}

intDB_CLEAN()

{

return0;

}

//自动备份函数

voidauto_backup(unsignedlongdata)

{

structtimevalhour;

hour.tv_sec=86400;

hour.tv_usec=0;

intjiffies_t=tvtojiffies(&hour);

//设置第一个计时器

backup_timer[0].expires=jiffies_t;

backup_timer[0].data=1;

backup_timer[0].function=DB_BACKUP;

add_timer(&backup_timer[0]);

//实现备份功能

DB_BACKUP();

return;

}

//自动清理

voidauto_clean(unsignedlongdata)

{

structtimevalhour;

hour.tv_sec=86400;

hour.tv_usec=0;

intjiffies_t=tvtojiffies(&hour);

//设置自动清理定时器

backup_timer[1].expires=jiffies_t;

backup_timer[1].data=0;

backup_timer[1].function=DB_CLEAN;

add_timer(&backup_timer[1]);

DB_CLEAN();

return;

}

//初始化两个定时器

intset_backup_timer()

{

printk(KERN_ALERT"AutoBackup:%d,AutoClean:%d",backup_time,clean_time);

structtmtm_v;

time_ttime1,time2;

structtimevalhour;

hour.tv_usec=0;

time1=time(NULL);//姹傚嚭褰撳墠鏃堕棿

memcpy((char*)&tm_v,(char*)localtime(&time1),sizeof(structtm));

tm_v.tm_min=0;

tm_v.tm_sec=0;//鍚屼笂

tm_v.tm_hour=backup_time;

time2=mktime(&tm_v);

if((hour.tv_sec=difftime(time2,time1))

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。