摘要:摘要:linux设备驱动程序第三版第三章笔记1.scull:simple character utility for loading localities.2.scull0-scull3: 4个global and persistent设备,映射到的物理内存区是不会消失的。 scullpipe0-scullpipe3:4个FIFO设备,一个进程读一个进程写。3.主次编号: 3.1 major number标志了设备相联系的driver。 minor number用来决定引用了哪个设备。 3.2 设备编号内部表示: dev_t类型<linux/types.h>中含有设备编号 获得d.
阅读全文
摘要:1.内核导出符号用EXPORT_SYMBOL()或者EXPORT_SYMBOL_GPL()导出。2.系统内核符号导出记录在/proc/kallsyms文件中,我们可以使用cat /proc/kallsyms查看当前环境下的导出内核符号。3.示例:(1)导出符号的内核模块(2)导入符号的内核模块
阅读全文
摘要:1.一个简单的例子:TOPDIR = ../include $(TOPDIR)Rule.makEXTRA_LIB +=EXEC = $(INSTALL_DIR)/helloOBJS = hello.oall:$(EXEC)$(EXEC):$(OBJS) $(CC) $(LDFLAGS) -o $@ $(OBJS) $(EXTRA_LIBS)install: $(EXP_INSTALL) $(EXEC) $(INSTALL_DIR)clean: -rm -f $(EXEC) *.elf *.gdb *.o好了,其中:CC 指明编译器的宏EXEC表明生成的执行文件名称的宏OBJS 目标文件列...
阅读全文
摘要:1.编写模块代码: 简单例子:#include<linux/kernel.h>#include<linux/module.h>#Inlcude<linux/init.h>static int __init hello_init(void){ printk(KERN_INFO "Hello world\n"); return 0;}static void __exit hello_exit(void);{ printk(KERN_INFO "Goodbye world\n");}module_init(hello_ini
阅读全文
摘要:最近有试了下vimgdb这个玩意,感觉比clewn调试更加方便一些,首先clewn要开2个窗口(一个clewn,一个gvim),不像emacs在一个里面就搞定,而vimgdb则也能在一个窗口里面完成调试,而且他的快捷键更好用!!!下面图中打印currentThread变量以及他指向的变量,就是通过移动光标到currentThread下面,ctrl+p和ctrl+x实现的,对于nachos调试很有帮助,感兴趣的可以试试看。附件里面包括:.vim文件夹和 .vimrc配置文件,都不需要改动,直接拷贝到自己的家目录。vimgdb需要重新编译vim,编译的时候加入gdb,下面是详细步骤:1、下载vim
阅读全文