主要内容:Socket I/O事件的定义、I/O处理函数的实现。
内核版本:3.15.2
我的博客:http://blog.csdn.net/zhangskd
I/O事件定义
sock中定义了几个I/O事件,当协议栈遇到这些事件时,会调用它们的处理函数。
struct sock {
...
struct socket_wq __rcu *sk_wq; /*...
分类:
其他好文 时间:
2015-05-23 22:46:53
阅读次数:
260
PS,从本篇开始,改变写作风格,尽量少打字,多用图。事半功倍。=========================================协议栈中,串口使用,按照顺序,前后经历:配置、初始化、执行、调用,这样几个阶段,下面具体来说。一、串口配置zgb中,串口使用dma或者isr中断模式,系统默...
分类:
其他好文 时间:
2015-05-23 16:41:52
阅读次数:
232
什么是防火墙?工作于主机或网络的边缘,对于进出的报文根据事先定义的规则作检查,将那些能够被规则所匹配到的报文作出相应处理的组件。centos6.6上的防火墙组件:netfilter:过滤器,内核中工作在tcp/ip网络协议栈上的框架iptables:过滤规则的编写工具,定义的规则通过内核接..
分类:
Web程序 时间:
2015-05-20 14:59:08
阅读次数:
173
摘要:本文在国家标准GB/T 19582-2008的框架下,讨论Modbus协议在串行链路RS485以及TCP/IP上的实现过程和注意事项。涉及到Modbus帧界定、lwip协议栈移植等关键内容,对于难度较大的读写多个线圈命令,本文给出了关键源代码。
1. 简介
从1979年开始,Modbus作为工业串行链路的事实标准,Modbus使成千上万的自动化设备能够通信。目前,对简...
分类:
数据库 时间:
2015-05-19 22:43:33
阅读次数:
305
dev_hold和dev_put是配对使用的,一个用来引用计数加一,一个用于引用计数减一。
查看模块代码,没有发现单独直接使用dev_hold的情况。那会不会是简介调用呢,仔细查找了好久,果然是间接调用。
在我们一些模块代码中,经常会通过dev_get_by_name来获取设备信息。而dev_get_by_name封装了dev_hold,导致引用计数加一。由于dev_get_by_name是内核提供的接口,不熟悉的coder很可能不晓得这点,也没有注意到需要调用dev_put.,于是便有了上...
分类:
Web程序 时间:
2015-05-19 19:13:58
阅读次数:
342
最近要用到sip协议,因此寻找了两个开源项目作对比,分别是linphone和pjsip,经过对比,最终选择pjsip这套开源协议栈进行开发。
主要原因有如下(仅个人参考):
1、linphone的代码结构不如pjsip分明,pjsip在windows下更方便调试;
2、linphone更新后不使用osip作为协议栈,改用自行编写的belle_sip,pjsip协议栈还在维护,且一...
分类:
Web程序 时间:
2015-05-19 16:44:30
阅读次数:
910
我们简单了解下L4层协议和Raw IP是如何与IP层进行交互的。
L4层协议
L4层协议可以通过静态编译和模块配置两种方式加入内核。
比较重要的协议如TCP、UDP、ICMP通常是静态编译至内核。
一些不常用的或者比较特殊的协议,则是通过内核配置加入内核。如IGMP,SCTP,IPIP等等。
L4层协议的注册
L4层协议有net_protocol结构定义:
/* This is us...
分类:
系统相关 时间:
2015-05-18 14:43:46
阅读次数:
485
封包的分段和重组是IP协议最重要的工作之一。
IPv4报头中有一个len字段(用于表示报文的总长度,单位:字节)占16bit,因此,封包的最大尺寸定义为64K,(2^16/1024=64)。
但是,在实际网络传输中,没有几个网络接口能够传输64K这么大的封包,而是有一个MTU表示其最大传输单元。这样,当要传输的封包大于MTU时,就需要对封包进行分段。 这里需要说明,我们指的MTU,不仅...
分类:
系统相关 时间:
2015-05-18 12:59:18
阅读次数:
243
虽然和网络相关,但是它却不是网络协议栈的一部分,这就是netpoll。它只是一个出入口的处理框架。所谓的网络,它的终端节点就是主机,数据从主机的网卡发出,经过一个出口处理过程,网卡接收到一个数据包,经过一个入口处理过程,这一出一入的过程处理分为两种方式:1.中断的方..
分类:
Web程序 时间:
2015-05-17 18:52:19
阅读次数:
151
虽然和网络相关,但是它却不是网络协议栈的一部分,这就是netpoll。它只是一个出入口的处理框架。所谓的网络,它的终端节点就是主机,数据从主机的网卡发出,经过一个出口处理过程,网卡接收到一个数据包,经过一个入口处理过程,这一出一入的过程处理分为两种方式:1.中断的方式出口处理过程-数据排入发送队列,读取特定寄存器值,待网卡状态适合发送式,发送,等待发送后的中断通知,继续。入口处理过程-数据被网卡收...
分类:
Web程序 时间:
2015-05-17 15:22:37
阅读次数:
153