linux 驱动, struct file , struct node, private_data
首先是关于什么是 praviate_data :
来看看正点原子是怎么使用的。

网上找的一些资料:

总结一下:
1 私有数据 是 struct file特有的。
2private_data 可以自己随便设置。
3 一般是在 open 函数中设置好,然后在 read, write 函数中使用。
4 private_data 一般是设置的 cdev, 以及 dev_t 结构体。
然后是 struct file 与 strcut node 的联系。
网上的资料: 这个文章总结的非常好。可以看到 struct file 与 struct node 是两条线。

然后是 struct file
先来看看网上的截图:

然后是 关于char_dev 的描述。

主设备号最大是 255 就是这么来的。


然后是关于cdev 的介绍。

然后是 struct node

疑问: 那么问题来了,到底,什么是字符设备呢?是为了解决什么问题呢?又懵逼了。
关于inode 的内容。
struct inode { struct hlist_node i_hash; struct list_head i_list; struct list_head i_sb_list; struct list_head i_dentry; unsigned long i_ino; atomic_t i_count; unsigned int i_nlink; uid_t i_uid;//inode拥有者id gid_t i_gid;//inode所属群组id dev_t i_rdev;//若是设备文件,表示记录设备的设备号 u64 i_version; loff_t i_size;//inode所代表大少
#ifdef __NEED_I_SIZE_ORDERED seqcount_t i_size_seqcount;
#endif struct timespec i_atime;//inode最近一次的存取时间 struct timespec i_mtime;//inode最近一次修改时间 struct timespec i_ctime;//inode的生成时间 unsigned int i_blkbits; blkcnt_t i_blocks; unsigned short i_bytes; umode_t i_mode; spinlock_t i_lock; struct mutex i_mutex; struct rw_semaphore i_alloc_sem; const struct inode_operations *i_op; const struct file_operations *i_fop; struct super_block *i_sb; struct file_lock *i_flock; struct address_space *i_mapping; struct address_space i_data;
#ifdef CONFIG_QUOTA struct dquot *i_dquot[MAXQUOTAS];
#endif struct list_head i_devices; union { struct pipe_inode_info *i_pipe; struct block_device *i_bdev; struct cdev *i_cdev;//若是字符设备,对应的为cdev结构 };
}; struct inode{...}

然后是是 文件系统对于 cdev 的访问, 这个我不是很理解,先复制过来。


