linux
文章平均质量分 79
Flexss
这个作者很懒,什么都没留下…
展开
-
从 2.4 到 2.6:Linux 内核可装载模块机制的改变对设备驱动的影响
<br /><br />1.获取内核版本<br />当设备驱动需要同时支持不同版本内核时,在编译阶段,内核模块需要知道当前使用的内核源码的版本,从而使用相应的内核 API。2.4 与 2.6 内核下,源码头文件 linux/version.h 定义有:<br />LINUX_VERSION_CODE ― 内核版本的二进制表示,主、从、修订版本号各对应一个字节;<br />KERNEL_VERSION(major, minor, release) - 由主、从、修订版本号构造二进制版本号。<br />在同时支转载 2010-12-03 11:27:00 · 569 阅读 · 0 评论 -
linux字符cdev和inode的联系
<br />相关数据结构:<br /> struct cdev {<br /> struct kobject kobj;<br /> struct module *owner;<br /> const struct file_operations *ops;<br /> struct list_head list;<br /> dev_t dev;<br /> unsigned int count;<br /> };<br /> struct kobj_map {<br /> struc转载 2010-12-03 15:19:00 · 412 阅读 · 0 评论 -
linux kobject设备模型详解
<br />kobject, kobj_type, kset简介<br />kobject是linux设备模型中最基本的结构。要说明的是,linux内核虽然由C语言编写,但是内核在实现时,到处都体现出开发者面向对象的思想。所以,kobject也可以理解为所有驱动对象的基类。后面用到的驱动对象,几乎都是kobject的派生类。作为基类的kobject并不关心自己是如何实现的,所以,在内核中,没有用kobject直接定义的变量,kobject只是作为一个抽象的基类而存在。一般都是将kobject嵌入到另一个结构转载 2010-12-02 13:26:00 · 1287 阅读 · 0 评论 -
内核中的Makefile和Kconfig
<br /><br />Author: Chen<br />一、概述<br /> 在内核编译中如何将各个目录树中的文件组织起来编译是一个很重要的问题,并且要根据用户配置来编译特有的内核。为了解决这个问题,内核使用两种文件,Makefie和Kconfig。分布到各目录的Kconfig构成了一个分布式的内核配置数据库,每个Kconfig分别描述了所属目录源文档相关的内核配置菜单,就是我们使用命令 make menuconfig(或者xconfig)后产生的配置菜单,此菜单包含多层,每个层次都是由各个目录转载 2010-12-03 11:24:00 · 708 阅读 · 0 评论 -
task_struct结构注释
<br /><br />task_struct结构注释<br /> ==========================<br /> long state 任务的运行状态(-1 不可运行,0 可运行(就绪),>0 已停止)。<br /> long counter 任务运行时间计数(递减)(滴答数),运行时间片。<br /> long priority 运行优先数。任务开始运行时counter = priority,越大运行越长。<br /> long signal 信号。是位图,每个比特位代表一种转载 2010-12-04 16:42:00 · 723 阅读 · 0 评论 -
Unix下分5种基本的I/O模型:
<br />1.阻塞I/O<br />2.非阻塞I/O<br />3.I/O复用(select和poll)<br />4.信号驱动I/O(SIGIO)<br />5.异步I/O(POSIX.1的aio_系列函数)<br />Unix中一个输入操作一般有两个不同的阶段:<br />1.等待数据准备好。<br />2.从内核到进程拷贝数据。<br />对于一个sockt上的输入操作,第一步一般是等待数据到达网络,当分组到达时,它被拷贝到内核中的某个缓冲区,第二步是将数据从内核缓冲区拷贝到应用程序缓冲区。<br转载 2010-12-10 00:52:00 · 530 阅读 · 0 评论