`
totoxian
  • 浏览: 1075012 次
  • 性别: Icon_minigender_2
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

对一个问题的解答

 
阅读更多

今天周日,陪老婆烫完头发回到家里,仍然不忘打开邮箱,一位朋友问了一个问题,说想用sysfs实现cdev,我觉得倒是没有什么不可,因为sysfs毕竟是一个内核和用户空间通信的接口,是个接口就可以被使用,我之所以敢打这个保票就是因为linux内核只提供机制而不提供任何策略,也就是说,只要你知道一个机制是内核和用户空间通信用的,那么你可以进行任何通信,内核机制丝毫不管你通信的内容,其实sysfs是向用户空间导出系统的设备信息的,但是这也仅仅是一个约定罢了,如果你非要用它来实际操作设备,那么linux内核绝对不会拦着你的,前提是只要你在上在下的代码符合它的接口约定即可,在上就是标准的文件接口,而在下就是sysfs的内核接口,也很简单,只管用。还是那句话:在linux中没有可不可以的问题,只有符合不符合约定的问题,没有对和错,只有好和不好。

问题:
写了一个简单的读写内存和外设寄存器的小模块... 用的是proc,很简单注册一个proc设备,提供读写函数就可以..应用层操作/proc/sysmem 设备文件..
这样的能用sysfs替换实现吗? 我看说proc是过时的了.但具体不知道怎么用sysfs来实现.用cdev?

我的回答:

procfs只是一个内核和用户空间通信的接口,原则上可以实现cdev的信息交换,但是如果你仅仅想实现在用户空间操作物理寄存器的话,那大可不必非要用cdev,正如你说的,在proc留下一个接口,实现read和write函数即可,如果你不想用procfs的话,你就要用标准的做法了,有两种方 式,第一种就是实现一个字符设备,实现它的file_operations,然后在/dev/下面按照主次设备号用mknod创建一个设备,最终你只需要 操作这个设备文件就可以了;第二种方式就是利用你说的sysfs接口,利用sysfs的目的是为了自动的将你的物理设备信息导向用户空间而不是为了读写寄 存器,这个方法下你就不用mknod手工建立设备了,而可以用用户空间的udevd守护进程自动依据sysfs的信息来创建设备了,最终你还是要操作你创 建的设备。
当然,直接用sysfs导出物理寄存器的信息或者直接用sysfs导出寄存器的读写接口,那倒也可以,但是不是标准的做法,实际上,不光sysfs,只要是用户空间和内核通信的机制你都可以利用,比如用netlink也可以,这个时候,你读写物理寄存器就变成读写一个netlink套接字了。
实际上sysfs只是一个系统信息导出文件系统,它的信息一般都是用户空间的守护进程用的,比如udev,这样的话可以让用户空间第一时间了解内核空间发 生的事件,不太赞成用sysfs直接导出个别的物理设备的完整信息,比如,你只要能通过sysfs得知物理设备已经就绪并且知道了它的设备号就可以了,真 正读写设备和操作设备还是要用标准的file_operations的vfs的方式,我想这也就是unix/linux中“一切皆文件”的意义。

分享到:
评论

相关推荐

    Midas-Gen常见问题解答.pdf

    "Midas-Gen常见问题解答" Midas-Gen是一种建筑结构通用有限元分析与设计软件,主要解决问题包括定位问题、导入问题、建模问题、荷载问题、分析设计问题等。下面将对这些问题进行详细的解释和分析。 定位问题 ...

    上市公司执行企业会计准则监管问题解答合集.pdf

    在上市公司执行企业会计准则的过程中,监管机构对一系列问题提供了详细的解答。这些解答涉及到多个关键的会计处理和报告方面,对于理解和遵守会计准则至关重要。 1. **稀释每股收益的计算**:当存在稀释性潜在普通...

    ADI锁相环常见问题解答.pdf

    本文档《ADI锁相环常见问题解答.pdf》针对ADI公司锁相环产品的技术原理、主要技术指标、应用中的常见问题、调试步骤以及如何为特定设计选择合适的PLL芯片提供了深入的解答和建议。 锁相环主要由相位检测器、低通...

    算法分析 课后问题解答

    《算法分析 课后问题解答》是对编程珠玑一书中的各章节进行深入解析和问题解答的资料集合。这份资源涵盖了从第一章到第十五章,包括附录C在内的多个重要主题,旨在帮助读者通过实际问题的分析来深化对算法的理解。 ...

    博士数学论坛高等代数问题解答整理.pdf

    例如,在例3.1中,通过对行列式的第二、三、四列进行适当的乘法和加法操作,将问题转化为证明另一个行列式能够被9整除,这种方法在解决行列式问题时非常常见和有效。 2. 多项式与行列式的计算:文档中的例3.2展示了...

    Candence 16.3/16.6 PCB各种疑难问题解答

    开头还有对整体PCB设计提供整体概念,各名词解释,对初学者或者入门的PCB设计者绝对是一个很好的参考文章,本文通篇每个问题都有图片+文字说明,不跳步,针对现在很多文章写的一些文章经常跳步说明,说了很好补充。...

    [20160808]-关于发布《挂牌公司股票发行常见问题解答(三)——募集资金管理、认购协议中特殊条款、特殊类型挂牌公司融资》的

    全国中小企业股份转让系统,通常被称为新三板,发布了一份重要的通知,即《挂牌公司股票发行常见问题解答(三)——募集资金管理、认购协议中特殊条款、特殊类型挂牌公司融资》。这份公告旨在规范在新三板上市的公司...

    信息论基础问题解答

    6. 数据压缩(Data Compression):信息论中的一个分支,研究如何有效地对信息进行编码,以减少存储或传输所必需的比特数。 7. 信道容量(Channel Capacity):信道可以传输信息的最大速率,由香农定理给出的公式...

    concept常见问题解答

    《Concept常见问题解答》 本文主要针对施耐德的Concept编程软件及其相关产品提出的一系列常见问题进行了解答,涵盖了软件版本差异、网络模板应用、系统状态获取等多个方面。以下是对这些问题的详细解析: 1. **...

    《环境影响评价技术导则 大气环境》(HJ 2.2-2018)常见问题及解答.pdf.pdf

    《环境影响评价技术导则 大气环境》(HJ 2.2-2018)是中华人民共和国环境保护行业...由于环境影响评价是一个复杂的过程,涉及多个领域的知识,因此在实际工作中需要根据项目具体情况和相关法律法规进行综合判断和处理。

    loadrunner入门问题227个解答

    《LoadRunner入门问题227个解答》是一个针对LoadRunner初学者的实用参考资料,它包含了大量关于LoadRunner的基础知识和常见...通过阅读这227个问题及其解答,你将对LoadRunner有更深入的理解,并能应对各种测试挑战。

    利用ChatGPT进行智能法律问题解答的技术挑战.docx

    本文将对 ChatGPT 在智能法律问题解答中的技术挑战进行总结和分析。 一、数据获取和标注的挑战 利用 ChatGPT 进行智能法律问题解答需要大量的法律领域数据,但获取足够的数据并进行标注是一项相当困难的任务。数据...

    工科用数学分析问题解答

    6. **泛函分析**:这是数学分析的一个分支,研究函数空间的性质。在工程优化问题、控制系统理论中,泛函分析方法经常被采用。 7. **偏微分方程**:当涉及到多个变量的动态问题时,偏微分方程就会出现。例如,电磁场...

    经典电动力学部分问题解答(John+David+Jackson

    "经典电动力学部分问题解答"是针对该书中的习题和概念难点进行的解答集,旨在帮助读者更好地理解和应用电动力学的原理。 电动力学是物理学的一个分支,主要研究电荷之间的相互作用以及它们与电磁场的关系。这个领域...

    RFPA软件常见问题与解答

    - **问题:** 如何在RFPA2D-Basic中创建一个简单的二维模型? - **解答:** 首先,在主界面上选择“新建项目”,然后根据向导提示设置模型的基本属性(如尺寸、网格类型等)。接着添加材料属性,并定义边界条件。最后...

    PCB板基础知识问题解答

    ### PCB板基础知识问题解答 #### 一、导电带宽度的重要性 **问题**: 在小信号电路中一段很短的铜线所具有的电阻一定不重要吧? **解答**: 在PCB设计中,导电带(即走线)的宽度对于信号质量和电路性能有着不可忽视...

    SEP12.1常见问题解答

    文档接下来介绍的是 SEP12.1 的常见问题解答部分,该部分按照安装和升级、防护技术、管理和使用、虚拟化四个方面分别进行阐述。 #### 第一部分:安装和升级常见问题 关于安装和升级方面,文档指出支持的管理服务器...

    BAT常见的面试问题及其解答

    解答:这个问题的解法与普通台阶问题类似,但可以直接通过公式F(n)=2*F(n-1)得出,因为它每次跳跃都可以选择1级到n级。 3. **矩形覆盖问题** 题目描述:用2x1的小矩形无重叠覆盖2n的大矩形,求解有多少种方法。 ...

Global site tag (gtag.js) - Google Analytics