- 博客(12)
- 收藏
- 关注
转载 E1000驱动讨论
<br /> <br />作者: yaoma 时间: 2003-5-7 18:39 标题: ask<br /><br />在网上传送的“包”与内部的sk_buff有什么区别呢<br />当一个网络设备从网上接收包时,它必须将接收的数据转换成 sk_buff 结构(这里使用的是什么函数)。<br />这些 sk_buff 则被网络驱动加入到了 backlog 队列中。<br />作者: blueflame 时间: 2003-5-8 09:19<br /><b
2011-03-09 09:43:00 2094 1
转载 Linux 汇编语言开发指南
本文作者 肖文鹏是北京理工大学计算机系的一名硕士研究生,主要从事操作系统和分布式计算环境的研究,喜爱Linux和Python。你可以通过 xiaowp@263.net与他取得联系。 简介: 汇编语言的优点是速度快,可以直接对硬件进行操作,这对诸如图形处理等关键应用是非常重要的。Linux 是一个用 C 语言开发的操作系统,这使得很多程序员开始忘记在 Linux 中还可以直接使用汇编这一底层语言来优化程序的性能。本文为那些在Linux 平
2011-02-16 17:48:00 987
原创 Linux内核的等待队列[转]
<br /><br /><br />Linux内核的等待队列是以双循环链表为基础数据结构,与进程调度机制紧密结合,能够用于实现核心的异步事件通知机制。在Linux2.4.21中,等待队列在源代码树include/linux/wait.h中,这是一个通过list_head连接的典型双循环链表,如下图所示。<br />在这个链表中,有两种数据结构:等待队列头(wait_queue_head_t)和等待队列项(wait_queue_t)。等待队列头和等待队列项中都包含一个list_head类型的域
2010-10-13 09:50:00 467
转载 Linux 内核中断内幕
<br />简介: 本文对中断系统进行了全面的分析与探讨,主要包括中断控制器、中断分类、中断亲和力、中断线程化与 SMP 中的中断迁徙等。首先对中断工作原理进行了简要分析,接着详细探讨了中断亲和力的实现原理,最后对中断线程化与非线程化中断之间的实现机理进行了对比分析。<br /> <br /><br /> <br />什么是中断<br />Linux 内核需要对连接到计算机上的所有硬件设备进行管理,毫无疑问这是它的份内事。如果要管理这些设备,首先得和它们互相通信才行,一般有两种方案可实现这种功能:轮询(po
2010-10-12 15:34:00 425
转载 Linux内核NAPI机制分析
<br />Linux内核NAPI机制分析<br /> <br />简介:<br />NAPI 是 Linux 上采用的一种提高网络处理效率的技术,它的核心概念就是不采用中断的方式读取数据,而代之以首先采用中断唤醒数据接收的服务程序,然后 POLL 的方法来轮询数据。随着网络的接收速度的增加,NIC 触发的中断能做到不断减少,目前 NAPI 技术已经在网卡驱动层和网络层得到了广泛的应用,驱动层次上已经有 E1000 系列网卡,RTL8139 系列网卡,3c50X 系列等主流的网络适配器都采用了这个技术,而
2010-10-11 14:30:00 551
转载 Linux内核NAPI机制分析
<br />Linux内核NAPI机制分析<br /> <br />简介:<br />NAPI 是 Linux 上采用的一种提高网络处理效率的技术,它的核心概念就是不采用中断的方式读取数据,而代之以首先采用中断唤醒数据接收的服务程序,然后 POLL 的方法来轮询数据。随着网络的接收速度的增加,NIC 触发的中断能做到不断减少,目前 NAPI 技术已经在网卡驱动层和网络层得到了广泛的应用,驱动层次上已经有 E1000 系列网卡,RTL8139 系列网卡,3c50X 系列等主流的网络适配器都采用了这个技术,而
2010-10-11 14:29:00 432
转载 Linux 内存映射与管理
<br />本文以Linux 2.6版本内核为例,介绍了内核线性地址空间的布局,并描述了80386架构处理器下的3种内存地址的概念及在分段、分页机制下的相互转换。 <br /><br /> 通过内存地址访问,我们可以得到存在内存单元里的内容,这很容易理解。但在不同的环境下,会涉及到几种不同的内存地址的概念,初学者很容易混淆。为了方便后面的学习,我们以80X86架构处理器为例,把涉及的3种内存地址的概念分别做一解释。 <br /> 逻辑地址(Logical Address):汇编程序中,我们经常会看到段基
2010-08-12 12:19:00 810
转载 Mmap and remap_page_range(), in the nutshell
<br />繼 Linux programming 課程紀錄「小談 mmap() 與 VMA」後,今天在 Linux device driver 課程再聊到有關 VMA 與 mmap driver function 的重要觀念;重點紀錄如下。 <br />當 user-space 呼叫 mmap() system call wrapper function 後,kernel 會在 process address space 裡建立新的 VMA,並在 callback mmap driver
2010-07-30 10:02:00 1091
转载 linux内核的 等待队列 使用方法,wait_queue_head_t,进程休眠
<br /> 当你在用户空间需要读写一大片数据的时候,这个就用上了。<br />以下来自:http://www.yuanma.org/data/2006/1207/article_1916.htm假设我们在 kernel 里产生一个 buffer,user 可以经由read,write 等 system call 来读取或写资料到这个 buffer 里。如果有一个 user 写资料到 buffer时,此时 buffer 已经满了。那请问你要如何去处理这种情形呢 ? 第一种,传给 user 一个错误讯
2010-07-29 18:00:00 592
转载 内核module 参数
<br />驱动需要知道的几个参数因不同的系统而不同. 从使用的设备号( 如我们在下一章见到的 )到驱动应当任何操作的几个方面. 例如, SCSI 适配器的驱动常常有选项控制标记命令队列的使用, IDE 驱动允许用户控制 DMA 操作. 如果你的驱动控制老的硬件, 还需要被明确告知哪里去找硬件的 I/O 端口或者 I/O 内存地址. 内核通过在加载驱动的模块时指定可变参数的值, 支持这些要求. <br />这些参数的值可由 insmod 或者 modprobe 在加载时指定; 后者也可以从它的配置文件(/e
2010-07-28 17:19:00 533
原创 GSO,TSO and UFO
<br />GSO (Generic Segmentation Offload)<br />TSO (TCP Segmentation Offload )<br /> GSO就是针对普通的IP分片<br />TSO是针对TCP的,UFO是针对UDP的。<br /><br />通常长度大于MTU的数据包是在系统中进行分片和校验和计算的。<br /><br />部分网卡芯片可以通过硬件芯片来进行分片和校验和计算处理,效率较高。
2010-06-02 14:55:00 1592
转载 内核初始化优化宏 ,初始化顺序, __init,__devexit等
<br />内核使用了大量不同的宏来标记具有不同作用的函数和数据结构。如宏__init 、__devinit 等。这些宏在include/linux/init.h 头文件中定义。编译器通过这些宏可以把代码优化放到合适的内存位置,以减少内存占用和提高内核效率。<br />下面是一些常用的宏:<br />· __init ,标记内核启动时使用的初始化代码,内核启动完成后不再需要。以此标记的代码位于.init.text 内存区域。它的宏定义是这样的:<br />· <br />#define _ _
2010-06-02 10:12:00 561
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人