linux驱动开发之网络驱动
文章平均质量分 84
tanglinux
专注于Linux内核以及C/C++应用程序的开发。
展开
-
网络驱动移植之sk_buff结构体及其相关操作函数(上)
开发平台:Ubuntu11.04 编译器:gcc version 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4) 内核源码:linux-2.6.38.8.tar.bz2 struct sk_buff是Linux操作系统网络相关代码中最重要的结构体之一,用于管理已接收或正要传输的网络数据包。此结构体定义在include/linux/skb原创 2012-02-16 11:45:23 · 4188 阅读 · 0 评论 -
网络驱动移植之网络子系统设备处理层的初始化
内核源码:linux-2.6.38.8.tar.bz2 网络子系统设备处理层的初始化大致会完成以下各种任务: (1)、在/proc/net目录下创建四个proc条目(分别为dev、softnet_stat、ptype和wireless) /* linux-2.6.38.8/net/core/dev.c */static int __init dev_proc_原创 2012-02-15 10:36:42 · 2705 阅读 · 0 评论 -
网络驱动移植之解析Linux网络驱动的基本框架
内核源码:linux-2.6.38.8.tar.bz2 概括而言,编写Linux网络驱动其实只要完成两件事即可,一是分配并初始化网络设备,二是注册网络设备。 1、分配并初始化网络设备 动态分配网络设备(从C语言角度来看,其实就是定义了一个struct net_device结构体变量,并对这个结构体变量的某些成员进行了初始化而已)及其私有数据的大致过程如下图(以以原创 2011-12-20 21:18:21 · 13540 阅读 · 0 评论 -
网络驱动移植之简述CS8900A网络芯片的基本原理
CS8900A数据手册:http://www.cirrus.com/cn/products/cs8900a.html 1、概述 CS8900A是CIRRUS LOGIC公司生产的低功耗、性能优越的16位以太网控制器,集成了以下五大功能模块: (1)、带24毫安驱动的直接ISA总线接口,可选择配置4个中断号和3个DMA通道。 (2)、片内4K字节RAM,原创 2011-12-15 16:32:49 · 4051 阅读 · 0 评论 -
网络驱动移植之例解netdev_priv函数
开发平台:Ubuntu 11.04 编译器:gcc version 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4) 内核源码:linux-2.6.38.8.tar.bz2 1、如何分配struct net_device结构体以及私有数据 下面将通过实例来讲解Linux内核是如何通过alloc_netdev_mqs函数分配str原创 2011-12-21 17:37:42 · 15720 阅读 · 2 评论 -
网络驱动移植之net_device结构体及其相关的操作函数
内核源码:linux-2.6.38.8.tar.bz2 在Linux系统中,网络设备都被抽象为struct net_device结构体。它是网络设备硬件与上层协议之间联系的接口,了解它对编写网络驱动程序非常有益,所以本文将着手简要介绍linux-2.6.38.8/include/linux/netdevice.h文件中struct net_device结构体的所有成员(没有按照它们原创 2011-12-19 11:32:31 · 5562 阅读 · 0 评论 -
网络驱动移植之sk_buff结构体及其相关操作函数(下)
2、结构体相关操作函数 (1)、dev_alloc_skb 实际上,函数dev_alloc_skb最终是调用__alloc_skb函数来分配数据缓冲区和sk_buff结构体的,如下图: 从dev_alloc_skb到__alloc_skb所涉及的源代码如下: /* linux-2.6.38.8/net/core/skbuff.c */struct sk_b原创 2012-02-16 22:30:58 · 7310 阅读 · 0 评论