Linux网络设备驱动学习笔记( )
Linux网络设备驱动程序体系结构
从上到下:网络协议接口层-->网络设备结构层-->设备驱动实现层-->网络设备与媒介层
记忆方法:
分三层,1、最上面理解为我们用的网络传输方法,就是网络协议,2、最下面就是物理硬件,即网络设备层,3、中间是一层,设备驱动,然后拆成2部分,上部分是结构(层),下部分是结构中函数的实现(层)。
功能描述:
网络协议接口层
dev_queue_xmit() 发送数据, netif_rx() 接收数据。
网络设备结构层
有一个结构net_device
设备驱动实现层
net_device里的函数实现, 通过hard_start_xmit()启动发送操作,通过中断触发接收操作。
网络设备与媒介层
哪里管的了那么多,不理它硬件怎么实现的。
网络协议接口层
有一个NB的结构体:sk_buff,叫做:套接字缓冲区,各层之间数据传输都靠他。
dev_queue_xmit()、netif_rx()的参数都是只是sk_buff。
函数原型:
dev_queue_xmit(struct sk_buff *sb ); //sb实际是 skb,少写一个k助记
netif_rx(struct sk_buff sk_buff *sb); //同上
sk_buff 内容详解
1 协议头 ,有好多好多协议要使用,所以协议头是必要滴,当然不能同时使用TCP/IP UDP或者其他什么协议,所以把头结构定义成联合体。
2 数据缓冲区:要搞个地方放数据,要功能强大必须能找到各需要的位置比如:头、尾… 所以在sk_buff中定义了4个指针:head、 data、tail、end。指向数据缓冲区。
head:缓冲区起始地址,sk_buff 一旦创建,head数据就固定了。
data:当前层的有效数据起始地址
tail: 有效数据的结尾地址,和data对应
end:缓冲区的结尾地址,sk_buff 一旦创建,end数据就固定了。
3 长度信息
len:数据包有效数据长度,包括协议头和负载(Payload?)
data_len:记录分片的数据长度,数据包的有效数据是分成几片存在不同的内存空间中,每片空间最大是一页。
truesize:缓冲区的整体长度,即:sizeof(struct sk_buff)+(传入alloc_sdb()或dev_alloc_skb()函数的长度)--说实话不理解传入函数的长度是什么.
NB的结构体:sk_buff的操作
各层之间就靠他,当然需要对他进行操作。
Ø 分配:
struct sk_buff *alloc_skb(unsigned int len,int priority);
相关文档:
原文出处:http://blog.mcuol.com/User/hzami/Article/8116_1.htm
由于很多人总问这个问题,所以这里做一个总结文档供大家参考。这里必须先说明,以下的步骤都是针对Linux系统的,并不面向WinCE。也许你
会注意到,现在做嵌入式的人中,做linux研究的人远比做WinCE的人多,很多产家提供的资料也是以linux为主。我一直很难 ......
Redhat Linux的网络配置,基本上是通过修改几个配置文件来实现的,虽然也可以用ifconfig来设置IP,用route来配置默认网关,用hostname来配置主机名,但是重启后会丢失。
相关的配置文件
/ect/hosts
配置主机名和IP地址的对应
/etc/sysconfig/network
配置主机名和网关
/etc/sysconfig/network-scripts/ifcfg-eth0 ......
shell是用户和Linux操作系统之间的接口。Linux中
有多种shell,其中缺省使用的是Bash。本章讲述了shell的工作原理,shell的种类,shell的一般操作及Bash的特性。
什么是shell
Linux系统的shell作为操作系统的外壳,为用户提
供使用操作系统的接口。它是命令语言、命令解释程序及程序设计语言的统称。
she ......
1,说明:
ulimit用于shell启动进程所占用的资源.
2,类别:
shell内建命令
3,语法格式:
ulimit [-acdfHlmnpsStvw] [size]
4,参数介绍:
-H 设置硬件资源限制.
-S 设置软件资源限制.
-a 显示当前所有的资源限制.
-c size:设置core文件的最大值.单位:blocks
-d size:设置数据段的最大值.单位:kbytes
-f size:设置创建 ......
(1)基本概念
从本质上讲,文件系统是特殊的数据分层存储结构,它包含文件、目录和相关的控制信息。为了描述这结构,Linux引入一些基本概念:
A,文件:一组在逻辑上具有完整意义的信息项的系列。另外,在Linux中,除了普通文件,其他诸如目录、设备、套接字等也以文件被对待。总之 ......