linux 设备文件属性

来源:互联网 发布:js select 编辑:程序博客网 时间:2024/06/05 17:28

1.

 

cd /dev


设备文件(也叫设备节点)点如下:

  1 charMemory devices

  1 = /dev/memPhysical memory access

  2 = /dev/kmemKernel virtual memory access

  3 = /dev/nullNull device

  4 = /dev/portI/O port access

  5 = /dev/zeroNull byte source

  6 = /dev/coreOBSOLETE - replaced by /proc/kcore

  7 = /dev/fullReturns ENOSPC on write

  8 = /dev/randomNondeterministic random number gen.

  9 = /dev/urandomFaster, less secure random number gen.

 10 = /dev/aioAsynchronous I/O notification interface

 11 = /dev/kmsgWrites to this come out as printk's

 12 = /dev/oldmemUsed by crashdump kernels to access

the memory of the kernel that crashed.


2.查看当前已经加载的设备驱动程序的主设备号

 

root@ubuntu:/dev# cat /proc/devices

Character devices:

  1 mem

  4 /dev/vc/0

  4 tty

  4 ttyS

  5 /dev/tty

  5 /dev/console

  5 /dev/ptmx

  5 ttyprintk

  6 lp

  7 vcs

 10 misc

 13 input

 14 sound

 21 sg

 29 fb

 99 ppdev

108 ppp

116 alsa

128 ptm

136 pts

180 usb

188 ttyUSB

189 usb_device

216 rfcomm

226 drm

251 hidraw

252 bsg

253 watchdog

254 rtc

 

Block devices:

  1 ramdisk

  2 fd

259 blkext

  7 loop

  8 sd

  9 md

 11 sr

 65 sd

 66 sd

 67 sd

 68 sd

 69 sd

 70 sd

 71 sd

128 sd

129 sd

130 sd

131 sd

132 sd

133 sd

134 sd

135 sd

252 device-mapper

253 virtblk

254 mdp

 

 

3.主设备号与次设备号的关系,阅读 linux - 3.1_TQ2416\Documentation\devices.txt文件。可以理解为分类,例如猫,然后分成短毛猫,加菲猫等。

 

 例如:主设备号为19(应该是串口设备吧),设备类型是字符设备,次设备号=文件名

 

19     char         Cyclades serial card

                         0 = /dev/ttyC0 First Cyclades port

                          ...

                         31 = /dev/ttyC31 32nd Cyclades port

 14     char        Open Sound System (OSS)

  0 = /dev/mixerMixer control

  1 = /dev/sequencerAudio sequencer

  2 = /dev/midi00First MIDI port

  3 = /dev/dspDigital audio

  4 = /dev/audioSun-compatible digital audio

  6 =

  7 = /dev/audioctlSPARC audio control device

  8 = /dev/sequencer2Sequencer -- alternate device

 16 = /dev/mixer1Second soundcard mixer control

 17 = /dev/patmgr0Sequencer patch manager

 18 = /dev/midi01Second MIDI port

 19 = /dev/dsp1Second soundcard digital audio

 20 = /dev/audio1Second soundcard Sun digital audio

 33 = /dev/patmgr1Sequencer patch manager

 34 = /dev/midi02Third MIDI port

 50 = /dev/midi03Fourth MIDI port


有上面可以知道为什么要有主设备号和次设备号,为了更好的分类。


3.

类unix系统对设备的访问都是基于文件形式的。

在类unix系统中,你要访问一个硬件设备。一般和访问一个普通文件差不多。

因此,/dev下的设备节点就被作为这样的一类特殊文件来存在。

在驱动程序中同样需要实现各种文件的操作调用,如open,release,read,write,ioctl等。

应用程序通过open("/dev/xxx",O_RDWR)这样的代码来打开设备。

驱动程序通过这样的节点向应用程序提供各种服务:如read,write,ioctl等。

 

一般讲驱动程序开发的书都先讲字符设备驱动,通常是写一个简单的驱动,然后insmod加载模块,mknod创建设备节点。

但是讲到设备文件系统的时候,说2.6内核引进udev设备文件系统,实现动态创建和删除文件节点,就是不用手动去mknod。

为什么就节点,体会一下,例如竹子的节,关节等。





0 0
原创粉丝点击