当前位置: 首页 > news >正文

platform框架

platform框架

  • 注册设备进入总线
    • platform_device_register函数
  • 注册驱动进入总线
    • platform_driver_register函数

在这里插入图片描述

注册设备进入总线

platform_device_register函数

int platform_device_register(struct platform_device *pdev)

struct platform_device {const char	* name; 名字与驱动名一定要相同int		id;struct device	dev;u32		num_resources;struct resource	* resource;struct platform_device_id	*id_entry;/* arch specific additions */struct pdev_archdata	archdata;
};

#########

struct device {struct device		*parent;struct device_private	*p;struct kobject kobj;const char		*init_name;/* initial name of the device */struct device_type	*type;struct semaphore	sem;	/* semaphore to synchronize calls to* its driver.*/struct bus_type	*bus;		/* type of bus device is on */struct device_driver *driver;	/* which driver has allocated thisdevice */void		*platform_data;	/* Platform specific data, devicecore doesn't touch it */struct dev_pm_info	power;#ifdef CONFIG_NUMAint		numa_node;	/* NUMA node this device is close to */
#endifu64		*dma_mask;	/* dma mask (if dma'able device) */u64		coherent_dma_mask;/* Like dma_mask, but foralloc_coherent mappings asnot all hardware supports64 bit addresses for consistentallocations such descriptors. */struct device_dma_parameters *dma_parms;struct list_head	dma_pools;	/* dma pools (if dma'ble) */struct dma_coherent_mem	*dma_mem; /* internal for coherent memoverride *//* arch specific additions */struct dev_archdata	archdata;dev_t			devt;	/* dev_t, creates the sysfs "dev" */spinlock_t		devres_lock;struct list_head	devres_head;struct klist_node	knode_class;struct class		*class;const struct attribute_group **groups;	/* optional groups */void	(*release)(struct device *dev);
};

注册驱动进入总线

platform_driver_register函数

int platform_driver_register(struct platform_driver *drv)

struct platform_driver {int (*probe)(struct platform_device *);int (*remove)(struct platform_device *);void (*shutdown)(struct platform_device *);int (*suspend)(struct platform_device *, pm_message_t state);int (*resume)(struct platform_device *);struct device_driver driver;struct platform_device_id *id_table;
};

在probe中初始化
在remove中删除

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Ansible中的角色管理:如何组织和重用自动化任务
  • 项目依赖拉不下来卡着不动怎么办,node又不支持cnpm
  • SD-WAN,是干嘛的?
  • 五、Selenium操作指南(二)
  • 9月SCI/SSCI/EI最新期刊一览!二区SCI仅2个月录用,晋升/结项稳了!
  • ffmpeg音视频开发从入门到精通——常用结构体介绍(一)
  • session机制
  • TikTok直播为什么要用独立IP
  • 《机器学习》—— SVD奇异值分解方法对图像进行压缩
  • 【开发工具】开发过程中,怎么通过Easy JavaDoc快速生成注释。
  • 【网络安全 | 甲方建设】SaaS平台、Jira工具及Jenkins服务器
  • 2024年了,软件测试已经饱和了?
  • 2024全国大学省数学建模竞赛A题-原创参考论文(部分+第一问代码)
  • 考研408《计算机组成原理》复习笔记,第一章计算机系统概述
  • C语言 int uint16_t 踩坑记录
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • AHK 中 = 和 == 等比较运算符的用法
  • Android系统模拟器绘制实现概述
  • Laravel Telescope:优雅的应用调试工具
  • linux学习笔记
  • quasar-framework cnodejs社区
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • spring学习第二天
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • ucore操作系统实验笔记 - 重新理解中断
  • Vue 重置组件到初始状态
  • webpack+react项目初体验——记录我的webpack环境配置
  • XForms - 更强大的Form
  • 电商搜索引擎的架构设计和性能优化
  • 对象管理器(defineProperty)学习笔记
  • 工作中总结前端开发流程--vue项目
  • 诡异!React stopPropagation失灵
  • 基于axios的vue插件,让http请求更简单
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • 自动记录MySQL慢查询快照脚本
  • ​linux启动进程的方式
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • (175)FPGA门控时钟技术
  • (C++17) std算法之执行策略 execution
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (附源码)spring boot球鞋文化交流论坛 毕业设计 141436
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (附源码)计算机毕业设计SSM疫情居家隔离服务系统
  • (六)DockerCompose安装与配置
  • (十六)Flask之蓝图
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • .bat批处理(一):@echo off
  • .net 7 上传文件踩坑
  • .Net Core/.Net6/.Net8 ,启动配置/Program.cs 配置
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