Linux????е??ж?
???????????? ???????[ 2012/12/19 11:02:44 ] ????????
?????ж??????????????????????ж????????????ж?????????ж?????????????????????????ж?????????????У??????????????????????????????ж????????λ???????Щ???????????????ж??????????????ɡ???????????????????????????°????
?????ж????????????????request_irq??????????ú???????з?????????????????????????ж????????????????????????????е??á?Linux?е??ж??????????????????????????????????ж????????????????????????????ж??????????????ж??????????????????????????ж????????????????????????????ж???ж????????ù????ж??????????????????????????????????
??????????????????????????????????????????????????ж???????????????????????????ж????????????????????ж???????????????????????ж????????ж????????????????ж???????local_irq_save??local_irq_restore?????????????ж?????????disable_irq??????
???????????ж???????cat /proc/interrupts??????ж??????????????????????????irqs_disabled???????????ж????????????in_interrupt????????????ж????????in_irq?????????????????ж???????
?????????????°????????ж???????????????Щ???????????ж??????????У????п?????????????????????????????????ж????????????е??Щ???????????????????ж?????????????У?????????????????ж???????????ж?????????????????????????????ж?????????????ж???????????????????????????????????????ж?????????????????????????????????????????????????
?????°???????????????ж????????????ж????????????е???????ж???????????????????????????ж????????????????????????????????????????????????У???????????????????????ж????????????ж???????????У??????????????°???С??°???е???????????????е??????????????е??ж??
??????2.6???汾?У??°??????????????ж??tasklet????????С?
???????ж?????????????°???????32?????????????????????????У????ж??????????????о?????????????ж???????????????????ж?????ж?????????????У?????????????ж??????????????????ksoftirqd???????У????????????????鴇?????????ж??tasklet??????????????????ж??????????????????????????????Щ????????????????ksoftirqd????????????????Щ?????????д??????????ж??????У?????????????????????SCSI?????????????ж???????????????????????Ч?????????????????????ж???????????
????tasklet???????????ж?????HI_SOFTIRQ??TASKLET_SOFTIRQ??????????????????е?tasklet????????????HI_SOFTIRQ??TASKLET_SOFTIRQ?????????ж??????????tasklet????????????????????????ж??е?????????????ж????????????????????????????tasklet?????????????????????????????????tasklet????С?Tasklet????????????ζ????????tasklet????????????????????????????????????tasklet?????????????ж???????????????????????????ж???????????????????????????tasklet_disable???????????????tasklet????????????tasklet_kill????????????????tasklet??
DECLARE_TASKLET(test_tasklet??test_tasklet_func??0); //????
void test_tasklet_func(void) //???????
{
printk("tasklet is executing!
");
}
tasklet_schedule(&test_tasklet); //????
???????????п??????????????????????????У?????°???????????????????????У????????????????μ???????????????????????????????????е??°????????????????????????????????????????????????????????????????????????????????????????????????????????з?????????????????????????????????С?
????????????????????????????????????????????????????е???????????????????????????????????events/n??????????????????????????????????????????????????????д???????????????????????????????????????????CPU????????????????????????????????????struct cpu_workqueue_struct??????????struct workqueue_struct??????????????????????????й?????????
INIT_WORK(&button_dev->work?? gpio_keys_report_event); //????
static void gpio_keys_report_event(struct work_struct *work) //???????
{
key_values[0] = '0' ; //??????????
input_report_key(channel?? BTN_0?? !!ev_press); //??input???????水?????
input_sync(channel); //???????
ev_press = 0; //????????
}
schedule_work(&button_dev->work); //??????????д??????
cancel_work_sync(&button_dev->work); //???????????
????tasklet????????ж??????????????????????????????????????????????????ù??????У?????????tasklet???????????????????????????????????????local_bh_disable????????°?????local_bh_disable???????????????????е???У???????????в??漰????У????????????ж??tasklet???????????????????????????
??????
???·???
??????????????????
2023/3/23 14:23:39???д?ò??????????
2023/3/22 16:17:39????????????????????Щ??
2022/6/14 16:14:27??????????????????????????
2021/10/18 15:37:44???????????????
2021/9/17 15:19:29???·???????·
2021/9/14 15:42:25?????????????
2021/5/28 17:25:47??????APP??????????
2021/5/8 17:01:11