转:《Linux设备驱动程序3》源码目录结构和源码分析经典链接

Posted guanguangreat

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了转:《Linux设备驱动程序3》源码目录结构和源码分析经典链接相关的知识,希望对你有一定的参考价值。

转自:http://blog.csdn.net/geng823/article/details/37567557

 

【原创】【专栏】《Linux设备驱动程序》--- LDD3源码目录结构和源码分析经典链接

 

 


【专栏】Linux设备驱动程序学习(总目录)


【专栏】LDD3源码分析链接(总目录)

1. LDD3源码分析之hello.c与Makefile模板

2. LDD3源码分析之字符设备驱动程序

其他错误:

我的Linux内核为 3.2.0-65-generic-pae,在scull目录下make时,除了文中的错误之外,还有如下错误。

错误: 隐式声明函数‘init_MUTEX’   解决方法

错误: 初始值设定项里有未知的字段‘ioctl’   解决方法

错误: ‘SPIN_LOCK_UNLOCKED’未声明(不在函数内)     解决方法

另外,如果在执行sudo ./scull_load 和sudo ./scull_unload 出错时,一般都是因为scull_load和scull_unload没有可执行权限,需要修改它们的权限,可能scull.ko权限也要修改。权限全部修改为755即可。

3. LDD3源码分析之调试技术

4. LDD3源码分析之并发与竞态

5. LDD3源码分析之ioctl操作

    LDD3源码分析之简单休眠

    LDD3源码分析之阻塞型I/O

    LDD3源码分析之poll分析

    LDD3源码分析之异步通知

    LDD3源码分析之llseek分析

    LDD3源码分析之访问控制

6. LDD3源码分析之时间与延迟操作

7. LDD3源码分析之slab高速缓存

    LDD3源码分析之按页分配内存

    LDD3源码分析之vmalloc

8&9. LDD3源码分析之与硬件通信&中断处理

15. LDD3源码分析之内存映射


LDD3源码目录结构链接

[@localhost]$ tree

.
|-- LICENSE
|-- Makefile
|-- include
|   `-- lddbus.h    示例代码中,#include "lddbus.h"。
|-- lddbus
|   |-- Makefile
|   `-- lddbus.c    CHAPTER_14.4:虚拟总线实现
|-- misc-modules
|   |-- Makefile
|   |-- complete.c    CHAPTER_5.4. Completions 机制
|   |-- faulty.c    CHAPTER_4.5.1. oops 消息
|   |-- hello.c        CHAPTER_2.2:超级用户可以加载和卸载模块示例。
|   |-- hellop.c    CHAPTER_2.8. 模块参数
|   |-- jiq.c        CHAPTER_7.6.1. 共享队列
|   |-- jit.c        CHAPTER_7.4.1. 定时器 API
|   |-- kdataalign.c    CHAPTER_11.4.4. 数据对齐展示编译器如何强制对齐
|   |-- kdatasize.c    CHAPTER_11.1:标准 C 类型的使用。显示长整型和指针在 64-位 平台    
                上的不同大小。
|   |-- seq.c        CHAPTER_4.3.1.4. seq_file 接口
|   |-- silly.c        CHAPTER_9.4.5. 在 1 MB 之下的 ISA 内存
|   `-- sleepy.c    CHAPTER_6.2.2. 简单睡眠
|-- misc-progs
|   |-- Makefile
|   |-- asynctest.c    CHAPTER_6.4. 异步通知
|   |-- dataalign    CHAPTER_11.4.4. 数据对齐展示编译器如何强制对齐
|   |-- dataalign.c    CHAPTER_11.4.4. 数据对齐展示编译器如何强制对齐
|   |-- datasize    CHAPTER_11.1:标准 C 类型的使用。
|   |-- datasize.c    CHAPTER_11.1:标准 C 类型的使用。
|   |-- gdbline        CHAPTER_4.6.1. 使用 gdb。为给定的模块可以创建这个命令
|   |-- inp        CHAPTER_9.2.3. 从用户空间的 I/O 存取。从命令行读写端口的小工具, 
                在用户空间.
|   |-- inp.c
|   |-- load50        CHAPTER_7.3.1.1. 忙等待。这个程序派生出许多什么都不做的进程, 但    
                是以一种 CPU-密集的方式来做.
|   |-- load50.c
|   |-- mapcmp        Simple program to compare two mmap‘d areas.
|   |-- mapcmp.c
|   |-- mapper        CHAPTER_15.2.6. 重新映射 RAM
|   |-- mapper.c
|   |-- nbtest        CHAPTER_6.2.6. 测试 scullpipe 驱动
|   |-- nbtest.c
|   |-- netifdebug    CHAPTER_17.3.3. 接口信息
|   |-- netifdebug.c
|   |-- outp        CHAPTER_9.2.3. 从用户空间的 I/O 存取。从命令行读写端口的小工具, 
                在用户空间.
|   |-- outp.c
|   |-- polltest    Test out reading with poll()
|   |-- polltest.c
|   |-- setconsole    CHAPTER_4.2.2. 重定向控制台消息
|   |-- setconsole.c
|   |-- setlevel    CHAPTER_4.2.1. printk
|   `-- setlevel.c
|-- pci
|   |-- Makefile
|   `-- pci_skel.c    CHAPTER_12.1.5. 注册一个 PCI 驱动
|-- sbull
|   |-- Makefile
|   |-- sbull.c        CHAPTER_16.1. 注册
|   |-- sbull.h
|   |-- sbull_load
|   `-- sbull_unload
|-- scull        CHAPTER_3. 字符驱动。scull( Simple Character Utility for     
                Loading Localities)
