Linux内核源代码目录结构——P56
Linux内核的编译与加载,即Makefile和Kconfig——P61
Linux中GNU C语法,比如一些语句格式,typeof(), 标号元素, 当前函数名 __FUNCTION__, __func__,特殊属性说明,do{} while(0)
看目录树 tree -a
模块 modinfo, remod, lsmod, 模块参数,module_param(book_name,charp, S_IRUGO)——P87
如 insmod book.ko book_name="Gook Book"
看日志文件 /var/log/messages
MODULE_ALAIS(alternate_name) 别名
MODULE_DEVICE_TABLE所支持的设备表
模块的计数MOD_INC_USE_COUNT,MOD_DEC_USE_COUNT try_module_get ,module_put 等等——P90
文件系统中创建打开定位,一些打开标志,访问权限,比如O_RDONLY, S_IRUSR等等——P93
Linux文件系统目录结构——P97
file结构体——P99
inode结构体——P100
devfs设备文件系统
首先创建设备,注销设备为:register_chrdev(XXX_MAJOR,DEVICE_NAME,&XXX_fops); unregister_chrdev(XXX_MAJOR,DEVICE_NAME);
然后创建撤销设备文件:devfs_register(), devfs_unregister()
udev 和 dev的区别:undev完全在用户态下工作,比如命名策略,权限控制和事件处理都是在用户态下的,而dev将策略放在了内核空间,比如限定了第一个 dev/girl0 dev/girl1 等等。理想的两个打印机命名方式采用他们的序列号或者其他标志信息,但是devfs无法做到这一点,udev却可以
sysfs文件系统把连接在系统上的设备和总线组织成为一个分级的文件,他们可以由用户空间存取,向用户空间到处内核的数据结构以及它们的属性。——P104
bus_type,device_driver,device描述总线,驱动,设备,这3个结构体在 include/linux/device.h中,以及各个attribute,bus_attribute,driver_attribute,device_attribute——P109
udev的规则文件和组成——P111 其中udev的轻量级版本为mdev,它已经集成于busybox
udev中匹配关键字:ACTION,KERNEL,BUS,SYSFS,SUBSYSTEM等等
赋值关键字:NAME,SYMLINK,OWNER,GROUP,IMPORT等等
mdev -s ——P113