驅動程式 - Linux Device Driver (LDD) - 使用範例 - C/C++ (Debian) - Hello, world!



Hello, world!是一個相當經典的入門教學範例,從這個範例的框架,使用者可以一探Linux Kernel的精簡之美,當然,它主要表達的目的,更多是對於操作環境的熟悉

main.c

#include <linux/module.h>
#include <linux/kernel.h>

int ldd_init(void)
{
    printk("Hello, world!\n");
    return 0;
}
 
void ldd_exit(void)
{
}
 
module_init(ldd_init);
module_exit(ldd_exit);
 
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Steward Fu");
MODULE_DESCRIPTION("Linux Driver");

ldd_init: 載入驅動程式時,系統會呼叫使用
ldd_exit: 卸載驅動程式時,系統會呼叫使用

Makefile

KERNEL=/usr/src/linux-headers-`uname -r`

obj-m += main.o

all:
	make -C $(KERNEL) M=$(PWD) modules

clean:
	make -C $(KERNEL) M=$(PWD) clean

編譯、測試

$ make
$ sudo insmod main.ko
    Hello, world!

卸載驅動程式

$ sudo rmmod main