linux文件系统
文章平均质量分 87
狂奔的蜗牛Alex
这个作者很懒,什么都没留下…
展开
-
用户空间与内核空间数据交换的方式(5)------内核启动参数
Linux 提供了一种通过 bootloader 向其传输启动参数的功能,内核开发者可以通过这种方式来向内核传输数据,从而控制内核启动行为。 通常的使用方式是,定义一个分析参数的函数,而后使用内核提供的宏 __setup把它注册到内核中,该宏定义在 linux/init.h 中,因此要使用它必须包含该头文件: __setup(\"para_name=\", parse_func) para原创 2012-08-21 13:58:03 · 427 阅读 · 0 评论 -
用户空间与内核空间数据交换的方式(8)------syscall
系统调用是内核提供给应用程序的接口,应用对底层硬件的操作大部分都是通过调用系统调用来完成的,例如得到和设置系统时间,就需要分别调用 gettimeofday 和 settimeofday 来实现。事实上,所有的系统调用都涉及到内核与应用之间的数据交换,如文件系统操作函数 read 和 write,设置和读取网络协议栈的 setsockopt 和 getsockopt。本节并不是讲解如何增加新的系统原创 2012-08-21 13:58:03 · 722 阅读 · 0 评论 -
用户空间与内核空间数据交换的方式(7)------sysctl
sysctl是一种用户应用来设置和获得运行时内核的配置参数的一种有效方式,通过这种方式,用户应用可以在内核运行的任何时刻来改变内核的配置参数,也可以在任何时候获得内核的配置参数,通常,内核的这些配置参数也出现在proc文件系统的/proc/sys目录下,用户应用可以直接通过这个目录下的文件来实现内核配置的读写操作,例如,用户可以通过 cat /proc/sys/net/ipv4/ip_forwa原创 2012-08-21 13:58:03 · 509 阅读 · 0 评论 -
用户空间与内核空间数据交换的方式(6)------模块参数与sysfs
内核子系统或设备驱动可以直接编译到内核,也可以编译成模块,如果编译到内核,可以使用前一节介绍的方法通过内核启动参数来向它们传递参数,如果编译成模块,则可以通过命令行在插入模块时传递参数,或者在运行时,通过sysfs来设置或读取模块数据。 Sysfs是一个基于内存的文件系统,实际上它基于ramfs,sysfs提供了一种把内核数据结构、它们的属性以及属性与数据结构的联系开放给用户态的方式,它与kob原创 2012-08-21 13:58:03 · 441 阅读 · 0 评论 -
用户空间与内核空间数据交换的方式(4)------relayfs
relayfs是一个快速的转发(relay)数据的文件系统,它以其功能而得名。它为那些需要从内核空间转发大量数据到用户空间的工具和应用提供了快速有效的转发机制。 Channel是relayfs文件系统定义的一个主要概念,每一个channel由一组内核缓存组成,每一个CPU有一个对应于该channel 的内核缓存,每一个内核缓存用一个在relayfs文件系统中的文件文件表示,内核使用relayfs原创 2012-08-21 13:58:03 · 507 阅读 · 0 评论 -
用户空间与内核空间数据交换的方式(3)------seq_file
一般地,内核通过在procfs文件系统下建立文件来向用户空间提供输出信息,用户空间可以通过任何文本阅读应用查看该文件信息,但是procfs 有一个缺陷,如果输出内容大于1个内存页,需要多次读,因此处理起来很难,另外,如果输出太大,速度比较慢,有时会出现一些意想不到的情况, Alexander Viro实现了一套新的功能,使得内核输出大文件信息更容易,该功能出现在2.4.15(包括2.4.15)以后原创 2012-08-21 13:58:03 · 496 阅读 · 0 评论 -
用户空间与内核空间数据交换的方式(2)------procfs
procfs是比较老的一种用户态与内核态的数据交换方式,内核的很多数据都是通过这种方式出口给用户的,内核的很多参数也是通过这种方式来让用户方便设置的。除了sysctl出口到/proc下的参数,procfs提供的大部分内核参数是只读的。实际上,很多应用严重地依赖于procfs,因此它几乎是必不可少的组件。本节将讲解如何使用procfs。Procfs提供了如下API: struct proc原创 2012-08-21 13:58:03 · 450 阅读 · 0 评论 -
用户空间与内核空间数据交换的方式(1)------debugfs
内核开发者经常需要向用户空间应用输出一些调试信息,在稳定的系统中可能根本不需要这些调试信息,但是在开发过程中,为了搞清楚内核的行为,调试信息非常必要,printk可能是用的最多的,但它并不是最好的,调试信息只是在开发中用于调试,而printk将一直输出,因此开发完毕后需要清除不必要 的printk语句,另外如果开发者希望用户空间应用能够改变内核行为时,printk就无法实现。因此,需要一种新的机制原创 2012-08-21 13:58:03 · 475 阅读 · 0 评论 -
读取proc文件之seq_file
kernel module编程(八):读取proc文件之seq_file 在上次我们使用了read_proc的方式通过/proc文件读取kernel module的信息。作者给的例子他自己说是ugly。而我们在读取大量数据时发现,受到用户buffer大小的限制(page的大小),可能需要读取多次,不仅需要记录上次读取的位置,而且由于每次读取我们申请了信号量,读取完释放,那么如果多次读取的间原创 2012-08-21 13:58:03 · 1042 阅读 · 0 评论 -
Seq_file文件系统实例剖析
Seq_file File System针对proc文件的不足而诞生了Seq_file。Seq_file的实现基于proc文件。使用Seq_file,用户必须抽象出一个链接对象,然后可以依次遍历这个链接对象。这个链接对象可以是链表,数组,哈希表等等。编程接口Seq_file必须实现四个操作函数:start(), next(), show(), stop()。 struct seq_o原创 2012-08-21 13:58:03 · 548 阅读 · 0 评论 -
proc相关操作
一、数据结构/proc下每个文件对应下面一个数据结构struct proc_dir_entry { unsigned int low_ino; unsigned short namelen; const char *name; mode_t mode; nlink_t nlink; uid_t uid; gid_t gid; loff_t size;原创 2012-08-21 13:58:03 · 462 阅读 · 0 评论 -
tftp: server says: File not found解决办法
在linux下,不管使用的是哪一种super-server,inetd或者xinetd,默认情况下TFTP服务是禁用的,所以要修改文件来开启服务。 根据(1)的安装方法,可以修改文件/etc/xinetd.d/tftp。主要是设置TFTP服务器的根目录,开启服务。修改后的文件如下: service tftp { socket_type =dgram原创 2012-08-21 13:58:02 · 8002 阅读 · 0 评论 -
深入理解linux i节点(inode)
转载请注明出处,本文来自:http://blog.csdn.net/feiyinzilgd/article/details/5609157 对于Unix系列的操作系统,大多都有v节点。但是对于linux来说,只有通用的i节点,却没有v节点。 下面来探讨一下,linux下的i节点。 linux中,文件查找不是通过文件名称来查找的。实际上是通过i节点来实现文件的查找定原创 2012-08-21 13:58:02 · 332 阅读 · 0 评论 -
用户空间与内核空间数据交换的方式(9)------netlink
Netlink 是一种特殊的 socket,它是 Linux 所特有的,类似于 BSD 中的AF_ROUTE 但又远比它的功能强大,目前在最新的 Linux 内核(2.6.14)中使用netlink 进行应用与内核通信的应用很多,包括:路由 daemon(NETLINK_ROUTE),1-wire 子系统(NETLINK_W1),用户态 socket 协议(NETLINK_USERSOCK),防火原创 2012-08-21 13:58:04 · 553 阅读 · 0 评论 -
sysfs接口函数的建立_DEVICE_ATTR
说道sysfs接口,就不得不提到函数宏 DEVICE_ATTR,原型是 #define DEVICE_ATTR(_name, _mode, _show, _store) \\ struct device_attribute dev_attr_##_name = __ATTR(_name, _mode, _show, _store) 函数宏DEVICE_ATTR内封装的是__ATTR(_nam原创 2012-08-21 13:58:03 · 391 阅读 · 0 评论 -
Linux flash 文件系统剖析【转】
简介: 您之前可能听说过 Journaling Flash File System(JFFS)和 Yet Another Flash File System(YAFFS),但是您知道使用底层 flash 设备的文件系统意味着什么吗?本文将向您介绍 Linux 的 flash 文件系统,并探索它们如何通过平均读写(wear leveling)处理底层的可消耗设备(flash 部件),并鉴别各种不同的原创 2012-08-21 13:58:05 · 830 阅读 · 0 评论