自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Macross的专栏

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

  • 博客(13)
  • 资源 (6)
  • 收藏
  • 关注

原创 内核构造skb数据包的实现总结

一、IPv4、TCP和UDP的校验和计算校验和是网络协议用来识别传输错误的冗余域。有些校验和不但能检测错误,还能自动修正某些类型的错误。校验和的想法很简单。在传输一个数据 包之前,发送方计算出一个很小的、固定长度的域 (校验和)包含数据的某种散列。如果在传输过程中某几位数据被改变,很可能损坏的数据会产生一个不同的校验和。取决于你用来产生校验和使用的函数,校验和提供不同级别的可靠性。IP

2010-03-31 17:46:00 13211 2

转载 oracle的故事

一个名叫Sid的男人,狂热地爱好拍摄、保存和整理照片。Sid的妻子名叫Debbie,他们有三个儿子Logan、Archie和Chuck。他有一所很大的房子,同住的有男管家Simon和女仆Pam。我将介绍他的家庭、他的房子和他的爱好:拍摄、收集和炫耀他的照片。 现在,Sid快乐地生活着—家庭、朋友和假期。他不时地拍照。事实上,他总是随身带着相机。他不想错过任何东西。每一个早餐、午

2010-03-24 09:16:00 1058

转载 makefile的语法及写法

转自:http://topic.csdn.net/u/20070720/09/79922fb0-bbd6-403c-bba3-3c9bc8c71368.html 0 Makefile概述 --------------------------------------------------------------------------------什么是makefile?

2010-03-22 09:43:00 675

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

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

2010-03-16 09:34:00 2705

原创 linux内核模块常用命令

一、什么是 modules?  modules 的字面意思就是模块,在此指的是 kernel modules;简单来说, 一个模块提供了一个功能,如 isofs、minix、nfs、lp 等等。传统来讲,模块化有两个方法解决: 设计者可以把各项功能分离到单独的叫做线程的处理中去,或者是将内核以包含/排除一些功能的方式重新编译。如果把功能分离到线程中去,那么内核就叫做“微内核”(micr

2010-03-15 20:05:00 8244

原创 几个宏的区别

最看内核网络相关的资料,有几个宏总是混在一起,NF_IP_PRE_ROUTING(或NF_IP6_PRE_ROUTING)、NF_IP_PRE_ROUTING,另外还有《linux网络体系结构》ipv6那部分中提到的IP_PRE_ROUTING,这个结构在我的2.6.28内核中没有搜到,估计是这本书编写的较早,名称改换了在~/include/linux/netfilter_ipv4

2010-03-09 21:33:00 1734

原创 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()。当IPv6包必须要转发的时候,ip6_rcv_finish()函数调用ipv6_forward()

2010-03-09 16:36:00 5335

原创 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);对于NF_HOOK的作用解释是, 如果没有配置netfilter,可以简单认为NF_HOOK就等

2010-03-09 15:41:00 4435 4

原创 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_USES_OFFSET 的地方,如:#ifdef NET_SKBUFF_DATA_USE

2010-03-09 11:25:00 3396

转载 内核中的likely和unlikely宏的使用

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

2010-03-08 12:40:00 1579

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

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

2010-03-08 10:22:00 2743

原创 内核中的spin_lock

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

2010-03-07 20:17:00 818

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

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

2010-03-07 10:31:00 1587

猎杀X86--NVIDIA、ARM、微软携手迈向云时代

《微型计算机》中的一篇文章,写的不错,推荐一下

2012-04-27

linux-2.6.28内核配置中文手册.pdf

linux-2.6.28内核配置中文手册,讲解make menuconfig之后出现的配置界面的每一项的含义

2009-07-27

Linux内核设计与实现.pdf

很经典的那本《Linux内核设计与实现》,呵呵!

2009-07-27

UNIX 网络编程 第1卷套接口API 程序源代码

UNIX 网络编程 第1卷套接口API 程序源代码 第三版

2008-12-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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