艺术的追求从编程开始

C/C++/UNIX/PYTHON/ALGORITHM

导航

随笔分类 -  LINUX

linux字符设备驱动程序怎么写
摘要:摘要: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. 阅读全文

posted @ 2012-05-14 21:09 Rambo.Wang 阅读(1413) 评论(0) 推荐(0)

LINUX内核符号表
摘要:1.内核导出符号用EXPORT_SYMBOL()或者EXPORT_SYMBOL_GPL()导出。2.系统内核符号导出记录在/proc/kallsyms文件中,我们可以使用cat /proc/kallsyms查看当前环境下的导出内核符号。3.示例:(1)导出符号的内核模块(2)导入符号的内核模块 阅读全文

posted @ 2012-05-02 15:42 Rambo.Wang 阅读(2149) 评论(0) 推荐(0)

如何写makefile
摘要: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 目标文件列... 阅读全文

posted @ 2012-05-01 16:28 Rambo.Wang 阅读(404) 评论(0) 推荐(0)

linux如何添加内核模块
摘要: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 阅读全文

posted @ 2012-05-01 15:53 Rambo.Wang 阅读(729) 评论(0) 推荐(0)

简单配置VIM+GDB调试
摘要:最近有试了下vimgdb这个玩意,感觉比clewn调试更加方便一些,首先clewn要开2个窗口(一个clewn,一个gvim),不像emacs在一个里面就搞定,而vimgdb则也能在一个窗口里面完成调试,而且他的快捷键更好用!!!下面图中打印currentThread变量以及他指向的变量,就是通过移动光标到currentThread下面,ctrl+p和ctrl+x实现的,对于nachos调试很有帮助,感兴趣的可以试试看。附件里面包括:.vim文件夹和 .vimrc配置文件,都不需要改动,直接拷贝到自己的家目录。vimgdb需要重新编译vim,编译的时候加入gdb,下面是详细步骤:1、下载vim 阅读全文

posted @ 2012-04-21 12:26 Rambo.Wang 阅读(9865) 评论(2) 推荐(0)