
Unix/Linux
文章平均质量分 84
Slancer
这个作者很懒,什么都没留下…
展开
-
高级Linux安全管理技巧?
由于Linux操作系统是一个开放源代码的免费操作系统,因此受到越来越多用户的欢迎。随着Linux操作系统在我国的不断普及,有关的政府部门更是将基于Linux开发具有自主版权的操作系统提高到保卫国家信息安全的高度来看待,因此我们不难预测今后Linux操作系统在我国将得到更快更大的发展。虽然Linux与UNIX很类似,但它们之间也有一些重要的差别。对于众多的习惯了UNIX和WindowsNT的系统管转载 2007-07-14 23:15:00 · 758 阅读 · 0 评论 -
Linux设备驱动程序学习(15)
热插拔有 2 个不同角度来看待热插拔: 从内核角度看,热插拔是在硬件、内核和内核驱动之间的交互。 从用户角度看,热插拔是内核和用户空间之间,通过调用用户空间程序(如hotplug、udev 和 mdev)的交互。 当需要通知用户内核发生了某种热插拔事件时,内核才调用这个用户空间程序。现在的计算机系统,要求 Linux 内核能够在硬件从系统中增删时,可靠稳定地运行。这就对设备驱动作者增加了压转载 2008-01-14 12:04:00 · 4839 阅读 · 0 评论 -
Linux设备驱动程序学习(13)
总线总线是处理器和一个或多个设备之间的通道,在设备模型中, 所有的设备都通过总线相连, 甚至是内部的虚拟"platform"总线。总线可以相互插入。设备模型展示了总线和它们所控制的设备之间的实际连接。在 Linux 设备模型中, 总线由 bus_type 结构表示, 定义在 : struct bus_t转载 2008-01-14 11:57:00 · 4748 阅读 · 1 评论 -
Linux设备驱动程序学习(9)-与硬件通信
在学习有关I/O总线的内容时,最好先看看相关的知识:从PC总线到ARM的内部总线 I/O 端口和 I/O 内存每种外设都是通过读写寄存器来进行控制。 I/O 寄存器和常规内存在进入这部分学习的时候,首先要理解一个概念:side effect,书中译为边际效应,第二版译为副作用。我觉得不管它是怎么被翻译的,都不可能精准表达原作者的意思,所以我个人认为记住side effect就转载 2008-01-14 11:49:00 · 5535 阅读 · 0 评论 -
Linux设备驱动程序学习(14)
通过一个设备在内核中生命周期的各个阶段,可以更好地理解Linux设备模型。我将通过分析lddbus和sculld的源码来了解Linux设备模型中各环节的整合。《LDD3》中的(PCI总线)各环节的整合这部分内容作为参考资料,因为嵌入式Linux比较少用到PCI总线。看这部分内容一定要先熟悉一下 lddbus 和 sculld 的源码。 一、lddbus模块:添加总线、导出总线设备和设备驱转载 2008-01-14 11:59:00 · 4830 阅读 · 0 评论 -
Linux设备驱动程序学习(3-补)
在学习到第十章 中断处理 时,其中的中断驱动的I/O需要使用缓冲区,我觉得与其自己实现一个缓冲区,不如利用内核已经写好的fifo。内核里有一个通用的循环缓冲区的实现在 。使用的数据结构如下: struct kfifo { unsigned char *buffer; /* 使用的缓冲区头指针转载 2008-01-14 11:53:00 · 4404 阅读 · 0 评论 -
Linux设备驱动程序学习(10)
度量时间差 时钟中断由系统定时硬件以周期性的间隔产生,这个间隔由内核根据 HZ 值来设定,HZ 是一个体系依赖的值,在 中定义或该文件包含的某个子平台相关文件中。作为通用的规则,即便如果知道 HZ 的值,在编程时应当不依赖这个特定值,而始终使用HZ。对于当前版本,我们应完全信任内核开发者,他们已经选择了最适合的HZ值,最好保持 HZ 的默认值。 对用户空间,内核HZ几乎完全隐藏,用户转载 2008-01-14 11:51:00 · 4985 阅读 · 0 评论 -
Linux设备驱动程序学习(8)-分配内存
内核为设备驱动提供了一个统一的内存管理接口,所以模块无需涉及分段和分页等问题。 我已经在第一个scull模块中使用了 kmalloc 和 kfree 来分配和释放内存空间。 kmalloc 函数内幕kmalloc 是一个功能强大且高速(除非被阻塞)的工具,所分配到的内存在物理内存中连续且保持原有的数据(不清零)。原型:转载 2008-01-14 11:47:00 · 4684 阅读 · 0 评论 -
Linux设备驱动程序学习(7)-内核的数据类型
由于前面的学习中有用到 第十一章 内核数据结构类型 的知识,所以我先看了。要点如下: 将linux 移植到新的体系结构时,开发者遇到的若干问题都与不正确的数据类型有关。坚持使用严格的数据类型和使用 -Wall -Wstrict-prototypes 进行编译可能避免大部分的 bug。内核数据使用的数据类型主要分为 3 个类型: 标准 C 语言类型、确定大小的类型和特定内核对象的类型。转载 2008-01-14 11:46:00 · 4553 阅读 · 0 评论 -
Linux设备驱动程序学习(6)
提供访问控制对于一个设备节点来的可靠性来说有时是至关重要的。这部分的内容只是在open和release方法上做些修改,增加一些检查机制既可。 独享设备最生硬的访问控制方式是只允许一个设备一次被一个进程打开(独享),这是一个设备驱动最简单的访问控制。实现十分简单,具体的代码看实验源码吧!模块程序链接:scullsingle.tar.gz模块测试程序链接:scullsingle-test.转载 2008-01-14 11:43:00 · 4597 阅读 · 0 评论 -
Linux设备驱动程序学习(5)
这一部分主要讨论:如果驱动程序无法立即满足请求,该如何响应?(65865346) 一、休眠进程被置为休眠,意味着它被标识为处于一个特殊的状态并且从调度器的运行队列中移走。这个进程将不被在任何 CPU 上调度,即将不会运行。 直到发生某些事情改变了那个状态。安全地进入休眠的两条规则:(1) 永远不要在原子上下文中进入休眠,即当驱动在持有一个自旋锁、seqlock或者 RCU转载 2008-01-14 11:41:00 · 5043 阅读 · 0 评论 -
Linux设备驱动程序学习(4)
一、ioctl大部分设备除了读写能力,还可进行超出简单的数据传输之外的操作,所以设备驱动也必须具备进行各种硬件控制操作的能力. 这些操作常常通过 ioctl 方法来支持,它有和用户空间版本不同的原型: int (*ioctl) (struct inode *inode, struct file *filp转载 2008-01-14 11:38:00 · 2150 阅读 · 0 评论 -
Linux设备驱动程序学习(3)-并发和竞态
一、并发及其管理竞态通常是作为对资源的共享访问结果而产生的。在设计自己的驱动程序时,第一个要记住的规则是:只要可能,就应该避免资源的共享。若没有并发访问,就不会有竞态。这种思想的最明显的应用是避免使用全局变量。但是,资源的共享是不可避免的 ,如硬件资源本质上就是共享、指针传递等等。资源共享的硬性规则:(1)在单个执行线程之外共享硬件或软件资源的任何时候,因为另外一个线程可能产生转载 2008-01-14 11:37:00 · 1235 阅读 · 0 评论 -
Linux设备驱动程序学习(2)-调试技术
一、内核中的调试支持在前面已经建议过:学习编写驱动程序要构建安装自己的内核(标准主线内核)。最重要的原因之一是:内核开发者已经建立了多项用于调试的功能。但是由于这些功能会造成额外的输出,并导致能下降,因此发行版厂商通常会禁止发行版内核中的调试功能。为了实现内核调试,我在内核配置上增加了几项: Kernel hacking ---> [*] Magic SysRq k转载 2008-01-14 11:35:00 · 1242 阅读 · 0 评论 -
Linux设备驱动程序学习(1)
今天进入《Linux设备驱动程序(第3版)》第三章字符设备驱动程序的学习。这一章主要通过介绍字符设备scull(Simple Character Utility for Loading Localities,区域装载的简单字符工具)的驱动程序编写,来学习Linux设备驱动的基本知识。scull可以为真正的设备驱动程序提供样板。一、主设备号和此设备号主设备号表示设备对应的驱动程序;次设备号由内核使用转载 2008-01-14 11:33:00 · 1545 阅读 · 0 评论 -
Linux设备驱动程序学习(0)
一个学习Linux设备驱动程序都会碰到的第一个例程: #include linux/init.h>#include linux/module.h> MODULE_LICENSE("Dual BSD/GPL");static int hello_init(void){ printk(KERN_ALERT转载 2008-01-14 11:32:00 · 1581 阅读 · 0 评论 -
Linux设备驱动程序学习(12)
-Linux设备模型(底层原理简介) 以《LDD3》的说法:Linux设备模型这部分内容可以认为是高级教材,对于多数程序作者来说是不必要的。但是我个人认为:对于一个嵌入式Linux的底层程序员来说,这部分内容是很重要的。以我学习的ARM9为例,有很多总线(如SPI、IIC、IIS等等)在Linux下已经被编写成了子系统,无需自己写驱动;而这些总线又不像PCI、USB等在《LD转载 2008-01-14 11:55:00 · 11681 阅读 · 0 评论