当前位置: 首页 > 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中删除

相关文章:

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; 名…...

零成本搞定静态博客——十分钟安装hugo与主题

文章目录 hugo介绍hugo安装与使用方式一:新建站点自建主题方式二:新建站点使用系统推荐的主题 hugo介绍 通过 Hugo 你可以快速搭建你的静态网站,比如博客系统、文档介绍、公司主页、产品介绍等等。相对于其他静态网站生成器来说,…...

windows C++ 并行编程-转换使用取消的 OpenMP 循环以使用并发运行时

某些并行循环不需要执行所有迭代。 例如,搜索值的算法可以在找到值后终止。 OpenMP 不提供中断并行循环的机制。 但是,可以使用布尔值或标志来启用循环迭代,以指示已找到解决方案。 并发运行时提供允许一个任务取消其他尚未启动的任务的功能。…...

经验笔记:跨站脚本攻击(Cross-Site Scripting,简称XSS)

跨站脚本攻击(Cross-Site Scripting,简称XSS)经验笔记 跨站脚本攻击(XSS:Cross-Site Scripting)是一种常见的Web应用程序安全漏洞,它允许攻击者将恶意脚本注入到看起来来自可信网站的网页上。当…...

演示:基于WPF的DrawingVisual和谷歌地图瓦片开发的地图(完全独立不依赖第三方库)

一、目的:基于WPF的DrawingVisual和谷歌地图瓦片开发的地图 二、预览 三、环境 VS2022,Net7,DrawingVisual,谷歌地图瓦片 四、主要功能 地图缩放,平移,定位 真实经纬度 显示瓦片信息 显示真实经纬度和经纬线 省市县…...

【C++】static作用总结

文章目录 1. 在函数内(局部静态变量)2. 在类中的静态成员变量3. 在类中的静态成员函数4. 在文件/模块中的静态变量或函数总结 1. 在函数内(局部静态变量) 当 static 用于函数内的局部变量时,该变量的生命周期变为整个…...

视频提取字幕的软件有哪些?高效转录用这些

探索视频的奥秘,从字幕开始!你是否曾被繁复的字幕处理困扰,渴望有一款简单好用的在线免费软件来轻松解锁字幕提取? 告别手动输入的烦恼,我们为你精选了6款视频字幕提取在线免费软件,它们不仅能一键转录&am…...

(4)SVG-path中的椭圆弧A(绝对)或a(相对)

