Skip to content

Commit 0aadfee

Browse files
author
Hui
committed
Add:上传初始版本
1 parent aa85b6e commit 0aadfee

File tree

2,937 files changed

+963217
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

2,937 files changed

+963217
-0
lines changed

README.md

+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
DDD# Reading-and-comprehense-linux-Kernel-network-protocol-stack
2+
3+
QQ交流群1(针对在校生)-(群号:568892619 )
4+
===================================
5+
群号:568892619
6+
在校生nginx、redis、memcache、twemproxy等源码实现交流,指引在校生快速阅读这些底层开源基础中间件代码,对以后工作很有帮助
7+
8+
QQ交流群2(针对已工作,有一些技术基础的同学)-(581089275)
9+
===================================
10+
群号: 581089275
11+
主要针对有一定技术基础的开发人员,提升其基础组件源码技术深度(如nginx、redis、memcache、twemproxy、mongodb、存储引擎、内核网络协议栈等),同时可以帮助业务开发、运维开发、嵌入式等其他工作方向的同学转基础组件、中间件、分布式存储、高性能服务器等开发
12+
13+
===================================
14+
linux内核网络协议栈阅读理解
15+
16+
本代码是linux内核网络协议栈源码(版本为2.6.35),本代码对三层及其以上部分主要功能做
17+
了详细注释,并对重要数据结构的各个成员进行了备注,同时对各个函数的调用关系都有详尽备注。主要参考资料为樊东东
18+
老师的<linux内核源码剖析(上下册)>,再此对樊老师表示感谢,这是一本理解网络协议栈很好的书,两本合计1000多页,内
19+
容比较多,但都很经典,对阅读内核协议栈源码有很大的帮助。
20+
21+
由于工作中经常需要修改协议栈源码,包括封包解包各种隧道报文, NAT功能添加,路径修改,添加自己的netfilter代
22+
码等,由于部分内容涉及到公司保密内容,因此这些工作中新增修改的内核代码已经从本分github中移除,因此可能造成部分
23+
函数没有定义,但不会影响各位同行阅读和理解协议栈源码。
24+
25+
该代码已经详细分析和注释的协议栈功能有:
26+
.二层 三层 4层 发包收包调用流程,及各层头部封包解包分析注释。
27+
.netfilter框架代码分析注释
28+
.sock处理过程中的各种系统调用以及内核处理过程分析注释
29+
.SKB封包 解包 克隆复制 拆分 拉直等详细分析注释
30+
.网络dev设备注册 注销详解。
31+
.内核态用户态通信netlink代码分析注释
32+
.ip分片重组分析注释
33+
.套接口层代码分析及详细注释
34+
.传输控制块分析注释
35+
.TCP链接建立过程分析注释
36+
.链接终止过程分析分析注释
37+
.ip层输入输出分析,TCP输入输出分析 及其层次调用过程分析注释
38+
.tc限速源码分析注释
39+
.ppp内核模块分析注释
40+
.相关模块功能分析注释
41+
42+
43+
44+
待分析主要模块:网桥模块,vlan模块,邻居子系统,路由表模块。
45+
46+
+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
/*
2+
* Definitions for PCI support.
3+
*/
4+
#define FL_BASE_MASK 0x0007
5+
#define FL_BASE0 0x0000
6+
#define FL_BASE1 0x0001
7+
#define FL_BASE2 0x0002
8+
#define FL_BASE3 0x0003
9+
#define FL_BASE4 0x0004
10+
#define FL_GET_BASE(x) (x & FL_BASE_MASK)
11+
12+
/* Use successive BARs (PCI base address registers),
13+
else use offset into some specified BAR */
14+
#define FL_BASE_BARS 0x0008
15+
16+
/* do not assign an irq */
17+
#define FL_NOIRQ 0x0080
18+
19+
/* Use the Base address register size to cap number of ports */
20+
#define FL_REGION_SZ_CAP 0x0100
21+
22+
struct pciserial_board {
23+
unsigned int flags;
24+
unsigned int num_ports;
25+
unsigned int base_baud;
26+
unsigned int uart_offset;
27+
unsigned int reg_shift;
28+
unsigned int first_offset;
29+
};
30+
31+
struct serial_private;
32+
33+
struct serial_private *
34+
pciserial_init_ports(struct pci_dev *dev, const struct pciserial_board *board);
35+
void pciserial_remove_ports(struct serial_private *priv);
36+
void pciserial_suspend_ports(struct serial_private *priv);
37+
void pciserial_resume_ports(struct serial_private *priv);

0 commit comments

Comments
 (0)