Linux系统下 内核模块开发
1. modprobe 加载内核模块
a) 在 /etc/module.conf 中查找别名
b) 在 lib/modules/version/module.dep 中判断是否有依赖模块需要被提前加载(该文件被depmod-a建立)
2. 2.4内核中不一定非用init_module和cleanup_module做开始和结束的函数,但需要用module_init和
module_exit申明。
3. 宏 __init 和 __exit 可以使函数在运行完成后自动回收内存(限模块中),__initdata用于变量,
举例:
#include //需要包含的头文件
static int ntest __initdata = 3;
static int __init test_init(void) {...}
static void __exit test_exit(void) {...}
module_init(test_init); //申明放在实现函数后
module_exit(test_exit);
4. 一些模块说明的相关宏,可以用objdump可以查看相关信息。
MODULE_LICENSE() 说明代码许可类型
MODULE_DESCRIPTION() 模块描述
MODULE_AUTHOR() 作者
MODULE_SUPPORTED_DEVICE() 模块支持的设备
5. 参数传递使用宏 MODULE_PARM(变量名,类型)。
支持的类型有"b"比特 "h"短整 "i"整数 "l"长整 "s"字符串
static int myint = 9;
static char *mystr = "test"; //注意需要传递参数的默认值
MODULE_PARM(myint, "i");
MODULE_PARM(mystr, "s");
6. 多个文件编译成一个内核模块:
a) 需要在一个源程序中加入
#define __NO_VERSION__
#include
b) 编译同普通的单个内核文件
c) 连接:ld -m elf_i386 -r -o <1st src file.o> <2nd src file.o>
7. strace 查一个程序所用到的系统调用
8. 关于file_operations结构体定义在linux/fs.h文件中。
使用方式:
struct file_operations fops = {
read: device_read,
write: device_write,
open: device_open,
release: device_release
}
C99的使用方式:
struct file_operations fops = {
.read = device_read,
.write = device_write,
.open = device_open,
.release = device_release
}
相关文档:
1. HCI层协议概述:
HCI提供一套统一的方法来访问Bluetooth底层。如图所示:
从图上可以看出,Host Controller Interface(HCI) 就是用来沟通Host和Module。Host通常就是PC, Module则是以各种物理连接形式(USB,serial,pc-card等)连接到PC上的bluetooth Dongle。
在Host这一端:application,SDP,L2cap等协议 ......
Linux内存初始化技术(initrd)用于支持两阶段的系统引导过程,是在系统启动过程中被挂载的临时root文件系统(译者注:这里的root文件系统是指的根文件系统)。initrd包含很多可执行程序和驱动,并允许在临时的内存磁盘根文件系统被卸载,内存被释放后挂载真实的root文件系统。在许多嵌入式Linux文件系统中,initrd是最终的 ......
使用sudo可以在以非root用户登录时临时获得root权限,并执行需要的命令。
可以使用sudo的用户可以叫做sudoer。
添加sudoer的方法(假设您已经安装sudo):
执行
# visudo
或
# sudoedit
提示:
有些发行版的sudo提供了sudoedit,有的则提供了visudo,功能上基本是一样的。
你也可以使用其他编辑器如vi进行 ......
1 引言
线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中
期,solaris是这方面的佼佼者。传统的Unix也支持线程的概念,但是在一个进程(process)中只允许有一个线程,这样多线程就意味着多进
程。现在,多线程技术已经被许多操作系统所支持,包括Windows/NT,当然,也包括Li ......
尚学堂Linux笔记(一)
MBR:硬盘MBR(Master Boot Record)就是我们经常说的”硬盘主引导记录”,它是由FDISK等磁盘分区命令写在硬盘绝对0扇区的一段数据,它由主引导程序、硬盘分区表及扇区结束标志字(55AA).
这三部分组成,如下:
组成部分
所占字节数
内容
主引导程序
4 ......