linux驱动开发学习笔记(二)
scull字符驱动学习笔记
目录
1 scull驱动简介
2 主次编号
3 scull源码分析
-------------------------
| 1 scull驱动简介 |
-------------------------
scull是一个字符驱动,我们操作一块内存区好像它是一个设备。scull是硬件设备关联不大, 所以它是通用可移植的。
-----------------------
| 2 主次编号 |
----------------------
2.1
随便提提主次编号吧!
字符设备通过文件系统中的名字来存取,也就是常说的设备文件。我们查看/dev目录下的文件,会查看到系统下所有设备文件。
主编号标识设备相连的驱动。次编号用来决定引用哪个设备,依据你的驱动是如何编写的, 你可以从内核得到一个你的设备的直接指针。内核允许多个驱动共享主编号。
2.2
一些主设备编号是静态分给最普通的设备的,对于新驱动,大多数情况下使用动态分配来获取你的主设备号。
动态分配主设备号函数
alloc_chrdev_region
动态分配的缺点是你无法提前创建设备节点, 因为分配给你的模块的主编号会变化. 对于驱动的正常使用, 这不是问题, 因为一旦编号分配了, 你可从 /proc/devices 中读取它。为使用动态主编号来加载一个驱动, 因此, 可使用一个简单的脚本来代替调用 insmod, 在调用insmod 后, 读取 /proc/devices 来创建特殊文件.
在scull源码中获取主编号的代码
if (scull_major) {
dev = MKDEV(scull_major, scull_minor);
result = register_chrdev_region(dev, scull_nr_devs, "scull");
} else {
result = alloc_chrdev_region(&dev, scull_minor, scull_nr_devs, "scull");
scull_major = MAJOR(dev);
}
if (result < 0) {
printk(KERN_WARNING "scull: can't get major %d\n", scull_major);
return result;
}
-------------------
| 3 scull源码分析 |
-------------------
scull 设备结构体
struct scull_dev {
struct scull_qset *data; /* Pointer to first quantum se
相关文档:
一般来说,目前新版的 Linux 预设可以支持的网络卡芯片组数量已经很完备了,很多网络卡芯片都已经被支持,例如RLT 8139 芯片 ( RealTek 8139 ) 的网络卡所以使用者可以很轻易的设定好他们的网络卡。不过,如果万一不幸核心没有支持该网络卡的话,那么可以透过重新编译核心或者编译网络卡驱动模块 ( Modul ......
VMware中的RedHat Eneterprise
Linux 5系统时间总比主机的Windows XP慢。即使用date命令设置Linux时间与Windows XP时间一致,Linux的时间仍会逐渐的慢下来。这是很头痛的问题,如果不能解决,当在两个系统间交换文件时,可能会导致编译出现异常。电脑所使用的CPU是Intel Core2 Duo T7250,主频2.0G;而 ......
有时候在程序里面需要打开多个文件,进行分析,系统一般默认数量是1024,(用ulimit -a可以看到)对于正常使用是够了,但是对于程序来讲,就太少了。
修改办法:
重启就OK
修改2个文件。
1./etc/security/limits.conf
vi /etc/security/limits.conf
加上:
* soft nofile 8192
* hard nofile 20480
2./etc/pam.d/l ......
这是在实验室搭建局域网时的配置写在这里吧,等在回忆那段大学生活时还是很美好的!
环境:外网IP 202.206.249.186 子网掩码 255.255.255.0 默认网关 202.206.249.1
内网IP192.168.0.1 子网掩码 255 ......
vi filename :打开或新建文件,并将光标置于第一行首
vi +n filename :打开文件,并将光标置于第n行首
vi + filename :打开文件,并将光标置于最后一行首
vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处
vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename
......