├── .gitignore ├── Chapter01 ├── .gitignore └── helloworld.c ├── Chapter02 ├── add_custom_code.patch ├── module │ ├── Makefile │ └── dummy-code.c └── module_par │ ├── Makefile │ └── module_par.c ├── Chapter03 ├── .gitignore ├── chrdev_legacy │ ├── Makefile │ ├── chrdev_legacy.c │ └── modify_read_write_to_chrdev_legacy.patch ├── chrdev_test.c └── modify_close_open_to_chrdev_test.patch ├── Chapter04 ├── chrdev │ ├── Makefile │ ├── add_chrdev_devices.dts.patch │ ├── add_fixed_chrdev_devices.patch │ ├── add_sysfs_attrs_chrdev.patch │ ├── chrdev-fw.c │ ├── chrdev-req.c │ ├── chrdev.c │ └── chrdev.h ├── get_dt_data │ ├── Makefile │ └── get_dt_data.c └── simple_platform │ ├── .gitignore │ └── simple_platform.dts ├── Chapter05 ├── add_irqtest_module.patch ├── add_tasklet_2_to_irqtest_module.patch ├── add_tasklet_to_irqtest_module.patch ├── add_workqueue_2_to_irqtest_module.patch ├── add_workqueue_to_irqtest_module.patch ├── atomic │ ├── Makefile │ ├── atomic.c │ ├── mutex.c │ └── spinlock.c ├── notifier │ ├── Makefile │ ├── hires_timer.c │ └── notifier.c ├── timer │ ├── Makefile │ ├── hires_timer.c │ └── ktimer.c └── wait_event │ ├── Makefile │ ├── completion.c │ └── waitqueue.c ├── Chapter06 ├── data_types │ ├── Makefile │ └── data_types.c ├── hashtable │ ├── Makefile │ └── hashtable.c ├── helper_funcs │ ├── Makefile │ └── helper_funcs.c ├── list │ ├── Makefile │ └── list.c ├── mem_alloc │ ├── Makefile │ └── mem_alloc.c └── time │ ├── Makefile │ └── time.c ├── Chapter07 ├── .gitignore ├── chrdev │ ├── Makefile │ ├── add_mutex_to_chrdev.patch │ ├── chrdev-req.c │ ├── chrdev.c │ ├── chrdev.h │ ├── chrdev_ioctl.h │ ├── chrdev_irq.c │ ├── chrdev_irq.h │ └── modify_lseek_to_chrdev_test.patch ├── chrdev_fasync.c ├── chrdev_ioctl.c ├── chrdev_mmap.c └── chrdev_select.c ├── LICENSE └── README.md /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/.gitignore -------------------------------------------------------------------------------- /Chapter01/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter01/.gitignore -------------------------------------------------------------------------------- /Chapter01/helloworld.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter01/helloworld.c -------------------------------------------------------------------------------- /Chapter02/add_custom_code.patch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter02/add_custom_code.patch -------------------------------------------------------------------------------- /Chapter02/module/Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter02/module/Makefile -------------------------------------------------------------------------------- /Chapter02/module/dummy-code.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter02/module/dummy-code.c -------------------------------------------------------------------------------- /Chapter02/module_par/Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter02/module_par/Makefile -------------------------------------------------------------------------------- /Chapter02/module_par/module_par.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter02/module_par/module_par.c -------------------------------------------------------------------------------- /Chapter03/.gitignore: -------------------------------------------------------------------------------- 1 | chrdev_test 2 | -------------------------------------------------------------------------------- /Chapter03/chrdev_legacy/Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter03/chrdev_legacy/Makefile -------------------------------------------------------------------------------- /Chapter03/chrdev_legacy/chrdev_legacy.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter03/chrdev_legacy/chrdev_legacy.c -------------------------------------------------------------------------------- /Chapter03/chrdev_legacy/modify_read_write_to_chrdev_legacy.patch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter03/chrdev_legacy/modify_read_write_to_chrdev_legacy.patch -------------------------------------------------------------------------------- /Chapter03/chrdev_test.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter03/chrdev_test.c -------------------------------------------------------------------------------- /Chapter03/modify_close_open_to_chrdev_test.patch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter03/modify_close_open_to_chrdev_test.patch -------------------------------------------------------------------------------- /Chapter04/chrdev/Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter04/chrdev/Makefile -------------------------------------------------------------------------------- /Chapter04/chrdev/add_chrdev_devices.dts.patch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter04/chrdev/add_chrdev_devices.dts.patch -------------------------------------------------------------------------------- /Chapter04/chrdev/add_fixed_chrdev_devices.patch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter04/chrdev/add_fixed_chrdev_devices.patch -------------------------------------------------------------------------------- /Chapter04/chrdev/add_sysfs_attrs_chrdev.patch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter04/chrdev/add_sysfs_attrs_chrdev.patch -------------------------------------------------------------------------------- /Chapter04/chrdev/chrdev-fw.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter04/chrdev/chrdev-fw.c -------------------------------------------------------------------------------- /Chapter04/chrdev/chrdev-req.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter04/chrdev/chrdev-req.c -------------------------------------------------------------------------------- /Chapter04/chrdev/chrdev.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter04/chrdev/chrdev.c -------------------------------------------------------------------------------- /Chapter04/chrdev/chrdev.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter04/chrdev/chrdev.h -------------------------------------------------------------------------------- /Chapter04/get_dt_data/Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter04/get_dt_data/Makefile -------------------------------------------------------------------------------- /Chapter04/get_dt_data/get_dt_data.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter04/get_dt_data/get_dt_data.c -------------------------------------------------------------------------------- /Chapter04/simple_platform/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter04/simple_platform/.gitignore -------------------------------------------------------------------------------- /Chapter04/simple_platform/simple_platform.dts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter04/simple_platform/simple_platform.dts -------------------------------------------------------------------------------- /Chapter05/add_irqtest_module.patch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter05/add_irqtest_module.patch -------------------------------------------------------------------------------- /Chapter05/add_tasklet_2_to_irqtest_module.patch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter05/add_tasklet_2_to_irqtest_module.patch -------------------------------------------------------------------------------- /Chapter05/add_tasklet_to_irqtest_module.patch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter05/add_tasklet_to_irqtest_module.patch -------------------------------------------------------------------------------- /Chapter05/add_workqueue_2_to_irqtest_module.patch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter05/add_workqueue_2_to_irqtest_module.patch -------------------------------------------------------------------------------- /Chapter05/add_workqueue_to_irqtest_module.patch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter05/add_workqueue_to_irqtest_module.patch -------------------------------------------------------------------------------- /Chapter05/atomic/Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter05/atomic/Makefile -------------------------------------------------------------------------------- /Chapter05/atomic/atomic.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter05/atomic/atomic.c -------------------------------------------------------------------------------- /Chapter05/atomic/mutex.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter05/atomic/mutex.c -------------------------------------------------------------------------------- /Chapter05/atomic/spinlock.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter05/atomic/spinlock.c -------------------------------------------------------------------------------- /Chapter05/notifier/Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter05/notifier/Makefile -------------------------------------------------------------------------------- /Chapter05/notifier/hires_timer.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter05/notifier/hires_timer.c -------------------------------------------------------------------------------- /Chapter05/notifier/notifier.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter05/notifier/notifier.c -------------------------------------------------------------------------------- /Chapter05/timer/Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter05/timer/Makefile -------------------------------------------------------------------------------- /Chapter05/timer/hires_timer.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter05/timer/hires_timer.c -------------------------------------------------------------------------------- /Chapter05/timer/ktimer.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter05/timer/ktimer.c -------------------------------------------------------------------------------- /Chapter05/wait_event/Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter05/wait_event/Makefile -------------------------------------------------------------------------------- /Chapter05/wait_event/completion.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter05/wait_event/completion.c -------------------------------------------------------------------------------- /Chapter05/wait_event/waitqueue.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter05/wait_event/waitqueue.c -------------------------------------------------------------------------------- /Chapter06/data_types/Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter06/data_types/Makefile -------------------------------------------------------------------------------- /Chapter06/data_types/data_types.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter06/data_types/data_types.c -------------------------------------------------------------------------------- /Chapter06/hashtable/Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter06/hashtable/Makefile -------------------------------------------------------------------------------- /Chapter06/hashtable/hashtable.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter06/hashtable/hashtable.c -------------------------------------------------------------------------------- /Chapter06/helper_funcs/Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter06/helper_funcs/Makefile -------------------------------------------------------------------------------- /Chapter06/helper_funcs/helper_funcs.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter06/helper_funcs/helper_funcs.c -------------------------------------------------------------------------------- /Chapter06/list/Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter06/list/Makefile -------------------------------------------------------------------------------- /Chapter06/list/list.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter06/list/list.c -------------------------------------------------------------------------------- /Chapter06/mem_alloc/Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter06/mem_alloc/Makefile -------------------------------------------------------------------------------- /Chapter06/mem_alloc/mem_alloc.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter06/mem_alloc/mem_alloc.c -------------------------------------------------------------------------------- /Chapter06/time/Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter06/time/Makefile -------------------------------------------------------------------------------- /Chapter06/time/time.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter06/time/time.c -------------------------------------------------------------------------------- /Chapter07/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter07/.gitignore -------------------------------------------------------------------------------- /Chapter07/chrdev/Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter07/chrdev/Makefile -------------------------------------------------------------------------------- /Chapter07/chrdev/add_mutex_to_chrdev.patch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter07/chrdev/add_mutex_to_chrdev.patch -------------------------------------------------------------------------------- /Chapter07/chrdev/chrdev-req.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter07/chrdev/chrdev-req.c -------------------------------------------------------------------------------- /Chapter07/chrdev/chrdev.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter07/chrdev/chrdev.c -------------------------------------------------------------------------------- /Chapter07/chrdev/chrdev.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter07/chrdev/chrdev.h -------------------------------------------------------------------------------- /Chapter07/chrdev/chrdev_ioctl.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter07/chrdev/chrdev_ioctl.h -------------------------------------------------------------------------------- /Chapter07/chrdev/chrdev_irq.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter07/chrdev/chrdev_irq.c -------------------------------------------------------------------------------- /Chapter07/chrdev/chrdev_irq.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter07/chrdev/chrdev_irq.h -------------------------------------------------------------------------------- /Chapter07/chrdev/modify_lseek_to_chrdev_test.patch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter07/chrdev/modify_lseek_to_chrdev_test.patch -------------------------------------------------------------------------------- /Chapter07/chrdev_fasync.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter07/chrdev_fasync.c -------------------------------------------------------------------------------- /Chapter07/chrdev_ioctl.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter07/chrdev_ioctl.c -------------------------------------------------------------------------------- /Chapter07/chrdev_mmap.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter07/chrdev_mmap.c -------------------------------------------------------------------------------- /Chapter07/chrdev_select.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/Chapter07/chrdev_select.c -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Linux-Device-Driver-Development-Cookbook/HEAD/README.md --------------------------------------------------------------------------------