??????????????????????????????????????????????HZ????写???????????????HZ????????????????????????????????????????????????????????HZ????????????poll??select???????械????????????????????????????????????????????????????HZ???????????????????????????????????????????????????????娌�?????纭�

??????????Jiffies??????????????????????????????????Jiffies?????????????HZ??????????????????位????????jiffies/HZ??


extern unsigned long volatile jiffies;    //????jiffies

unsigned long later=jiffies+5*HZ      //????????5??
 


??????????jiffies?????校????????????????jiffies?????unsigned long????????????????????????????????????64位??jiffies_64???????????????jiffies??????jiffies_64???32位???????C?????????????????????危????????2?????????械?jiffies?????????????斜??????????卤?????????????volatile????????????畏????????????鈥�???????谢??????????????????械???????????????

????????????????????????????????????????????0?????jiffies?????????????????????jiffies????????time_after??time_befiore??time_after_eq??time_befiore_eq??????????


unsigned long time=jiffies+HZ;   //?????
if(time_before(jiffies??timeout)){
//??谐???????
}else{
//?????????
}


????????????????璞�???屑?????????????????????????????????????????卸???????????????????????????????????????????????xtime??????

????????????


Struct time_list my_timer ;  //?????????
Init_timer??&my_timer??;  //??????????
my_timer.expires=jiffies+delay;    //???????
my_timer.data=0;  //???????????void my_funciton(unsigned long data)?尾?
my_timer.function=my_function;  //???????????
add_timer(&my_timer);  //???????
mod_timer(&my_timer??jiffies+new_delay)??//????渭??????????
del_timer_sync(&my_timer);  //??????


???????????????锟�??????????????setup_time???????娲�???????????????????危??????????????????????校????????????????????????????????????????????????????????????????????????????????????????????械?????????????????????????del_timer_sync????del_timer??????????????????睢�?????????????????????????????????????????????????魏????????

???????????????

????1???????????time_befoer????????校???????????????????????卸????????

????2????????????udelay??ndelay??mdelay??udelay??????????小????械???????????1ms???围??????udelay????????????????mdelay???????谩?

????3?????schedule_timeout()?????????????????????????????????????????????????????????????????????????械?????????????????????????????????????????????????????????????????????????锟�???????????schedule_timeout()????????schedule ()?????????????????????????????????????????