Macross的专栏

最美的不是下雨天,是曾与你躲过雨的屋檐

如何在Linux内核中为IPv6添加一种新的扩展头

<br />IPv6头部的设计是一个简洁的基本头部后面根据需要加上多种不同类型的扩展头部,这种设计可以将不常用的功能通过选择性的添加不同的扩展头部实现,从而在保证了基本头部的简洁和处理的快速性。以Linux2.6.28版本内核为例,IPv6扩展首部的定义在linux-2.6.28/in...

2010-12-23 17:44:00

阅读数:2714

评论数:0

一些Linux内核中的常用术语

<br />抢占,preemption<br />在2.5内核之前,或编译时CONFIG_PREEMPT未打开,内核中用户上下文的进程不会彼<br />此抢占(亦即:只要你占有CPU,你就一直占有,直到自己放弃或者发生硬件中断)。<br />在2.5...

2010-10-26 22:38:00

阅读数:1266

评论数:0

spin_lock_bh()与spin_unlock_bh()

<br />spin_lock_bh通常用在进程中,用来禁止抢断和禁止软中断。<br /> <br />spin_lock_bh()中首先会调用local_bh_disable()禁止当前CPU的软件中断。而函数spin_unlock_bh()则调用local_...

2010-10-26 22:36:00

阅读数:18195

评论数:2

内核中的kmalloc函数详解

一、kmalloc函数详解#include void *kmalloc(size_t size, int flags);给 kmalloc 的第一个参数是要分配的块的大小. 第 2 个参数, 分配标志, 非常有趣, 因为它以几个方式控制 kmalloc 的行为.最一般使用的标志, GFP_KER...

2010-05-27 09:59:00

阅读数:19745

评论数:0

内核中struct sk_buff结构分析

struct sk_buff可能是linux网络代码中最重要的数据结构,它表示接收或发送数据包的包头信息,并包含很多成员变量供网络代码中的各子系统使用。 这个结构被网络的不同层(MAC或者其他二层链路协议,三层的IP,四层的TCP或UDP等)使用,并且其中的成员变量在结构从一层向另一层传递时改变。...

2010-04-01 16:00:00

阅读数:1840

评论数:0

Linux 网络系统学习 IPv6 的初始化(详细而全面)

转自:http://blog.csdn.net/rstevens/archive/2007/04/10/1559289.aspx  1.   网络子系统1.1.                    网络子系统概述 Linux 内核中,与网络相关的代码是一个相对独立的子系统,称为网络子系统。网络

2010-03-16 09:34:00

阅读数:1813

评论数:0

几个宏的区别

最看内核网络相关的资料,有几个宏总是混在一起,NF_IP_PRE_ROUTING(或NF_IP6_PRE_ROUTING)、NF_IP_PRE_ROUTING,另外还有《linux网络体系结构》ipv6那部分中提到的IP_PRE_ROUTING,这个结构在我的2.6.28内核中没有搜到,估计是这本...

2010-03-09 21:33:00

阅读数:1376

评论数:0

IPv6实现--转发包的处理流程(2)

进入第一个钩子NF_HOOK(PF_INET6, NF_INET_PRE_ROUTING, skb, dev, NULL,ip6_rcv_finish)后,ip6_rcv_finish()将调用下列3个函数之一:ip6_input()、ip6_mc_input()、ip6_forward()。当I...

2010-03-09 16:36:00

阅读数:3686

评论数:0

IPv6实现--传入包的处理流程(1)

IPv6中数据包的接收处理流程在一个IPSEC包进入到网络层调用~/net/ipv6/ip6_input.c中的ipv6_rcv()函数,然后进入第一个钩子NF_HOOK(PF_INET6, NF_INET_PRE_ROUTING, skb, dev, NULL,ip6_rcv_finish);对...

2010-03-09 15:41:00

阅读数:3110

评论数:5

skbuff.h文件中NET_SKBUFF_DATA_USES_OFFSET宏的含义

找到NET_SKBUFF_DATA_USES_OFFSET定义的地方,文件include/linux/skbuff.h#if BITS_PER_LONG > 32#define NET_SKBUFF_DATA_USES_OFFSET 1#endif出现使用NET_SKBUFF_DATA_US...

