https://lwn.net/Kernel/LDD3/

https://github.com/martinezjavier/ldd3/

https://www.kernel.org/doc/html/latest/driver-api/index.html

The memory in the kernel is divided into several parts. One of them is core_text, which holds the original functions in the kernel. This part is registered in a specific memory map region that is immune to changes or manipulation. Moreover, if we load a new kernel module - namely, write a new function or an override to an original function - this new function will be written in another memory region that is reserved solely for new functions. You can see this in a virtual memory map below. Note that there’s a difference between the address range that is assigned to the original kernel code (text section, aka “core kernel text”) and the address range that is assigned to a new kernel module.

SERIAL

PCI Linux Driver Development

PCIe Linux Driver Development

CHAR DEVICE DRIVER

BLOCK DEVICE DRIVER

USB

IOCTL

GPIO

Considerations about mmio on differents rings


Mapping device to user-space (makes the device accessible by the program):

https://www.oreilly.com/library/view/linux-device-drivers/0596000081/ch13s02.html


Driver Development (USB & PCI)

http://www.kroah.com/linux/

https://krinkinmu.github.io/2020/07/12/linux-kernel-modules.html

https://linuxgazette.net/156/jangir.html


🌱 Back to Garden

9 items under this folder.