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

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、创建型模式 这些模式主要关注对象的创建过程,提供了不同的方式来创建对象&#xff0c…...

力扣每日一题打卡 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等)之间的相互转换&#xff…...

[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] 文文的构造游戏 - 洛谷 运行代码&#xff08;暴力枚举&#xff09;——超时 #include <stdio.h> #define ll long long const int N 1e6 5; // 计算数组元素的异或和 ll xorSum(ll arr[], int n) {l…...

双击热备和负载均衡的区别

区别&#xff1a; 双机热备 (heartbeat)&#xff1a;对同一应用来讲&#xff0c;永远是主机应用启动&#xff0c;备机应用停止的一主一备模式(两台通常叫双击热备&#xff0c;多台称为高可用) 负载均衡&#xff1a;两台/多台服务器 上同一个应用系统同时工作&#xff0c;分担负…...

如何使用 cPanel 部署 WordPress临时网站

对于依赖WordPress站点或WooCommerce商店的企业来说&#xff0c;在生产环境中直接修改站点风险很大。而WordPress的临时网站是一个更安全的选择&#xff0c;可以通过使用临时网站进行编辑来规避风险。 在本文中&#xff0c;我们将详细介绍WordPress临时网站的相关知识、使用临时…...

Android 自定义 Dialog 实现列表 单选,多选,搜索

前言 在Android开发中&#xff0c;通过对话框让用户选择&#xff0c;筛选信息是很方便也很常见的操作。本文详细介绍了如何使用自定义 Dialog、RecyclerView 以及自定义搜索框 来实现选中状态和用户交互&#xff0c;文中大本分代码都有明确注释&#xff0c;主打一个简单明了&a…...

下载地址合辑(持续更新)

下载地址合辑 汇总OSG相关地址Visual Studio Qt 地址qt插件安装失败 Boost库boost库编译步骤 FFmpeg 地址osg编译库 常用的下载地址&#xff1a; 汇总 vlc 地址&#xff1a; https://www.videolan.org/vlc/index.zh_CN.html visual 地址&#xff1a;https://my.visualstudio.…...

Android Kotlin 高阶函数详解及其在协程中的应用

文章目录 1. 引言2. 什么是高阶函数&#xff1f;3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda 表达式3.3 匿名函数3.4 返回函数 4. 高阶函数的深入用法4.1 函数组合4.2 内联函数4.3 高阶扩展函数 5. Kotlin 高阶函数的对比优势5.1 与 Java 的对比5.2 与 JavaScript 的…...

CSS基础—网页布局(重点!)

1、两列布局 &#xff08;1&#xff09;概念 经典两列布局是指一种网页布局方式&#xff0c;其中一列宽度固定&#xff0c;另一列宽度自适应。‌ 这种布局方式在网页设计中非常常见&#xff0c;因为它能够提供良好的视觉效果和用户体验。 如图所示&#xff1a; 页面顶部放置一…...

【Fargo】17:vs工程转qt构建:QT6 不支持32bit转向qt5.15.2

vs2022的console 工程加入qt支持后使用qt15.2 的vs2019 库,变为一个qt界面程序。最终效果 一些参考 qt5的项目搭建 qt5 最多支持到vs2019 qt6 最新 已经支持vs2022 国内还是以qt5.15为主 升级qt的vstools...

​智能电表蓝牙芯片方案

RAMSUN基于自研射频技术和基带算法提供蓝牙MCU。蓝牙MCU配套成熟的网络协议栈和丰富的示例代码及多平台APP工具。部分芯片型号无需二次开发&#xff0c;即连即用&#xff1b;提供特色蓝牙/串口/USB三通芯片&#xff0c;为更多复杂无线应用赋能。 应用案例说明: BLE方便用户直接…...

miRNA分析流程学习(一)/TCGAmiRNA数据下载

miRNA&#xff08;microRNA&#xff09; 是一种小的非编码 RNA 分子&#xff0c;通常由 20 到 24 个核苷酸组成。miRNA 主要存在于动植物中&#xff0c;并在基因表达调控中起到关键作用。它们通过与特定的信使 RNA&#xff08;mRNA&#xff09;分子结合来抑制基因表达&#xff…...

西南大学软件专硕考研难度分析!

C哥专业提供——计软考研院校选择分析专业课备考指南规划 西南大学软件工程学硕近三年呈现出招生规模稳定、复试线稳中有升的特点。2024届实际录取8人&#xff0c;复试分数线305分&#xff0c;复试录取率67%&#xff0c;相比去年复试线略有下降但仍高于2022届&#xff0c;显示出…...

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-21

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-21 目录 文章目录 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-21目录1. The Fair Language Model Paradox摘要研究背景问题与挑战如何解决创新点算法模型实验效果重要数据与结论推荐阅读指数&…...

安全芯片 OPTIGA TRUST M 使用介绍与示例(基于STM32裸机)

文章目录 目的资料索引硬件电路软件框架介绍数据存储框架移植框架使用 使用示例示例地址与硬件连接通讯测试功能测试 总结 目的 OPTIGA TRUST M 是英飞凌推出的安全芯片&#xff0c;芯片通提供了很多 slot &#xff0c;用于存放各类安全证书、密钥、用户数据等&#xff0c;内置…...

【AI换装整合及教程】CatVTON:时尚与科技的完美融合

在当今数字化时代&#xff0c;时尚行业正经历着一场前所未有的变革&#xff0c;而 CatVTON 作为一款由中山大学、Pixocial 等机构联合研发的轻量化 AI 虚拟换装工具&#xff0c;无疑是这场变革中的璀璨明星。 一、独特的技术架构 CatVTON 基于 Stable Diffusion v1.5 inpainit…...

个人介绍网页模板免费下载/绍兴百度seo

在Ext的使用过程中&#xff0c;偶然发现了一个有趣的问题&#xff0c; 和大家共享一下。 先看如下代码&#xff1a;// 定义一个基类&#xff0c; 一个数组成员arr&#xff0c;和一个空函数init var BaseClass Ext.extend(Ext.util.Observable, {arr: [],init: Ext.emptyFn });…...

找建筑网站/互联网推广好做吗

传送门...

大型网站频道的建设需多人协同开发/湖南企业竞价优化

文件 templets\style\dedecms.css &#xff08;行 98&#xff09; 把.header这个class的 width:100%改成960px; 增加margin:0 auto; 以下是修改好的 .header{ margin:0 auto; width:960px; padding-top:16px; overflow:hidden; }...

免费空间分享/百度seo排名查询

转载 https://blog.csdn.net/liangdaojun/article/details/97784967 安装 如果不想安装 Anaconda&#xff0c;可以跳过这一步。因为现在深度学习库更新的比较频繁&#xff0c;对于同一个库&#xff0c;我们有可能使用多个版本&#xff0c;比如tensorflow-gpu1.0.0 , …, tensor…...

网站要什么软件做/中国十大互联网公司排名

数据类型 整数类型&#xff1a;有bit、int、smallint、tinyint 和bigint; 数值类型有decimal、numeric、money、smallmoney 、float 和real&#xff1b; 字符类型&#xff1a;有char、varchar、text、nchar、nvarchar和ntext&#xff1b; 日期时间类型&#xff1a;有datetime、…...

如何做楼盘网站/全媒体运营师报考条件

如何在method属性里指定重载方法中的某一个&#xff1f; 转载于:https://www.cnblogs.com/darknessplus/p/10109840.html...