码迷,mamicode.com
首页 > 系统相关 > 详细

Linux-3.5_platform学习与理解

时间:2019-03-01 15:28:36      阅读:353      评论:0      收藏:0      [点我收藏+]

标签:span   bsp   release   turn   released   desc   flow   linux   sys   

参考手册:linux-3.5/Documentation/driver-model/platform.txt

技术图片

技术图片

 开始写简单的demo,先使用第三种匹配规则。

技术图片
 1 #include <linux/module.h>
 2 #include <linux/init.h>
 3 #include <linux/syscalls.h>
 4 #include <linux/io.h>
 5 #include <linux/uaccess.h>
 6 
 7 #include <linux/platform_device.h>
 8 
 9 static void demo_release(struct device *dev)
10 {
11     struct platform_device *pdev = to_platform_device(dev);
12 
13     printk("%s device is released....\n", pdev->name);
14 }
15 
16 static struct platform_device pltdev1 = {
17     .name    =  "flower",    
18     .id    =  -1,
19     .dev    =    {
20         .release =  demo_release,    
21     },
22 };
23 
24 module_driver(pltdev1, platform_device_register, platform_device_unregister);
25 
26 MODULE_LICENSE("GPL");
27 
28 MODULE_AUTHOR("no name");
29 MODULE_VERSION("J-15");
30 MODULE_DESCRIPTION("a simple demo for driver module");
dev1.c
技术图片
 1 #include <linux/module.h>
 2 #include <linux/init.h>
 3 #include <linux/syscalls.h>
 4 #include <linux/io.h>
 5 #include <linux/uaccess.h>
 6 
 7 #include <linux/platform_device.h>
 8 
 9 #define to_platform_driver(drv)    (container_of((drv), struct platform_driver, 10                  driver))
11 static int plt_probe(struct platform_device *pdev)
12 {
13     struct platform_driver *pdrv = to_platform_driver(pdev->dev.driver);
14 
15     printk("%s driver do %s device ...\n", 
16             pdrv->driver.name, pdev->name);
17 
18     return 0;
19 }
20 
21 static int plt_remove(struct platform_device *pdev)
22 {
23     struct platform_driver *pdrv = to_platform_driver(pdev->dev.driver);
24 
25     printk("%s driver remove %s device ...\n", 
26             pdrv->driver.name, pdev->name);
27 
28     return 0;
29 }
30 
31 static struct platform_driver pltdrv1 = {
32     .probe    =  plt_probe,
33     .remove    =  plt_remove,
34     .driver    =  {
35         .name    =  "flower",
36     }
37 };
38 
39 module_platform_driver(pltdrv1);
40 
41 MODULE_LICENSE("GPL");
42 
43 MODULE_AUTHOR("no name");
44 MODULE_VERSION("J-15");
45 MODULE_DESCRIPTION("a simple demo for driver module");
drv1.c

就会注册成功简单的drv、dev。

 

 

现在使用第二种匹配方式。

 

Linux-3.5_platform学习与理解

标签:span   bsp   release   turn   released   desc   flow   linux   sys   

原文地址:https://www.cnblogs.com/jason-linux/p/10455456.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!