《Linux驱动》驱动注册

来源:互联网 发布:自助建站平台源码 编辑:程序博客网 时间:2024/04/29 20:45
#include <linux/init.h>#include <linux/module.h>/*驱动注册的头文件,包含驱动的结构体和注册和卸载的函数*/#include <linux/platform_device.h>#define DRIVER_NAME "hello_ctl"/*设备注册所需的名字,在内核/arch/arm/mach-exynos/mach-tiny4412.c需要用到static struct platform_device tiny4412_device_h = {    .name   = "hello_ctl",    .id     = -1,    .num_resources  = 0,};&tiny4412_device_h,*/static int hello_probe(struct platform_device *pdv){    printk(KERN_EMERG "\tinitialized\n");    return 0;}static int hello_remove(struct platform_device *pdv){    return 0;}static void hello_shutdown(struct platform_device *pdv){}static int hello_suspend(struct platform_device *pdv){    return 0;}static int hello_resume(struct platform_device *pdv){    return 0;}//驱动注册结构体struct platform_driver hello_driver = {    .probe = hello_probe,    .remove = hello_remove,    .shutdown = hello_shutdown,    .suspend = hello_suspend,    .resume = hello_resume,    .driver = {        .name = DRIVER_NAME,//在设备注册中需要用到的名字,两者必须一致.        .owner = THIS_MODULE,    }};static int hello_init(void){    int DriverState;    printk(KERN_EMERG "HELLO WORLD enter!\n");    DriverState = platform_driver_register(&hello_driver);    printk(KERN_EMERG "\tDriverState is %d\n",DriverState);    return 0;}static void hello_exit(void){    printk(KERN_EMERG "HELLO WORLD exit!\n");    platform_driver_unregister(&hello_driver);  }module_init(hello_init);module_exit(hello_exit);MODULE_LICENSE("Dual BSD/GPL");MODULE_AUTHOR("HerGhost");
0 0