1、概念 表示经过起始点(即上一条命令的结束点),到结束点之间画一段椭圆弧 2、7个参数 rx,ry,x-axis-rotation,large-arc-flag,sweep-flag,x,y (1)和(2&a…...

docker国内镜像源报错解决方案

Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details. 遇到 Job for docker.service failed because the control process exited with error …...

《C++进阶之路:探寻预处理宏的替代方案》

在 C编程的历程中,预处理宏曾经扮演了重要的角色。然而,随着 C语言的不断发展和编程理念的进步,预处理宏的一些弊端也逐渐显现出来。那么,C中的预处理宏的替代方案有哪些呢?本文将深入探讨这个问题,为你揭示…...

【综合案例】使用鸿蒙编写掘金评论列表案例

效果展示 功能描述 整个页面分为三大模块:顶部 主体【评论列表】 底部。 点击顶部的最新和最热按钮可以进行切换,点击最新按钮的时候主体部分的评论列表是按照时间由近至远进行排列展示,点击最热按钮的时候主体部分的评论列表是按照点赞数…...

【springboot】使用缓存

目录 1. 添加依赖 2. 配置缓存 3. 使用EnableCaching注解开启缓存 4. 使用注解 1. 配置缓存名称 2. 配置缓存的键 3. 移除缓存 5. 运行结果 1. 添加依赖 <!-- springboot缓存--><dependency><groupId>org.springframework.boot</groupId>…...

<Linux> 基础IO

目录 一、C语言文件IO 1. 基础认知 2. stdin、stdout、stderr 3. 文件接口汇总 4. 文件写入 5. 文件读取 6. 标志位传递 7. 总结 二、系统文件IO 1. 文件系统调用open 1.1 pathname &#xff1a; 1.2 flags &#xff1a; 1.3 mode&#xff1a; 1.4 open函数返回值&#xff1a;…...

OpenFeign的使用(一)

OpenFeign的定义 OpenFeign是一个声明式的Web服务客户端&#xff0c;它简化了编写Web服务客户端的过程&#xff0c;使得微服务间的通信更加简单和灵活。它主要作用于帮助开发者方便地调用远程服务&#xff0c;让远程调用像本地方法调用一样简单。 事实上&#xff0c;远程调用的…...

【Python报错已解决】`AttributeError: move_to requires a WebElement`

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 引言&#xff1a;一、问题描述&#xff1a;1.1 报错示例&#xff1a;1.2 报错分析&#xff1a;1.3 解决思路&#xff…...

数据结构(邓俊辉)学习笔记】排序 2——快速排序:性能分析

文章目录 1. 不稳定 就地2. 最好情况 最坏情况3.平均情况 1. 不稳定 就地 以下针对刚才所给出的快速排序算法的第一个版本&#xff0c;就其性能做一分析。 首先很遗憾地发现&#xff0c;这个算法是不稳定的。快速排序算法的不稳定性通过我们刚才所举的那个实例可以清楚地看…...

在postman中使用javascript脚本生成sign签名

大多数线上api接口服务都需要提供签名才可以正常访问。虽然带来了安全&#xff0c;单有时为了快速验证接口的某个功能&#xff0c;就不得不编写代码&#xff0c;计算签名然后再请求。那么&#xff0c;使用postman提供的script功能&#xff0c;是否能实现签名计算功能吗&#xf…...

设计模式—2—单例模式

文章目录 一、单例模式概述二、单例模式特点三、示例3.1、基本实现&#xff08;懒汉式-线程不安全&#xff09;3.2、基本实现&#xff08;懒汉式-线程安全&#xff09;3.3、基本实现&#xff08;饿汉式&#xff09; 四、总结 一、单例模式概述 单例模式&#xff08;Singleton …...

服务器数据恢复—磁盘坏扇区导致raid6阵列崩溃的数据恢复案例

服务器存储数据恢复环境&#xff1a; 一台存储中有一组由12块SAS硬盘组建的raid6磁盘阵列&#xff0c;划分了1个卷&#xff0c;由数台Vmware ESXI主机共享存储。卷中存放了大量的Windows系统虚拟机。这些虚拟机系统盘大小一致&#xff0c;数据盘大小不确定&#xff0c;数据盘都…...

原码、反码、补码

目录 背景: 1.原码 举例: 2.反码&#xff1a; 举例 : 3.补码&#xff1a; 举例&#xff1a; 背景: 在计算机科学中&#xff0c;原码、反码和补码是三种用于表示有符号整数&#xff08;即包含正负数&#xff09; 的二进制编码方式。它们各自有其独特的定义和用途&#x…...

Stegsnow使用教程

Stegsnow是一款轻量级的隐写术工具&#xff0c;专门用于在文本文件中隐藏秘密信息。其核心原理是利用文本文件中的”空白字符”&#xff08;如空格、制表符、换行符&#xff09;存储二进制数据&#xff0c;通过调整这些不可见字符的组合来编码秘密信息&#xff0c;从而实现隐蔽…...

Hunyuan-MT Pro快速上手:添加语音输入/输出模块(Whisper+VITS)扩展方案

Hunyuan-MT Pro快速上手&#xff1a;添加语音输入/输出模块&#xff08;WhisperVITS&#xff09;扩展方案 1. 项目概述与扩展价值 Hunyuan-MT Pro是一个基于腾讯混元大模型的多语言翻译终端&#xff0c;原本专注于文本翻译。但实际使用中&#xff0c;我们经常遇到这样的场景&…...

国内网络环境下,用Docker打包Dify API镜像的保姆级提速指南(附完整配置流程)

国内开发者高效构建Dify API镜像的实战指南 最近在帮团队搭建Dify本地开发环境时&#xff0c;发现镜像构建过程频繁因网络问题中断。每次重试都要从零开始下载依赖&#xff0c;浪费大量时间。经过多次实践&#xff0c;我总结出一套适合国内网络环境的完整优化方案&#xff0c;将…...

嵌入式Linux牛棚养殖监护系统开发实战

1. 项目概述作为一名在嵌入式系统开发领域摸爬滚打多年的工程师&#xff0c;我最近完成了一个很有意思的实战项目——基于嵌入式Linux的牛棚养殖监护系统。这个项目完美结合了嵌入式开发、传感器技术和Qt界面设计&#xff0c;实现了对养殖环境的智能化管理。不同于市面上那些简…...

OpenClaw代码审查助手:Qwen2.5-VL-7B生成带示意图的代码优化建议

OpenClaw代码审查助手&#xff1a;Qwen2.5-VL-7B生成带示意图的代码优化建议 1. 为什么需要AI代码审查助手 作为开发者&#xff0c;我每天都要面对大量的代码审查工作。传统的人工CR&#xff08;Code Review&#xff09;过程往往耗时费力&#xff0c;尤其是当项目规模扩大后&…...

深入解析Paddle GPU版本Segmentation fault报错及环境变量配置方案

1. 为什么Paddle GPU版本会突然报Segmentation fault&#xff1f; 最近在Linux系统上部署PaddlePaddle GPU版本时&#xff0c;不少开发者都遇到了一个让人头疼的问题——程序运行到一半突然崩溃&#xff0c;终端只留下一行冷冰冰的"Segmentation fault (core dumped)"…...

STM32启动模式详解与实战指南

1. STM32启动过程概述作为一名嵌入式开发工程师&#xff0c;理解STM32的启动过程是基本功。很多初学者在使用STM32时&#xff0c;往往只关注main函数中的代码&#xff0c;却忽略了芯片上电后到执行main函数之前发生了什么。实际上&#xff0c;从按下复位键到程序开始运行&#…...

深入理解ThreadLocal:为什么Entry的Key必须是弱引用?

前言 ThreadLocal是Java并发编程中一个非常重要的工具类&#xff0c;它能为每个线程维护独立的变量副本。但很多开发者对它的理解停留在“每个线程有自己的变量副本”这个层面&#xff0c;对于其内部实现细节&#xff0c;尤其是Entry的Key为什么设计成弱引用&#xff0c;往往一…...

活字格低代码:让业务流程设计从 “图纸” 到 “落地” 零 IT 转译

在技术领域&#xff0c;我们常常被那些闪耀的、可见的成果所吸引。今天&#xff0c;这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力&#xff0c;让我们得以一窥未来的轮廓。然而&#xff0c;作为在企业一线构建、部署和维护复杂系统的实践者&#xff0c;我们深知…...

2026 AI行业封神之年:国产模型反超海外,AI短剧/视频/编程三大赛道掘金指南

2026年,AI行业正式迈入工业化落地的关键拐点,不再是技术圈的自嗨,而是全面渗透进写作、设计、影视、开发的各行各业。想抓住这波时代红利,又不想在数十个平台间反复横跳?https://n.kulaai.cn 给出了最优解——这个一站式AI模型聚合平台,直接把ChatGPT、Claude、Gemini、D…...