Events | Kernel functions |
Read data | |
Write data |
The first driver: loading and removing the driver in user space
I’ll now show you how to develop your first Linux device driver, which will be introduced in the kernel as a module.For this purpose I’ll write the following program in a file named
nothing.c
=
#includeSince the release of kernel version 2.6.x, compiling modules has become slightly more complicated. First, you need to have a complete, compiled kernel source-code-tree. If you have a Debian Sarge system, you can follow the steps in Appendix B (towards the end of this article). In the following, I’ll assume that a kernel version 2.6.8 is being used.
MODULE_LICENSE("Dual BSD/GPL");
Next, you need to generate a makefile. The makefile for this example, which should be named
Makefile
, will be:=
obj-m := nothing.oUnlike with previous versions of the kernel, it’s now also necessary to compile the module using the same kernel that you’re going to load and use the module with. To compile it, you can type:
$ make -C /usr/src/kernel-source-2.6.8 M=
pwd modules
This extremely simple module belongs to kernel space and will form part of it once it’s loaded.
In user space, you can load the module as root by typing the following into the command line:
# insmod nothing.ko
The
insmod
command allows the installation of the module in the kernel. However, this particular module isn’t of much use.It is possible to check that the module has been installed correctly by looking at all installed modules:
# lsmod
Finally, the module can be removed from the kernel using the command:
# rmmod nothing
By issuing the
lsmod
command again, you can verify that the module is no longer in the kernel.The summary of all this is shown in Table 3.
Events | User functions | Kernel functions |
Load module | insmod | |
Open device | ||
Read device | ||
Write device | ||
Close device | ||
Remove module | rmmod |
0 nhận xét:
Đăng nhận xét