Linux网络驱动程序编写一

沈阳97迷

沈阳97迷

2016-01-29 19:04

Linux网络驱动程序编写一,Linux网络驱动程序编写一

  一.Linux系统设备驱动程序概述
  
  1.1 Linux设备驱动程序分类
  
    Linux设备驱动程序在Linux的内核源代码中占有很大的比例,源代码的长度日益增加,主要是驱动程序的增加。在Linux内核的不断升级过程中,驱动程序的结构还是相对稳定。在2.0.xx到2.2.xx的变动里,驱动程序的编写做了一些改变,但是从2.0.xx的驱动到2.2.xx的移植只需做少量的工作。
  
    Linux系统的设备分为字符设备(char device),块设备(block device)和网络设备(network device)三种。字符设备是指存取时没有缓存的设备。块设备的读写都有缓存来支持,并且块设备必须能够随机存取(random access),字符设备则没有这个要求。典型的字符设备包括鼠标,键盘,串行口等。块设备主要包括硬盘软盘设备,CD-ROM等。一个文件系统要安装进入操作系统必须在块设备上。
  
    网络设备在Linux里做专门的处理。Linux的网络系统主要是基于BSD unix的socket机制。在系统和驱动程序之间定义有专门的数据结构(sk_buff)进行数据的传递。系统里支持对发送数据和接收数据的缓存,提供流量控制机制,提供对多协议的支持。
  
  1.2 编写驱动程序的一些基本概念
  
    无论是什么操作系统的驱动程序,都有一些通用的概念。操作系统提供给驱动程序的支持也大致相同。下面简单介绍一下网络设备驱动程序的一些基本要求。
  
    1.2.1 发送和接收
  
    这是一个网络设备最基本的功能。一块网卡所做的无非就是收发工作。所以驱动程序里要告诉系统你的发送函数在哪里,系统在有数据要发送时就会调用你的发送程序。还有驱动程序由于是直接操纵硬件的,所以网络硬件有数据收到最先能得到这个数据的也就是驱动程序,它负责把这些原始数据进行必要的处理然后送给系统。这里,操作系统必须要提供两个机制,一个是找到驱动程序的发送函数,一个是驱动程序把收到的数据送给系统。是驱动程序把收到的数据送给系统。

  
    1.2.2 中断
  
    中断在现代计算机结构中有重要的地位。操作系统必须提供驱动程序响应中断的能力。一般是把一个中断处理程序注册到系统中去。操作系统在硬件中断发生后调用驱动程序的处理程序。Linux支持中断的共享,即多个设备共享一个中断。
  
    1.2.3 时钟
  
    在实现驱动程序时,很多地方会用到时钟。如某些协议里的超时处理,没有中断机制的硬件的轮询等。操作系统应为驱动程序提供定时机制。一般是在预定的时间过了以后回调注册的时钟函数。在网络驱动程序中,如果硬件没有中断功能,定时器可以提供轮询(poll)方式对硬件进行存取。或者是实现某些协议时需要的超时重传等。
展开更多 50%)
分享

猜你喜欢

Linux网络驱动程序编写一

Linux Linux命令 Linux安装 Linux编程 Linux桌面 Linux软件 Linux内核 Linux管理
Linux网络驱动程序编写一

如何编写Linux设备驱动程序

Linux Linux命令 Linux安装 Linux编程 Linux桌面 Linux软件 Linux内核 Linux管理
如何编写Linux设备驱动程序

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

为系统处理器编写Linux设备驱动程序

Linux Linux命令 Linux安装 Linux编程 Linux桌面 Linux软件 Linux内核 Linux管理
为系统处理器编写Linux设备驱动程序

linux内核模块和驱动程序的编写(2)

编程语言 网络编程
linux内核模块和驱动程序的编写(2)

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

用Delphi编写VxD设备驱动程序

Delphi
用Delphi编写VxD设备驱动程序

linux驱动程序开发详细介绍

电脑入门
linux驱动程序开发详细介绍

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

《蝙蝠侠 阿甘骑士》操作详解及全技能解析

《蝙蝠侠 阿甘骑士》操作详解及全技能解析

我的秘密你别看 Windows八大保密技巧

我的秘密你别看 Windows八大保密技巧
下拉加载更多内容 ↓