02$ cat test.c
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/platform_device.h>
static int selfprobe (struct platform_device *pdev)
{
printk("Device: %s match Driver %s OK!\n", pdev->name, (pdev->dev.driver)->name);
return 0;
}
static int selfremove (struct platform_device *pdev)
{
printk("Device: %s mismatch Driver %s OK!\n", pdev->name, (pdev->dev.driver)->name);
return 0;
}
static struct platform_driver selfdrv = {
.probe = selfprobe,
.remove = selfremove,
.driver.name = "self_",
};
static struct platform_device *pselfdev = NULL;
static int __init test_init(void)
{
printk("hello, world!\n");
pselfdev = platform_device_alloc("self_", -1);
if (NULL == pselfdev) {
return -ENOMEM;
}
if (platform_device_add(pselfdev)) {
platform_device_put(pselfdev);
}
return platform_driver_register(&selfdrv);
}
static void __exit test_exit(void)
{
printk("Byebye, world!\n");
platform_driver_unregister(&selfdrv);
platform_device_unregister(pselfdev);
}
module_init(test_init);
module_exit(test_exit);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("MR. Millet");
MODULE_VERSION("version 6.0");
MODULE_DESCRIPTION("A simple example for driver module");
02$ cat Makefile
#obj-m := dev.o drv.o
obj-m := test.o
#KERNEL_DIR := /linux-3.5-drv/
KERNEL_DIR := /home/hyh/develop/linux-3.5/
all:
make -C $(KERNEL_DIR) M=$(shell pwd) modules
clean:
make -C $(KERNEL_DIR) M=$(shell pwd) clean
02$
转载于:https://my.oschina.net/tplinuxhyh/blog/524572