总数:16265 | 当前第1393/1627 首页 上一页 ... 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 ... 下一页 尾页
[第44讲]网络驱动编程(5)
与用户模式下的malloc()不同,kmalloc()申请空间有大小限制。长度是2的整次方。可以申请的最大长度也有限制。另外kmalloc()有priority参数,通常使用 时可以为GFP_KERNEL,如果在中断里调用用GFP_ATOMIC参数,因为使用GFP_KERNEL
  1. 2009/11/4
  2. 人气(4663)
  3. 星级(10)
  4. 评论(0)
[第43讲]网络驱动编程(4)
驱动程序必须有一个初始化方法。在把驱动程序载入系统的时候会调用这个初 始化程序。它做以下几方面的工作。检测设备。在初始化程序里你可以根据硬件的特征检查硬件是否存在,然后决定是否启动这个驱动程序。配置和初始化硬件。
  1. 2009/11/4
  2. 人气(4595)
  3. 星级(10)
  4. 评论(0)
[第42讲]网络驱动编程(3)
为了屏蔽网络环境中物理网络设备的多样性,Linux对所有的物理网络设备进行抽象并定义了一个统一的概念, 称之为接口(Interface)。每个接口在内部都表现为一个这样的结构体。
  1. 2009/11/4
  2. 人气(4411)
  3. 星级(10)
  4. 评论(0)
[第41讲]网络驱动编程(2)
任意一个网络接口均可看成一个发送和接收数据包的实体。在 linux 中这个统一的接口就是 device 结构,它操作的数据对象-数据包是通过结构 sk_buff来封装的。
  1. 2009/11/4
  2. 人气(4542)
  3. 星级(10)
  4. 评论(0)
[第41讲]网络驱动编程(2)
在 Linux/uclinux中,整个网络接口驱动程序的框架可分为四层,从上到下分别为协议接口层、网络设备接口层、提供实际功能的设备驱动功能层、以及网络设备和网络媒介层。
  1. 2009/11/4
  2. 人气(4441)
  3. 星级(10)
  4. 评论(0)
[第40讲]网络驱动编程(1)
linux网络子系统可以分为硬件层、设备驱动层、网络协议层和应用层。可以看出,它的实现也采用了分层的思想。其中网络协议层得到的数据包通过设备驱动的发送函数被发送到具体的通信设备上,通信设备传来的数据也在设备驱动程序的接收函数中被解析并组成相应的数据包传给网络协议层。
  1. 2009/11/4
  2. 人气(4247)
  3. 星级(10)
  4. 评论(0)
[第39讲]RTC驱动
这个结构的每一个成员的名字都对应着一个系统调用。用户进程利用系统调用在对设备文件进行诸如read/write操作时,系统调用通过设备文件的主设备号找到相应的设备驱动程序,然后读取这个数据结构相应的函数指针,接着把控制权交给该函数。这是linux的设备驱动程序工作的基本原理。既然是这样,则编写设备驱动程序的主要工作就是编写子函数,并填充file_operations的函数指针。
  1. 2009/11/4
  2. 人气(3947)
  3. 星级(10)
  4. 评论(0)
[第38讲]ADC驱动
这个结构的每一个成员的名字都对应着一个系统调用。用户进程利用系统调用在对设备文件进行诸如read/write操作时,系统调用通过设备文件的主设备号找到相应的设备驱动程序,然后读取这个数据结构相应的函数指针,接着把控制权交给该函数。这是linux的设备驱动程序工作的基本原理。既然是这样,则编写设备驱动程序的主要工作就是编写子函数,并填充file_operations的函数指针。
  1. 2009/11/4
  2. 人气(3850)
  3. 星级(10)
  4. 评论(0)
[第37讲]驱动程序中断(2)
字符设备的驱动程序通过在device_struct数据结构的chrdevs向量中增加一项的方法来向内核注册自己。然后对这个设备的所有调用都用这个设备号来实现。
  1. 2009/11/4
  2. 人气(3952)
  3. 星级(10)
  4. 评论(0)
[第36讲]驱动程序中断(1)
字符设备的驱动程序通过在device_struct数据结构的chrdevs向量中增加一项的方法来向内核注册自己。然后对这个设备的所有调用都用这个设备号来实现。
  1. 2009/11/4
  2. 人气(4088)
  3. 星级(10)
  4. 评论(0)
总数:16265 | 当前第1393/1627 首页 上一页 ... 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 ... 下一页 尾页