文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>杂项

杂项

时间:2009-06-04  来源:linuxmemo

1.驱动(driver)和设备(device)的关系:
  这涉及到两个/dev/文件夹 和 /proc/devices文件
  /dev/目录下的文件表示设备,这些设备是通过mknod创建的.
  /proc/devices文件的每一项都表示一个设备类型,也即驱动.
  mknod在创建/dev/下的设备时,需要指定设备类型。如:
  mknod /dev/somedev c 1 20
    1(major)表示类型为mem.查看/proc/devices文件看到,1对应的是mem. 通过ls -l /dev查看/dev底下有好几个设备类型都是mem。也就是说当你register_chrdev()时,你只是写了一块代码,这些代码还没有具体地跑起来,mknod创建设备文件,由于指定了你的设备类型(major),这个设备文件对应的write,read,ioctl函数和你写的函数绑定在一起了。当read write ioctl这个设备文件时就执行了你写的代码。
    20(minor)是为了区分1这种类型下的多个设备。 major与minor一起才能确定这个设备。
  设备类型由register_chrdev(),register_blkdev()注册。register_chrdev(),register_blkdev()可以由kernel调用,也可以由内核模块调用。

2.模块(module)和驱动(driver)的关系:
  模块就是*.ko文件,可以由insmod动态地加载到内核,模块调用register_chrdev( ),这个模块也就是驱动了。

3.linux的模块主要有几类,可以动态增强内核功能:

Functionality

Functions for Dynamic Registration

Character devices

(un)register_chrdev( )

Block devices

(un)register_blkdev( )

Binary formats

(un)register_binfmt( )

File systems

(un)register_filesystem( )

Serial interfaces

(un)register_serial( )

Network adapters

(un)register_netdev( )

Layer-3 protocols

dev_add_pack( ), dev_remove_pack( )

Layer-4 protocols (TCP/IP)

inet_add_protocol( ), inet_del_protocol( )

Console drivers

tty_(un)register_driver( )

Symbol tables

(un)register_symtab( )

Modules

init_module( ), cleanup_module( )

相关阅读 更多 +
排行榜 更多 +
超级冒险王安卓版

超级冒险王安卓版

休闲益智 下载
玩具小镇手机版

玩具小镇手机版

休闲益智 下载
这一关特上头手机版

这一关特上头手机版

休闲益智 下载