├── .gitignore ├── LICENSE ├── README.md ├── chapter_01 ├── .gitignore └── helloworld.c ├── chapter_02 ├── add_custom_code.patch ├── module │ ├── Makefile │ └── dummy-code.c └── module_par │ ├── Makefile │ └── module_par.c ├── chapter_03 ├── .gitignore ├── chrdev_legacy │ ├── Makefile │ ├── chrdev_legacy.c │ └── modify_read_write_to_chrdev_legacy.patch ├── chrdev_test.c └── modify_close_open_to_chrdev_test.patch ├── chapter_04 ├── 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 ├── chapter_05 ├── 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 ├── chapter_06 ├── 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 └── chapter_07 ├── .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 /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/.gitignore -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/README.md -------------------------------------------------------------------------------- /chapter_01/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_01/.gitignore -------------------------------------------------------------------------------- /chapter_01/helloworld.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_01/helloworld.c -------------------------------------------------------------------------------- /chapter_02/add_custom_code.patch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_02/add_custom_code.patch -------------------------------------------------------------------------------- /chapter_02/module/Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_02/module/Makefile -------------------------------------------------------------------------------- /chapter_02/module/dummy-code.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_02/module/dummy-code.c -------------------------------------------------------------------------------- /chapter_02/module_par/Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_02/module_par/Makefile -------------------------------------------------------------------------------- /chapter_02/module_par/module_par.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_02/module_par/module_par.c -------------------------------------------------------------------------------- /chapter_03/.gitignore: -------------------------------------------------------------------------------- 1 | chrdev_test 2 | -------------------------------------------------------------------------------- /chapter_03/chrdev_legacy/Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_03/chrdev_legacy/Makefile -------------------------------------------------------------------------------- /chapter_03/chrdev_legacy/chrdev_legacy.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_03/chrdev_legacy/chrdev_legacy.c -------------------------------------------------------------------------------- /chapter_03/chrdev_legacy/modify_read_write_to_chrdev_legacy.patch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_03/chrdev_legacy/modify_read_write_to_chrdev_legacy.patch -------------------------------------------------------------------------------- /chapter_03/chrdev_test.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_03/chrdev_test.c -------------------------------------------------------------------------------- /chapter_03/modify_close_open_to_chrdev_test.patch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_03/modify_close_open_to_chrdev_test.patch -------------------------------------------------------------------------------- /chapter_04/chrdev/Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_04/chrdev/Makefile -------------------------------------------------------------------------------- /chapter_04/chrdev/add_chrdev_devices.dts.patch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_04/chrdev/add_chrdev_devices.dts.patch -------------------------------------------------------------------------------- /chapter_04/chrdev/add_fixed_chrdev_devices.patch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_04/chrdev/add_fixed_chrdev_devices.patch -------------------------------------------------------------------------------- /chapter_04/chrdev/add_sysfs_attrs_chrdev.patch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_04/chrdev/add_sysfs_attrs_chrdev.patch -------------------------------------------------------------------------------- /chapter_04/chrdev/chrdev-fw.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_04/chrdev/chrdev-fw.c -------------------------------------------------------------------------------- /chapter_04/chrdev/chrdev-req.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_04/chrdev/chrdev-req.c -------------------------------------------------------------------------------- /chapter_04/chrdev/chrdev.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_04/chrdev/chrdev.c -------------------------------------------------------------------------------- /chapter_04/chrdev/chrdev.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_04/chrdev/chrdev.h -------------------------------------------------------------------------------- /chapter_04/get_dt_data/Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_04/get_dt_data/Makefile -------------------------------------------------------------------------------- /chapter_04/get_dt_data/get_dt_data.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_04/get_dt_data/get_dt_data.c -------------------------------------------------------------------------------- /chapter_04/simple_platform/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_04/simple_platform/.gitignore -------------------------------------------------------------------------------- /chapter_04/simple_platform/simple_platform.dts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_04/simple_platform/simple_platform.dts -------------------------------------------------------------------------------- /chapter_05/add_irqtest_module.patch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_05/add_irqtest_module.patch -------------------------------------------------------------------------------- /chapter_05/add_tasklet_2_to_irqtest_module.patch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_05/add_tasklet_2_to_irqtest_module.patch -------------------------------------------------------------------------------- /chapter_05/add_tasklet_to_irqtest_module.patch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_05/add_tasklet_to_irqtest_module.patch -------------------------------------------------------------------------------- /chapter_05/add_workqueue_2_to_irqtest_module.patch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_05/add_workqueue_2_to_irqtest_module.patch -------------------------------------------------------------------------------- /chapter_05/add_workqueue_to_irqtest_module.patch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_05/add_workqueue_to_irqtest_module.patch -------------------------------------------------------------------------------- /chapter_05/atomic/Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_05/atomic/Makefile -------------------------------------------------------------------------------- /chapter_05/atomic/atomic.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_05/atomic/atomic.c -------------------------------------------------------------------------------- /chapter_05/atomic/mutex.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_05/atomic/mutex.c -------------------------------------------------------------------------------- /chapter_05/atomic/spinlock.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_05/atomic/spinlock.c -------------------------------------------------------------------------------- /chapter_05/notifier/Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_05/notifier/Makefile -------------------------------------------------------------------------------- /chapter_05/notifier/hires_timer.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_05/notifier/hires_timer.c -------------------------------------------------------------------------------- /chapter_05/notifier/notifier.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_05/notifier/notifier.c -------------------------------------------------------------------------------- /chapter_05/timer/Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_05/timer/Makefile -------------------------------------------------------------------------------- /chapter_05/timer/hires_timer.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_05/timer/hires_timer.c -------------------------------------------------------------------------------- /chapter_05/timer/ktimer.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_05/timer/ktimer.c -------------------------------------------------------------------------------- /chapter_05/wait_event/Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_05/wait_event/Makefile -------------------------------------------------------------------------------- /chapter_05/wait_event/completion.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_05/wait_event/completion.c -------------------------------------------------------------------------------- /chapter_05/wait_event/waitqueue.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_05/wait_event/waitqueue.c -------------------------------------------------------------------------------- /chapter_06/data_types/Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_06/data_types/Makefile -------------------------------------------------------------------------------- /chapter_06/data_types/data_types.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_06/data_types/data_types.c -------------------------------------------------------------------------------- /chapter_06/hashtable/Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_06/hashtable/Makefile -------------------------------------------------------------------------------- /chapter_06/hashtable/hashtable.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_06/hashtable/hashtable.c -------------------------------------------------------------------------------- /chapter_06/helper_funcs/Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_06/helper_funcs/Makefile -------------------------------------------------------------------------------- /chapter_06/helper_funcs/helper_funcs.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_06/helper_funcs/helper_funcs.c -------------------------------------------------------------------------------- /chapter_06/list/Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_06/list/Makefile -------------------------------------------------------------------------------- /chapter_06/list/list.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_06/list/list.c -------------------------------------------------------------------------------- /chapter_06/mem_alloc/Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_06/mem_alloc/Makefile -------------------------------------------------------------------------------- /chapter_06/mem_alloc/mem_alloc.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_06/mem_alloc/mem_alloc.c -------------------------------------------------------------------------------- /chapter_06/time/Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_06/time/Makefile -------------------------------------------------------------------------------- /chapter_06/time/time.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_06/time/time.c -------------------------------------------------------------------------------- /chapter_07/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_07/.gitignore -------------------------------------------------------------------------------- /chapter_07/chrdev/Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_07/chrdev/Makefile -------------------------------------------------------------------------------- /chapter_07/chrdev/add_mutex_to_chrdev.patch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_07/chrdev/add_mutex_to_chrdev.patch -------------------------------------------------------------------------------- /chapter_07/chrdev/chrdev-req.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_07/chrdev/chrdev-req.c -------------------------------------------------------------------------------- /chapter_07/chrdev/chrdev.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_07/chrdev/chrdev.c -------------------------------------------------------------------------------- /chapter_07/chrdev/chrdev.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_07/chrdev/chrdev.h -------------------------------------------------------------------------------- /chapter_07/chrdev/chrdev_ioctl.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_07/chrdev/chrdev_ioctl.h -------------------------------------------------------------------------------- /chapter_07/chrdev/chrdev_irq.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_07/chrdev/chrdev_irq.c -------------------------------------------------------------------------------- /chapter_07/chrdev/chrdev_irq.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_07/chrdev/chrdev_irq.h -------------------------------------------------------------------------------- /chapter_07/chrdev/modify_lseek_to_chrdev_test.patch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_07/chrdev/modify_lseek_to_chrdev_test.patch -------------------------------------------------------------------------------- /chapter_07/chrdev_fasync.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_07/chrdev_fasync.c -------------------------------------------------------------------------------- /chapter_07/chrdev_ioctl.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_07/chrdev_ioctl.c -------------------------------------------------------------------------------- /chapter_07/chrdev_mmap.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_07/chrdev_mmap.c -------------------------------------------------------------------------------- /chapter_07/chrdev_select.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/giometti/linux_device_driver_development_cookbook/HEAD/chapter_07/chrdev_select.c --------------------------------------------------------------------------------