2010-03-09 11:25:00

阅读数:2778

评论数:0

内核中的likely和unlikely宏的使用

在内核代码中经常会看到unlikely和likely的踪影。他们实际上是定义在 linux/compiler.h 中的两个宏。  #define likely(x) __builtin_expect(!!(x), 1)  #define unlikely(x) __builtin_expect(!...

2010-03-08 12:40:00

阅读数:635

评论数:0

内核中修饰的函数的__init的含义

例子如:void __init xfrm_state_init(void)其实最常见的莫过于linux内核中用于模块初始化的函数,如用于SCTP模块初始化的函数:SCTP_STATIC __init int sctp_init(void)__init的定义:#define __init      ...

2010-03-08 10:22:00

阅读数:1255

评论数:0

内核中的spin_lock

    我们知道现在 Linux 已经有支持 SMP,也就是可以使用多颗 CPU来加快系统的速度,如果当我们在修改重要的资料结构时,将执行修改工作的 CPU 中断 disable 掉的话,只有目前的这个 CPU的执行不会被中断,在 SMP 环境下,还有别的 CPU 正同时运作,如果别的 CPU 也...

2010-03-07 20:17:00

阅读数:640

评论数:0

内核IPSec代码中xfrm_input.c中关于kmem_cache_alloc的使用分析

基本知识:在内核编程中,可能经常会有一些数据结构需要反复使用和释放,按照通常的思路,可能是使用kmalloc和kfree来实现。但是这种方式效率不高,Linux为我们提供了更加高效的方法——Slab高速缓存管理器。动态创建固定大小的内存对象,虽然kmalloc的时间复杂度并不大,但是联系到空间复杂...

2010-03-07 10:31:00

阅读数:1141

评论数:0

Linux TCP/IP协议栈的通用编码模式

转自:http://blog.chinaunix.net/u/26185/showart_475934.html 和其他内核功能一样,每个网络功能都是内核成员中的一个。因此,它必须合理且公平的使用内存,CPU和其他共享资源。绝大多数功能并非内核中一段独立的程序,而是根据该功能而或多或少的与内核中其...

2009-10-19 20:31:00

阅读数:798

评论数:0

内核中的hash和bucket

哈希表(Hashtable)又称为“散置”,Hashtable是会根据索引键的哈希程序代码组织成的索引键(Key)和值(Value)配对的集合。Hashtable 对象是由包含集合中元素的哈希桶(Bucket)所组成的。而Bucket是Hashtable内元素的虚拟子群组,可以让大部分集合中的搜寻...

2009-10-19 20:03:00

阅读数:2479

评论数:3

谈EXPORT_SYMBOL使用

EXPORT_SYMBOL只出现在2.6内核中,在2.4内核默认的非static 函数和变量都会自动导入到kernel 空间的, 都不用EXPORT_SYMBOL() 做标记的。2.6就必须用EXPORT_SYMBOL() 来导出来(因为2.6默认不到处所有的符号)。 1、EXPORT_SYMBO...

2009-09-27 17:15:00

阅读数:44758

评论数:5

内核编程中的EXPORT_SYMBOL

转载自maypeng.cublog.cn EXPORT_SYMBOL标签内定义的函数或者符号对全部内核代码公开,不用修改内核代码就可以在您的内核模块中直接调用,即使用EXPORT_SYMBOL可以将一个函数以符号的方式导出给其他模块使用。您还可以手工修改内核源代码来导出另外的函数,用于重新编译并加...

2009-09-15 18:01:00

阅读数:5776

评论数:0

netlink学习笔记(二)

1、netlink_kernel_create()函数分析/* *      We export these functions to other modules. They provide a *      complete set of kernel non-blocking support ...

2009-09-01 08:50:00

阅读数:3145

评论数:0

netlink学习笔记(一)

最近在学习netlink相关的东西,现在还没找到特别好的书,学习的资料主要来自网络,今天主要参考以下三个:http://linux.chinaunix.net/bbs/thread-1031932-1-1.htmlhttp://prolqspace.spaces.live.com/blog/cns...

2009-08-28 09:14:00

阅读数:15183

评论数:2

提示
确定要删除当前文章?
取消 删除
关闭
关闭