《linux设备驱动程序第三版》
玛丽奥ZJY
这个作者很懒,什么都没留下…
展开
-
LDD3源码分析之异步通知
版权声明:本文为博主原创文章,未经博主允许不得转载。作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz编译环境:Ubuntu 10.10内核版本:2.6.32-38-generic-paeLDD3源码路径:examples/scull/pipe.c examples/scull/main.c 一、异步通知机制的实现本文分析转载 2017-05-23 10:13:27 · 369 阅读 · 0 评论 -
LDD3源码分析之并发与竞态
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz编译环境:Ubuntu 10.10内核版本:2.6.32-38-generic-paeLDD3源码路径:examples/scull/main.c examples/misc-modules/complete.c 本文分析LDD3第五章并发与竞态相关代码,本章代码涉及两个内容,一个是信转载 2017-05-19 15:28:16 · 405 阅读 · 0 评论 -
lddbus-sculld之设备模型
lddbus.c:这里包括了设备模型包的一些定义。staticint __init ldd_bus_init(void){ int ret; ret = bus_register(&ldd_bus_type); //注册总线,在/sys/bus/下会创建文件夹,其名字为ldd_bus_type.name,即ldd if转载 2017-06-15 19:38:30 · 405 阅读 · 0 评论 -
LDD3 linux设备驱动程序学习之lddbus
1. struct device不再包含bus_id,取而代之的是.init_name,修改ldd_bus[cpp] view plain copy struct device ldd_bus = { .init_name = "ldd0", .release = ldd_bus_release 修改函数register_l转载 2017-06-15 19:43:52 · 342 阅读 · 0 评论 -
Linux设备模型(总线、设备、驱动程序和类)
文章的例子和实验使用《LDD3》所配的lddbus模块(稍作修改)。提示:在学习这部分内容是一定要分析所有介绍的源代码,知道他们与上一部分内容(kobject、kset、attribute等等)的关系,最好要分析一个实际的“flatform device”设备,不然会只学到表象,到后面会不知所云的。总线总线是处理器和一个或多个设备之间的通道,在设备模型中, 所有的设备都通过总线相连转载 2017-06-15 19:58:53 · 363 阅读 · 0 评论 -
LDD3源码分析之简单休眠
版权声明:本文为博主原创文章,未经博主允许不得转载。作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz编译环境:Ubuntu 10.10内核版本:2.6.32-38-generic-paeLDD3源码路径:examples/misc-modules/sleepy.c 本文分析LDD3第六章中关于简单休眠的示例代码sleepy转载 2017-05-22 10:25:55 · 463 阅读 · 0 评论 -
LDD3源码分析之阻塞型I/O
版权声明:本文为博主原创文章,未经博主允许不得转载。作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz编译环境:Ubuntu 10.10内核版本:2.6.32-38-generic-paeLDD3源码路径:examples/scull/pipe.c examples/scull/main.c 本文分析LDD3第六章介绍转载 2017-05-22 11:30:34 · 284 阅读 · 0 评论 -
LDD3源码分析之内存映射
版权声明:本文为博主原创文章,未经博主允许不得转载。作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz编译环境:Ubuntu 10.10内核版本:2.6.32-38-generic-paeLDD3源码路径:examples/simple/ 本文分析LDD3第十五章介绍的内存映射模块simple。 一、simple模块转载 2017-06-13 11:08:24 · 380 阅读 · 0 评论 -
《Linux设备驱动程序》学习之循序渐进 --- 内核数据类型
第十一章 --- 内核数据类型内核数据使用的数据类型分为 3 个主要类型: 标准 C 类型例如 int, 明确大小的类型例如 u32, 以及用作特定内核对象的类型, 例如 pid_t. 我们将看到这 3 个类型种类应当什么时候以及应当如何使用.标准 C 类型的使用尽管大部分程序员习惯自由使用标准类型, 如 int 和 long, 编写设备驱动需要一些小心来避免类型冲突和模糊的 bu转载 2017-06-13 16:50:14 · 628 阅读 · 0 评论 -
Linux设备驱动程序(LDD3)中snull的编译问题
对LDD中snull程序,编译的时候会有许多问题,鉴于网上还没有合适的解决办法,做此总结,整理知识。本文在debian6.0上运行通过,内核版本为2.6.32。学习LDD中网络驱动程序部分,理解snull程序的原理很有必要。snull不依赖于硬件,数据包的收发都属于内存操作,但对整个网络驱动程序原理已经做了很好的阐述。程序并不复杂,相比e100.c;8139too.c;pci-skeleton转载 2017-06-13 17:01:47 · 921 阅读 · 0 评论 -
snull网络驱动程序
由于下次开会要做报告,所以就先把字符设备驱动程序那块搁浅了,先来复习下网络驱动这块.虽然以前看过,学习过网络驱动的相关内容,但是当再次学习这块的时候,仍然有新的收获,或许是时间长不看了,有些东西的印象浅了,或者应了那句话:温故而知新.ok,下面步入正题.一,snull为了加深对网络驱动的理解,下面以一个基于内存的模块化接口实例来说明如何编写网路驱动程序,称之snull.为了简化讨论,做如下转载 2017-06-15 13:43:02 · 856 阅读 · 1 评论 -
snull试验操作
[root@localhost ~]# insmod snull.o [root@localhost ~]# dmesg | tail -n1 [root@localhost ~]# vi /etc/hosts# Do not remove the following line, or various programs# that require network funct转载 2017-06-15 17:44:34 · 338 阅读 · 0 评论 -
LDD3源码分析之ioctl操作
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz编译环境:Ubuntu 10.10内核版本:2.6.32-38-generic-paeLDD3源码路径:examples/scull/main.c 本文分析LDD3第六章中关于ioctl操作的代码,并编写测试程序对ioctl功能进行测试。 一、ioctl操作驱动程序中ioct转载 2017-05-22 10:12:03 · 460 阅读 · 0 评论 -
《Linux设备驱动程序 第三版》,snull源码,linux-2.6.10
曾经一段时间在看openswan源码,有一个问题迷惑我很久,就是它的那个ipsec虚拟网卡接口是怎么实现的?当时没有思路、没有想法,因为不知道从何着手去解决这个问题,最近接触到了内核模块的编写,又接触到openswan的klips模块,原来这一切全属于网络驱动程序编写范畴。现在我迫不及待的想去了解下它的实现,然后就有了这篇学习笔记…… 本文只是初步讲解虚拟网卡实现的过程,最终实现一个虚拟网卡转载 2017-08-24 10:51:37 · 869 阅读 · 0 评论 -
LDD3源码分析之调试技术
版权声明:本文为博主原创文章,未经博主允许不得转载。作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz编译环境:Ubuntu 10.10内核版本:2.6.32-38-generic-paeLDD3源码路径:examples/scull/main.c 本文分析LDD3第四章相关代码,主要是使用/proc文件系统(包括seq_f转载 2017-05-18 17:51:22 · 300 阅读 · 0 评论 -
LDD3源码分析之字符设备驱动程序
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz编译环境:Ubuntu 10.10内核版本:2.6.32-38-generic-paeLDD3源码路径:examples/scull/main.c 本文是对LDD3第三章驱动代码的分析记录。LDD3的scull源码是一个综合性的驱动程序,内容涵盖了第三章到第六章的内容,初学者在学习过程中转载 2017-05-18 10:33:59 · 342 阅读 · 0 评论 -
LDD3源码分析之llseek分析
版权声明:本文为博主原创文章,未经博主允许不得转载。作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz编译环境:Ubuntu 10.10内核版本:2.6.32-38-generic-paeLDD3源码路径:examples/scull/main.c 本文分析LDD3第6章的llseek函数。 一、用户空间的lseek函数转载 2017-05-23 11:30:31 · 386 阅读 · 0 评论 -
LDD3源码分析之访问控制
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz编译环境:Ubuntu 10.10内核版本:2.6.32-38-generic-paeLDD3源码路径:examples/scull/ access.c examples/scull/main.c 一、访问控制设备的注册本文分析LDD3第6章介绍的设备文件访问控制的实现,涉及的代转载 2017-05-23 16:00:46 · 331 阅读 · 0 评论 -
LDD3源码分析之poll分析
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz编译环境:Ubuntu 10.10内核版本:2.6.32-38-generic-paeLDD3源码路径:examples/scull/pipe.c examples/scull/main.c 本文分析LDD3第6章的poll(轮询)操作。要理解驱动程序中poll函数的作用和实现,必须先转载 2017-05-24 17:22:22 · 351 阅读 · 0 评论 -
LDD3源码分析之时间与延迟操作
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz编译环境:Ubuntu 10.10内核版本:2.6.32-38-generic-paeLDD3源码路径:examples/misc-modules/jit.c examples/misc-modules/jiq.c 本文分析LDD3第7章的示例程序jit.c和jiq.c,并给出转载 2017-05-25 14:24:54 · 676 阅读 · 0 评论 -
LDD3源码分析之slab高速缓存
版权声明:本文为博主原创文章,未经博主允许不得转载。作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz编译环境:Ubuntu 10.10内核版本:2.6.32-38-generic-paeLDD3源码路径:examples/scullc 本文分析LDD3第8章中关于使用slab高速缓存的代码,对应的源码在scullc目录下。转载 2017-05-25 16:04:00 · 319 阅读 · 0 评论 -
LDD3源码分析之按页分配内存
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz编译环境:Ubuntu 10.10内核版本:2.6.32-38-generic-paeLDD3源码路径:examples/scullp 一、scullp编译本文分析LDD3第8章中按页分配内存相关代码,对应源码是examples/scullp目录下的相关文件。这里首先说明一下,s转载 2017-05-25 17:15:04 · 268 阅读 · 0 评论 -
Linux设备驱动程序学习笔记
Linux设备驱动程序的作用简介设备 驱动程序就像一个个的“黑盒子”,使某个特定硬件响应一个定义良好的内部编程接口,这些操作完全隐藏了设备的工作细节。用户的操作通过一组标准化的调用执行,而这些调用独立于特定的驱动程序。将这些调用映射到作用于实际硬件的设备特有操作上,则是设备驱动程序的任务。 大多数编程可以分为两个部分:机制:需要提供转载 2017-05-15 18:02:51 · 3032 阅读 · 0 评论 -
LDD3源码分析之vmalloc
版权声明:本文为博主原创文章,未经博主允许不得转载。作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz编译环境:Ubuntu 10.10内核版本:2.6.32-38-generic-paeLDD3源码路径:examples/scullv 一、scullv编译本文分析LDD3第8章中与vmalloc函数相关代码,对应源码是转载 2017-05-25 18:02:40 · 279 阅读 · 0 评论 -
LDD3源码分析之与硬件通信&中断处理
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz编译环境:Ubuntu 10.10内核版本:2.6.32-38-generic-paeLDD3源码路径:examples/short/ 本分析LDD3第9和第10章的示例代码short。short涉及的主要知识点有通过I/O端口或I/O内存操作设备寄存器及设备内存,注册中断处理函数处理中转载 2017-05-25 22:38:21 · 313 阅读 · 0 评论 -
MODULE_DEVICE_TABLE宏的作用
1. MODULE_DEVICE_TABLE (usb, skel_table);该宏生成一个名为__mod_pci_device_table的局部变量,该变量指向第二个参数。内核构建时,depmod程序会在所有模块中搜索符号__mod_pci_device_table,把数据(设备列表)从模块中抽出,添加到映射文件/lib/modules/KERNEL_VERSION/modules.pci转载 2017-05-16 13:58:27 · 8630 阅读 · 0 评论 -
给虚拟机中的ubuntu安装新内核
主机操作系统版本:Windows 10虚拟机版本:Workstation 12 Pro虚拟机操作系统:Ubuntu 14.04Linux内核:3.13.0gcc版本:4.8.2 最近学习linux内核,不少比较经典的书籍都是以2.6.x源码进行讲解的。所以打算在linux虚拟机中安装一个2.6.36的内核。步骤如下: (一)下载源码 内转载 2017-05-16 17:53:54 · 1680 阅读 · 0 评论 -
【原创】【专栏】《Linux设备驱动程序》--- LDD3源码目录结构和源码分析经典链接
版权声明:本文为博主原创文章,未经博主允许不得转载。目录(?)[-]专栏Linux设备驱动程序学习总目录专栏LDD3源码分析链接总目录LDD3源码目录结构链接原文链接【原创】【专栏】《Linux设备驱动程序》--- LDD3源码目录结构和源码分析经典链接【专栏】Linux设备驱动程序学习(总目录)【专栏】LDD3源码分析链接(总目录)转载 2017-05-16 20:09:47 · 696 阅读 · 0 评论 -
LDD3源码分析之hello.c与Makefile模板
版权声明:本文为博主原创文章,未经博主允许不得转载。作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz编译环境:Ubuntu 10.10内核版本:2.6.32-38-generic-paeLDD3源码路径:examples/misc-modules/hello.c 一、hello.c文件分析 这个程序非常简单,它转载 2017-05-17 17:20:10 · 300 阅读 · 0 评论 -
ldd3学习笔记--环境搭建(构建linux2.6.10源码树)
ldd3(《linux设备驱动程序》)里面使用的正是Linux2.6.10内核,如果内核不同,使用课本里的代码会出现各种问题,所以搭建与课本一样内核版本的环境,用来学习。尝试过使用ubuntu14.04、fedora21直接编译2.6.10内核,结果都是gcc版本太高,尝试过给gcc降级,各种失败。尝试在ubuntu9.04 ,10.04编译他们各自的内核版本,构建内核源码树,结果Ldd3...转载 2019-06-29 16:06:53 · 547 阅读 · 0 评论