linux 内核源代码目录结构概述
进入linux源代码目录,会看到若干子目录和文件。现代操作系统一般由进程管理,内存管理,文件系统,驱动程序和网络协议栈组成。
arch : 包含了所有和体系结构相关的核心代码。它下面的每个子目录代表一种linux支持的体系结构。如arm目录就是与ARM体系结构兼容的CPU的子目录;/arch/i386则是intel CPU及其兼容体系结构的子目录.
drivers: 包含了系统中所有的设备驱动程序,linux中的设备被划分为几类,每一类都有对应的目录。
fs:存放了linux支持的文件系统的代码。不同的文件系统有不同的子目录对应。
include:包含了编译内核所需要的大部分头文件。
init:包含了内核初始化代码(系统引导代码在arch中).
ipc:包含了核心进程间的通信代码。
kernel: 进程管理的核心代码。与处理器相关的代码放在了arch/*/kernel中。
lib:核心的库代码目录。与处理器体系结构相关的文件放在了arch/*/lib中
mm:内存管理代码目录。与硬件体系结构相关的文件放在了arch/*/mm中。
net:内核的网络部分代码,每一个子目录对应一种网络协议。
scripts:包含了内核的配置脚本文件。
Documentation:内核文档目录,是理解linux源代码的直接辅助来源。
根目录和大部分子目录下都有Makefile和Kconfig两个文件,内核的配置和编译就依赖于这两个文件。
Linux kernel Makefile 的规则:
Linux内核Makefile体系可以分为五部分:
Makefile: 位于内核源代码根目录的Makefile. 称为TOP Makefile
.config: 内核配置文件。
arch/arch_name/Makefile: 各个体系结构独立代码中的Makefile 成为Arch Makefile
kbuild Makefile: 整个源代码目录中约有500个这样的Makefile
scripts/Makfile.*:适用于各种Kbuild Makefile的一般规则。
Top Makefile读取由内核配置程序生成的.config文件,它负责生成两个重要的产品:驻留内核(vmlinux)和内核模块(module)。Top Makfile递归的进入各级子目录来编译所需的源代码,进入哪些目录则由内核配置过程决定。TOP Makefile中必须显示地包含一个Arch Makefile而且只能够包含一个,以提供所有与体系结构相关的信息。
每一个子目录中都有一个kbuild Makefile,它负责执行具体的编译任务。kbuild Makefile从.config文件中
相关文档:
例一:发送Signaling Packet:
Signaling Command是2个Bluetooth实体之间的L2CAP层命令传输。所以得Signaling Command使用CID 0x0001.
多个Command可以在一个C-frame(control frame)中发送。
如果要直接发送Signaling Command.需要建立SOCK_RAW类型的L2CAP连接Socket。这样才有机会自己填充Command Code,Identi ......
Service Discovery Protocol(SDP)提供一种能力,让应用程序有方法发现哪种服务可用以及这种服务的特性。
服务发现协议(SDP或Bluetooth SDP)在蓝牙协议栈中对蓝牙环境中的应用程序有特殊的含意,发现哪个服务是可用的和确定这些可用服务的特征。SDP定义了bluetooth client发现可用bluetooth server服务和它们的特征的方法。 ......
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。下面详细介绍它的使用方法。
top - 01:06:48 up 1:22, 1 user, load average: 0.06, 0.60, 0.48
Tasks: 29 total, 1 running, 28 sleeping, 0 stopped, 0 zombie
......
今天学习了在linux2.6平台下的 char drvier ,在linux下推荐使用的是cdev结构体来实现对character设备的描述,代码如下
/*This module is desired for sunplusapp s3c2440_board */
#include <linux/fs.h>
#include <linux/types.h>
#include <linux/cdev.h>
#include <linux/kernel.h> ......