Kernel modules are pieces of code that can be loaded and unloaded into the kernel upon demand. They extend the
functionality of the kernel without the need to reboot the system. If you want to add your code(module) to a Linux
kernel, the most basic way to do that is to add your source files to the kernel source tree, add entry of your module in
appropriate Makefile and Kconfig file and recompile the kernel. In fact, the kernel configuration process consists
mainly of choosing which files to include in the kernel to be compiled. All the device drivers are written using these
loadable modules.Let us add a very basic sample kernel module. Add this file to drivers/gpio directory in Linux kernel
source tree.
vim ./drivers/gpio/helloWorld.c helloWorld
Now we need to add configuration setting, so that we can add or remove this module from the By the time of Linux
kernel configuration(You can configure it from “make menuconfig”). To do that add your modules entry in ./driver
/gpio/Kconfig file. Add below codes to ./drivers/gpio/Kconfig file.
Line 1 is the macro with using which our module can be configured.Line 3 states that this option can only be enabled if
CONFIG_ARM is enabled . Next We have to inform kernel to compile hello_world.c when HELLO_WORLD_MODULE
configuration is enabled.Add this to ./drivers/gpio/Makefile.
We have successfully added a new module to Linux kernel. Now lets test our new module with Linux kernel.To do that
first we need to give tool chain name to CROSS_COMPILE flag and architecture name to ARCH flag in Linux terminal.
Now configuration menu will appear. Navigate to Device Drivers—>GPIO Support —>Hello World Module and enable
it. Now start compiling kernel and modules.
Your module will get inserted as a part of kernel.
Enjoy !!!