
linux内核学习
guowake
这个作者很懒,什么都没留下…
展开
-
Linux网卡驱动分析
Linux网卡驱动分析学习应该是一个先把问题简单化,在把问题复杂化的过程。一开始就着手处理复杂的问题,难免让人有心惊胆颤,捉襟见肘的感觉。读Linux网卡驱动也是一样。那长长的源码夹杂着那些我们陌生的变量和符号,望而生畏便是理所当然的了。不要担心,事情总有解决的办法,先把一些我们管不着的代码切割出去,留下必须的部分,把框架掌握了,哪其他的事情自然就水到渠成了,这是笔者的心得。一般在使用的Linux转载 2008-03-19 16:41:00 · 2473 阅读 · 1 评论 -
netfilter实现机制
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://damocles.blogbus.com/logs/12355731.html 从图1和图2中我们可以看清楚linux下防火墙netfilter的运作方式,设有5个钩子函数 Hook Called...转载 2008-06-04 09:53:00 · 1403 阅读 · 0 评论 -
内核注册一个新的协议族
说到注册新的协议族(下文用family描述),我们需要再次描述一下数组net_families,这个数组共有NPROTO(32)项,其每一项都固 定分配给一个family使用。比如,AF_INET(因特网协议)固定占用net_families[2],如果net_families[2]== NULL,则表示当前内核没有AF_INET模块,不支持因特网协议。net_families的每一项是一转载 2008-05-30 18:04:00 · 962 阅读 · 0 评论 -
Enforcing mode requested but no policy loaded. Halting now!kernel panic - not syncing: Attenpted to kill init问题
最近在升级内核的时候遇到了一个问题,下载了2.6.19版本内核,准备升级内核,编译还算顺利,但编译并安装后重启电脑出错了,提示Enforcing mode requested but no policy loaded. Halting now. kernel panic - not syncing: Attenpted to kill init! 不知是什么原因?到网上搜索了下解决方法,说在gru原创 2008-06-03 13:25:00 · 2487 阅读 · 0 评论 -
剖析RedHat Linux中三个重要内核文件
在网络中,不少服务器采用的是 Linux系统。为了进一步提高服务器的性能,可能需要根据特定的硬件及需求重新编译Linux内核。编译Linux内核,需要根据规定的步骤进行,编译 内核过程中涉及到几个重要的文件。比如对于RedHat Linux,在/boot目录下有一些与Linux内核有关的文件,进入/boot执行:ls –l。编译过RedHat Linux内核的人对其中的System.map转载 2008-06-03 10:35:00 · 792 阅读 · 0 评论 -
do{ }while(0) 的宏的作用!
为啥内核里有这么多 do{ }while(0) 的宏啊?一开始我也好不明白。感觉不出用了会有什么效果。不过明白之后就知道它的好处了。好处就在于多语句的宏。#define FOO(x) print(”arg is %sn”,x);do_something(x);在代码中使用:if(2==blah) FOO(blah);预编译展开后:if(2==blah) print(”arg is原创 2008-11-12 10:04:00 · 1731 阅读 · 0 评论 -
什么是进程上下文,什么是中断上下文
进程上下文和中断上下文是操作系统中很重要的两个概念,这两个概念在操作系统课程中不断被提及,是最经常接触、看上去很懂但又说不清楚到底怎么回事。造成这种局面的原因,可能是原来接触到的操作系统课程的教学总停留在一种浅层次的理论层面上,没有深入去研究。处理器总处于以下状态中的一种:1、内核态,运行于进程上下文,内核代表进程运行于内核空间;2、内核态,运行于中断上下文,内核代表硬件运行于内核空间;3、用户原创 2008-11-12 10:27:00 · 5798 阅读 · 5 评论 -
linux kernel (proc文件系统)参数
Linux Proc文件系统,通过对Proc文件系统进行调整,达到性能优化的目的。二、/proc/sys/kernel/优化1) /proc/sys/kernel/ctrl-alt-del该文件有一个二进制值,该值控制系统在接收到ctrl+alt+delete按键组合时如何反应。这两个值分别是:零(0)值,表示捕获ctrl+alt+delete,并将其送至 init 程序;这将允许系统可原创 2008-11-12 10:38:00 · 2592 阅读 · 0 评论 -
spinlock理解
原创 关于内核中spinlock的一些个人理解收藏新一篇: Windows程序中的字符编码 | 旧一篇: 主流显卡Linux系统驱动安装--intel、ATi篇由于2.6内核可以抢占,应该在驱动程序中使用 preempt_disable() 和 preempt_enable(),从而保护代码段不被抢占(禁止 IRQ 同时也就隐式地禁止了抢占)。preempt_disable和preempt_ena转载 2008-12-22 10:55:00 · 3609 阅读 · 1 评论 -
提高Linux系统应对短连接的负载能力
在存在大量短连接的情况下,Linux的TCP栈一般都会生成大量的 TIME_WAIT 状态的socket。 你可以用下面的命令看到: netstat -ant| grep -i time_wait 有时候,这个数目是惊人的: netstat -ant|grep -i time_wait |wc -l 可能会超过三四万。这个时候,我们需要修改 linux kernel原创 2008-05-30 14:19:00 · 987 阅读 · 0 评论 -
用户空间与kernel空间通信的例子(利用mmap)
前些日子看到linuxforum上wheelz发的一个帖子, kernel空间和用户空间通信的经典的例子 。 特整理一下: kernel代码: #include linux/config.h>#include linux/module.h>#include linux/ker原创 2008-03-25 17:08:00 · 1091 阅读 · 0 评论 -
内嵌汇编语法如下
内嵌汇编语法如下: __asm__(汇编语句模板: 输出部分: 输入部分: 破坏描述部分) 共四个部分:汇编语句模板,输出部分,输入部分,破坏描述部分,各部分使用“:”格开,汇编语句模板必不可少,其他三部分可选,如果使用了后面的部分,而前面部分为空,也需要用“:”格开,相应部分内容为空。例如:转载 2008-03-25 17:37:00 · 1572 阅读 · 0 评论 -
Linux 2.4.x的网络接口源码的结构
前言 Linux的源码里,网络接口的实现部份是非常值得一读的,通过读源码,不仅对网络协议会有更深的了解,也有助于在网络编程的时候,对应用函数有更精确的了解和把握。 本文把重点放在网络接口程序的总体结构上,希望能作为读源码时一些指导性的文字。 本文以Linux2.4.16内核作为讲解的对象,内核源码可以在http://www.kernel.org上下载。我读源码时参考的是http://l转载 2008-03-19 16:56:00 · 663 阅读 · 0 评论 -
http协议中有关http头的技术资料
一、基础篇 HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送WWW方式的数据,关于HTTP协议的详细内容请参 考RFC2616。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求,请求头包含请求的方法、URI、协议版本、以及包含请求修饰符、客户 信息和内容的类似于MIME的消息结构。服务器以一个状态行作为响应,相应的内容转载 2008-03-19 18:40:00 · 644 阅读 · 0 评论 -
深入Linux网络核心堆栈
1 - 简介 1.1 - 本文涉及的内容 1.2 - 本文不涉及的内容2 - 各种Netfilter hook及其用法 2.1 - Linux内核对数据包的处理 2.2 - Netfilter对IPv4的hook3 - 注册和注销Netfilter hook4 - Netfilter 基本的数据报过滤技术[1] 4.1 - 深入hook函数 4.2 - 基于接口进行过滤 4.3 -转载 2008-03-19 16:51:00 · 827 阅读 · 0 评论 -
The journey of a packet through the linux 2.4 network stack
作者介绍:Harald Welte is one of the five netfilter/iptables core team members, and is the current Linux 2.4.x firewalling maintainer. His main interest in computing has always been networking but i原创 2008-03-20 10:16:00 · 1220 阅读 · 0 评论 -
图
转载 2008-03-21 17:47:00 · 561 阅读 · 0 评论 -
Linux内核bridge中的数据包处理流程
本文档的Copyleft归yfydz所有,使用GPL发布,可以自由拷贝,转载,转载时请保持文档的完整性,严禁用于任何商业用途。msn: yfydz_no1@hotmail.com来源:http://yfydz.cublog.cn1. 前言本文简要介绍数据包在进入桥网卡后在Linux网络协议栈的处理流程,并描述netfilter的hook点的挂接处理情况,具体各部分的详细处理待后续文章中说明。转载 2008-03-24 11:41:00 · 2282 阅读 · 0 评论 -
Linux2.6 内核的 Initrd 机制解析
Linux 的 initrd 技术是一个非常普遍使用的机制,linux2.6 内核的 initrd 的文件格式由原来的文件系统镜像文件转变成了 cpio 格式,变化不仅反映在文件格式上, linux 内核对这两种格式的 initrd 的处理有着截然的不同。本文首先介绍了什么是 initrd 技术,然后分别介绍了 Linux2.4 内核和 2.6 内核的 initrd 的处理流程。最后通过对 Lin转载 2008-03-24 17:05:00 · 667 阅读 · 0 评论 -
滑动窗口协议
TCP的首部中有一个很重要的字段就是16位长的窗口大小,它出现在每一个TCP数据报中,配合32位的确认序号,用于向对方通告本地socket的接收窗口大小。也就是说,如果本地socket发送一个TCP数据报,其32位确认序号是5,窗口大小是5840,则用于告诉对方:你方发出的4个字节的数据已经收到并确认,我方socket将接收从第5个字节开始的长度为5840个字节数据。这是由接收方进行的一种流量控转载 2008-03-25 17:29:00 · 2186 阅读 · 0 评论 -
Linux内核中的同步机制
【导读】本文详细的介绍了Linux内核中的同步机制:原子操作、信号量、读写信号量和自旋锁的API,使用要求以及一些典型示例。 一、引言在现代操作系统里,同一时间可能有多个内核执行流在执行,因此内核其实象多进程多线程编程一样也需要一些同步机制来同步各执行单元对共享数据的访问。尤其是在多处理器系统上,更需要一些同步机制来同步不同处理器上的执行单元对共享的数据的访问。在主流的Linux内核中包含了几原创 2008-12-22 16:19:00 · 720 阅读 · 0 评论