相关文章:
linux 驱动, struct file , struct node, private_data
首先是关于什么是 praviate_data : 来看看正点原子是怎么使用的。 网上找的一些资料: 总结一下: 1 私有数据 是 struct file特有的。 2private_data 可以自己随便设置。 3 一般是在 open 函数中设置好,然后在 read, write 函…...
ubuntu 硬盘扩容
在 Linux 中,可以使用以下命令查看磁盘的使用情况和信息: 查看磁盘使用情况: df -h这个命令会显示所有文件系统的使用情况,以人类可读的格式(例如 GB 或 MB)。 查看磁盘分区和设备信息: lsblk这…...
cm211-1刷机教程镜像包
cm211-1刷机教程 包含镜像包酷看桌面 s905l3-l3b通用 镜像包:https://www.123684.com/s/WGAwjv-5tlv3 1.刷机教程 镜像为线刷镜像包,需要短接刷机 短接刷机,导入镜像包 开始即可。到100%就证明可以了。...
Android 15自定义设置导航栏与状态栏,EdgeToEdge适配
背景:android api 35,activity设置EdgeToEdge.enable((ComponentActivity) this)前提下 一、设置导航栏与状态栏颜色 设置的状态栏颜色,只需要设置fitsSystemWindows跟setOnApplyWindowInsetsListener xml设置: 代码:…...
设计模式概览
设计模式是一种在软件设计中被广泛使用的解决方案,旨在提高软件的可重用性、可维护性和可扩展性。设计模式可以分为三大类:创建型、结构型和行为型。 1、创建型模式 这些模式主要关注对象的创建过程,提供了不同的方式来创建对象,…...
力扣每日一题打卡 684. 冗余连接
树可以看成是一个连通且 无环 的 无向 图。 给定往一棵 n 个节点 (节点值 1~n) 的树中添加一条边后的图。添加的边的两个顶点包含在 1 到 n 中间,且这条附加的边不属于树中已存在的边。图的信息记录于长度为 n 的二维数组 edges ,edges[i] …...
什么是微服务中的反应性扩展?
大家好,我是锋哥。今天分享关于【什么是微服务中的反应性扩展?】面试题?希望对大家有帮助; 什么是微服务中的反应性扩展? Reactive Extensions 也称为 Rx。这是一种设计方法,我们通过调用多个服务来收集结果…...
【MyBatis】MyBatis-config标签详解
目录 MyBatis配置文件标签详解configuration标签properties标签typeAliases标签environments标签environment标签transactionManager标签dataSource标签mappers标签 MyBatis配置文件标签详解 我们在使用MyBatis框架的时候需要一个配置文件——MyBatis-config.xml来告诉MyBatis…...
使用AVPlayer进行音频播放开发基础设计
在使用AvPlayer进行设计之前,需要获取相应对象,后期围绕该对象展开操作 const player await media.createAVPlayer() 然后对播放器进行初始化设置: player.on(stateChange, (state) > {switch (state) {case initialized:player.prepar…...
API网关的作用--为什么微服务需要一个API网关?
微服务网关核心作用就是协议转换、安全隔离和流量控制 微服务架构中,API网关作为系统的入口点,可以统一处理所有客户端请求。 1)协议转换:它能够支持多种通信协议(如HTTP、gRPC等)之间的相互转换ÿ…...
[0154].第5节:IDEA中创建Java Web工程
我的后端学习大纲 IDEA大纲 1.1.IDEA中配置Tomcat: 1.找打setting: 2.配置Tomcat Server的位置: 3.这里配置Tomcat的名称以及配置应用服务器的位置。根据自己Tomcat的安装位置决定 4.配置好后,如下图所示 1.2.创建Web工程: 1.建…...
React03 组件 Props
组件 & Props React 组件函数( Function )组件类( Class )组件 Props将 props 传递给子组件在子组件中读取 props给 prop 指定一个默认值使用 JSX 展开语法传递 props React 组件 组件本质上就是类和函数,但是与常…...
多线程——线程安全的集合类
目录 前言 一、多线程环境使用 ArrayList 1.进行加锁 2.使用 SynchronizedList 类 3.使用 CopyOnWriteArrayList 类 二、多线程环境使用队列 1.进行加锁 2.使用阻塞队列 三、多线程环境使用哈希表 1.Hashtable 2.ConcurrentHashMap (1)缩小锁…...
自动化数据库管理:如何通过存储过程动态创建 MySQL 对象
在当今数据驱动的世界中,高效的数据库管理至关重要。本文将展示如何通过存储过程自动化地创建各种 MySQL 数据库对象,包括数据表、视图、字段、索引、约束、存储过程、定时器和事件。通过这些方法,我们可以快速响应业务需求,提高数…...
480p 720p 1080p 2k 4k 8k 12k分辨率视频分别占用多大带宽?
技术背景 好多开发者,在设置视频编码参数的时候,对不同分辨率的带宽设置,缺乏相关的经验,实际上,视频分辨率与所需带宽之间的关系受到多个因素的影响,包括视频编码方式、帧率、视频内容的动态程度等。下面…...
unity中GameObject介绍
在 Unity 中,Cube和Sphere等基本几何体是 Unity 引擎的内置预制体(Prefabs),它们属于 Unity 中的GameObject 系统,可以在 Unity 的 Hierarchy 视图或 Scene 视图中右键点击,然后在弹出的菜单中选择 3D Obje…...
洛谷——P8468 [Aya Round 1 C] 文文的构造游戏(01构造问题)
P8468 [Aya Round 1 C] 文文的构造游戏 题目描述 [Aya Round 1 C] 文文的构造游戏 - 洛谷 运行代码(暴力枚举)——超时 #include <stdio.h> #define ll long long const int N 1e6 5; // 计算数组元素的异或和 ll xorSum(ll arr[], int n) {l…...
双击热备和负载均衡的区别
区别: 双机热备 (heartbeat):对同一应用来讲,永远是主机应用启动,备机应用停止的一主一备模式(两台通常叫双击热备,多台称为高可用) 负载均衡:两台/多台服务器 上同一个应用系统同时工作,分担负…...
如何使用 cPanel 部署 WordPress临时网站
对于依赖WordPress站点或WooCommerce商店的企业来说,在生产环境中直接修改站点风险很大。而WordPress的临时网站是一个更安全的选择,可以通过使用临时网站进行编辑来规避风险。 在本文中,我们将详细介绍WordPress临时网站的相关知识、使用临时…...
Android 自定义 Dialog 实现列表 单选,多选,搜索
前言 在Android开发中,通过对话框让用户选择,筛选信息是很方便也很常见的操作。本文详细介绍了如何使用自定义 Dialog、RecyclerView 以及自定义搜索框 来实现选中状态和用户交互,文中大本分代码都有明确注释,主打一个简单明了&a…...
Ubuntu 22.04 LTS 安装 NVIDIA 驱动保姆级教程:告别 Nouveau 报错,一步到位
Ubuntu 22.04 LTS 终极NVIDIA驱动安装指南:从原理到实战 刚接触Ubuntu的新手用户,在安装NVIDIA驱动时往往会遇到各种报错,尤其是经典的"Nouveau in use"错误。本文将带你深入理解驱动冲突的底层原理,并提供一套完整的解…...
开源免费Web搜索工具openclaw-free-web-search:原理、部署与实战调优
1. 项目概述:一个开源、免费的Web搜索工具最近在折腾一些需要实时信息查询的小项目,比如新闻聚合、舆情监控或者简单的市场调研,发现直接调用商业搜索引擎的API要么有调用限制,要么费用不菲。就在这个当口,我注意到了G…...
终极歌词同步体验:揭秘LyricsX如何让macOS音乐播放变得更有趣
终极歌词同步体验:揭秘LyricsX如何让macOS音乐播放变得更有趣 【免费下载链接】LyricsX 🎶 Ultimate lyrics app for macOS. 项目地址: https://gitcode.com/gh_mirrors/ly/LyricsX 你是否曾经在听歌时想要跟着歌词一起唱,却发现找不到…...
“Minwa不是滤镜,是语法”——20年数字艺术总监拆解其底层视觉语义树:从笔触熵值到文化编码层级的7阶解析模型
更多请点击: https://intelliparadigm.com 第一章:“Minwa不是滤镜,是语法”——一场视觉范式的认知升维 在传统图像处理语境中,“滤镜”常被理解为对像素的后置修饰层——一种不可逆、非结构化、依赖预设参数的视觉覆盖。Minwa …...
3步解决JavaScript精度问题:decimal.js高精度计算完整指南
3步解决JavaScript精度问题:decimal.js高精度计算完整指南 【免费下载链接】decimal.js An arbitrary-precision Decimal type for JavaScript 项目地址: https://gitcode.com/gh_mirrors/de/decimal.js 在JavaScript开发中,你是否经常遇到这样的…...
从2013年光网络市场增长看100G与分组化技术演进
1. 从一篇旧闻说起:2013年光网络市场的“中国引擎”最近在整理一些老资料,翻到了EE Times在2013年9月的一篇市场分析报道。标题很直白,叫“中国驱动基础设施增长”。报道的核心数据是,光分组平台市场(包含光分组传输、…...
从DICOM到NIfTI:3D Slicer中医学图像坐标转换的完整避坑指南(附Python代码片段)
从DICOM到NIfTI:3D Slicer中医学图像坐标转换的完整避坑指南(附Python代码片段) 医学影像处理中,数据格式和坐标系的差异常常成为工程师和研究员们的"隐形杀手"。想象一下,你花了三天三夜训练的深度学习模型…...
2025年英雄联盟国服内存级换肤技术深度解析:R3nzSkin架构设计与实现
2025年英雄联盟国服内存级换肤技术深度解析:R3nzSkin架构设计与实现 【免费下载链接】R3nzSkin-For-China-Server Skin changer for League of Legends (LOL) 项目地址: https://gitcode.com/gh_mirrors/r3/R3nzSkin-For-China-Server 你是否曾想过ÿ…...
从零开始将Taotoken接入现有Nodejs项目实践步骤
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 从零开始将Taotoken接入现有Nodejs项目实践步骤 1. 准备工作:获取API密钥与模型信息 在开始代码改造之前,…...
别让直觉带路:Infoseek视角下的噪音过滤与火情预警实战
在舆情的世界里,最可怕的不是对手太强大,而是自己吓自己。很多时候,企业之所以“翻车”,并非因为危机本身不可控,而是因为公关团队在面对网友吐槽时过度敏感,发布了不必要的声明或做出了过激反应࿰…...
