Skip to Content
Linux Device Drivers Development
book

Linux Device Drivers Development

by John Madieu
October 2017
Intermediate to advanced
586 pages
14h 8m
English
Packt Publishing
Content preview from Linux Device Drivers Development

Tasklets as bottom halves

The tasklet deferring mechanism is most used in DMA, network, and block device drivers. Just try the following command in the kernel source:

 grep -rn tasklet_schedule  

Now, let's see how to implement such a mechanism in our interrupt handler:

struct my_data { int my_int_var; struct tasklet_struct the_tasklet; int dma_request; }; static void my_tasklet_work(unsigned long data) { /* Do what ever you want here */ } struct my_data *md = init_my_data; /* somewhere in the probe or init function */ [...] tasklet_init(&md->the_tasklet, my_tasklet_work, (unsigned long)md); [...] static irqreturn_t my_irq_handler(int irq, void *dev_id) { struct my_data *md = dev_id; /* Let's schedule our tasklet */ tasklet_schedule(&md.dma_tasklet); ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

Linux Device Drivers, Second Edition

Linux Device Drivers, Second Edition

Jonathan Corbet, Alessandro Rubini
Linux Device Drivers, 3rd Edition

Linux Device Drivers, 3rd Edition

Jonathan Corbet, Alessandro Rubini, Greg Kroah-Hartman

Publisher Resources

ISBN: 9781785280009Supplemental Content