|   |-- Makefile
|   |-- access.c
|   |-- main.c
|   |-- main.c.bak
|   |-- pipe.c
|   |-- pipe.c.bak
|   |-- scull.h
|   |-- scull.init
|   |-- scull_load
|   `-- scull_unload
|-- scullc        CHAPTER_8.2.1. 一个基于 Slab 缓存的 scull: scullc
|   |-- Makefile
|   |-- main.c
|   |-- mmap.c
|   |-- scullc.h
|   |-- scullc_load
|   `-- scullc_unload
|-- sculld        CHAPTER_14.4.2.3. 设备结构嵌入
|   |-- Makefile
|   |-- main.c
|   |-- mmap.c
|   |-- sculld.h
|   |-- sculld_load
|   `-- sculld_unload
|-- scullp        CHAPTER_8.3.1. 一个使用整页的 scull: scullp
|   |-- Makefile
|   |-- main.c
|   |-- mmap.c
|   |-- scullp.h
|   |-- scullp_load
|   `-- scullp_unload
|-- scullv        CHAPTER_15.2.7. 重映射内核虚拟地址
|   |-- Makefile
|   |-- main.c
|   |-- mmap.c
|   |-- scullv.h
|   |-- scullv_load
|   `-- scullv_unload
|-- short        CHAPTER_10.2.4. 实现一个处理    (中断)
|   |-- Makefile
|   |-- short.c
|   |-- short_load
|   `-- short_unload
|-- shortprint        CHAPTER_10.5.1. 一个写缓存例子
|   |-- Makefile
|   |-- shortprint.c
|   |-- shortprint.h
|   |-- shortprint_load
|   `-- shortprint_unload
|-- simple        CHAPTER_15.2. mmap 设备操作。simple( Simple Implementation     
            Mapping Pages with Little Enthusiasm)
|   |-- Makefile
|   |-- simple.c
|   |-- simple_load
|   `-- simple_unload
|-- skull        LDD2:skull.c对ISAI/O的内存探测分析
|   |-- Makefile
|   |-- skull_clean.c
|   `-- skull_init.c
|-- snull        CHAPTER_17.2. 连接到内核
|   |-- Makefile
|   |-- snull.c
|   |-- snull.h
|   |-- snull_load
|   `-- snull_unload
|-- tty            CHAPTER_18. TTY 驱动
|   |-- Makefile
|   |-- tiny_serial.c
|   `-- tiny_tty.c
`-- usb            CHAPTER_13. USB 驱动
    |-- Makefile
    `-- usb-skeleton.c

18 directories, 111 files

原文链接

http://blog.csdn.net/geng823/article/details/37567557














































































































































以上是关于转:《Linux设备驱动程序3》源码目录结构和源码分析经典链接的主要内容,如果未能解决你的问题,请参考以下文章

Linux内核源码目录结构分析

《转》mac80211源码分析

Linux内核2.4.x的网络接口源码的结构[转]

2.15.2.linux内核源码目录结构2

linux内核源码分析之设备驱动(platform)

树莓派内核开发准备(内核源码获取源码目录树)