Chinaunix首页 | 论坛 | 博客
  • 博客访问: 851956
  • 博文数量: 90
  • 博客积分: 766
  • 博客等级: 军士长
  • 技术积分: 1867
  • 用 户 组: 普通用户
  • 注册时间: 2011-12-18 08:42
个人简介

linux

文章分类

全部博文(90)

文章存档

2021年(2)

2020年(2)

2017年(1)

2015年(11)

2014年(1)

2013年(53)

2012年(16)

2011年(4)

分类: LINUX

2015-02-09 19:56:06

        Linux设备文件是linux开发者与设备的桥梁,linux开发者通过设备文件才能操作到具体的设备。linux管理设备有几种方法,在linux2.3的某个版本之前都还是采用的静态创建设备文件的方法来创建设备文件的,这种方法已经被后来的devfs和udev所替代。
        在静态创建设备文件的方法当中,linux内核在初始化的时候会通过register_chrdev来创建所有可能的字符设备,但并不会创建设备文件,只是把主次设备号和设备操作关联起来了,这时主次设备号与设备名的对应关系是固定的,这种对应关系由LANANA(Linux Assigned Names And Numbers thority)来确定,也可以在内核文件Documentation/devices.txt当中得到。
        在内核启动之后进入,linux需要执行脚本能MAKEDEV根据LANANA来创建所有可能的设备文件,这样linux应用开发者就可以通过设备文件来关联主次设备号从而操作到具体的设备文件。
脚本MAKEDEV的部分内容如下:

点击(此处)折叠或打开

  1. for arg; do
  2.     case $arg in
  3.     generic|generic-nopty)
  4.         $0 $opts std
  5.         $0 $opts fd
  6.         if [ $arg = "generic" ]; then $0 $opts pty; fi;
  7.         if [ $arg = "generic-nopty" ]; then $0 $opts ptmx; fi;
  8.         $0 $opts console
  9.         $0 $opts ttyS0 ttyS1 ttyS2 ttyS3
  10.         $0 $opts lp
  11.         $0 $opts parport
  12.         $0 $opts busmice
  13.         $0 $opts fb
  14.         $0 $opts ram
  15.         $0 $opts loop
  16.         $0 $opts fd0 fd1
  17.         $0 $opts hda hdb hdc hdd hde hdf hdg hdh
  18.         $0 $opts sda sdb sdc sdd
  19.         $0 $opts sg0 sg1 sg2 sg3
  20.         $0 $opts scd0 scd1 scd2 scd3
  21.         $0 $opts audio
  22.         $0 $opts rtc
  23.         $0 $opts ppp
  24.         ;;
  25.     std)
  26.         makedev mem c 1 1 $kmem
  27.         makedev kmem c 1 2 $kmem
  28.         makedev null c 1 3 $public
  29.         makedev port c 1 4 $kmem
  30.         makedev zero c 1 5 $public
  31.         symlink core $procfs/kcore
  32.         makedev full c 1 7 $public
  33.         makedev random c 1 8 $readable
  34.         makedev urandom c 1 9 $readable
  35.         makedev aio c 1 10 $readable
  36.         makedev tty c 5 0 $tty
  37.         ;;
  38.                ...........
         可以看出MAKEDEV脚本在递归的调用自己,从而创建所有linux可能的设备文件。

阅读(1708) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~