易截截图软件、单文件、免安装、纯绿色、仅160KB

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网卡驱动程序的编译与安装

    一般来说,目前新版的 Linux 预设可以支持的网络卡芯片组数量已经很完备了,很多网络卡芯片都已经被支持,例如RLT 8139 芯片 ( RealTek 8139 ) 的网络卡所以使用者可以很轻易的设定好他们的网络卡。不过,如果万一不幸核心没有支持该网络卡的话,那么可以透过重新编译核心或者编译网络卡驱动模块 ( Modul ......

解决VMware上RedHat Linux系统时间过快或过慢的问题

    VMware中的RedHat Eneterprise
Linux 5系统时间总比主机的Windows XP慢。即使用date命令设置Linux时间与Windows XP时间一致,Linux的时间仍会逐渐的慢下来。这是很头痛的问题,如果不能解决,当在两个系统间交换文件时,可能会导致编译出现异常。电脑所使用的CPU是Intel Core2 Duo T7250,主频2.0G;而 ......

linux ulimit max open files

有时候在程序里面需要打开多个文件,进行分析,系统一般默认数量是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 ......

双网卡linux快速搭建nat主机共享上网!

这是在实验室搭建局域网时的配置写在这里吧,等在回忆那段大学生活时还是很美好的!
环境:外网IP 202.206.249.186 子网掩码 255.255.255.0 默认网关 202.206.249.1
          内网IP192.168.0.1           子网掩码 255 ......

Linux VI命令使用大全

vi filename :打开或新建文件,并将光标置于第一行首
  vi +n filename :打开文件,并将光标置于第n行首
  vi + filename :打开文件,并将光标置于最后一行首
  vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处
  vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename
......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号