日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

/dev 设备文件属性解读

發布時間:2025/3/20 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 /dev 设备文件属性解读 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一.???????知識點

1.??????設備號;

2.??????創建設備文件;

3.??????設備注冊;

4.??????重要數據結構;

5.??????設備操作;

?

二.主設備號

字符設備通過字符設備文件來存取。字符設備文件由使用ls? -l?的輸出的第一列的”C”標識;

如果使用ls –l?命令,會看到在設備文件項中有2個數(由一個逗號分隔)這些數字就是設備文件的主次設備編

舉例:

crw-rw----??1 root uucp???? 4,? 66 04-18 21:59 ttyS2

crw-rw----??1 root uucp???? 4,? 67 04-18 21:59 ttyS3

crw-rw-rw-??1 root root???? 1,?? 9 04-18 22:00 urandom

crw-rw----??1 root root?? 249,?? 0 04-18 22:00 usbdev1.1_ep00

crw-rw----??1 root root?? 249,?? 1 04-18 22:00 usbdev1.1_ep81

crw-rw----??1 root root?? 249,?? 2 04-18 22:00 usbdev2.1_ep00

crw-rw----??1 root root?? 249,?? 3 04-18 22:00 usbdev2.1_ep81

crw-rw----??1 root root?? 251,?? 0 04-18 22:00 usbmon0

crw-rw----??1 root root?? 251,?? 1 04-18 22:00 usbmon1

crw-rw----??1 root root?? 251,?? 2 04-18 22:00 usbmon2

crw-rw----??1 vcsa tty????? 7,?? 0 04-18 22:00 vcs

crw-rw----??1 vcsa tty????? 7,?? 1 04-18 22:00 vcs1

crw-rw----??1 vcsa tty????? 7,?? 2 04-18 22:00 vcs2

crw-rw----??1 vcsa tty????? 7,?? 3 04-18 22:00 vcs3

crw-rw----??1 vcsa tty????? 7,?? 4 04-18 22:00 vcs4

?

設備號

設備號用來做什么??

設備號的作用

?

1>.主設備號用來標識設備文件相連驅動程序。

次設備號被驅動程序用來辨別操作的是哪個設備

?

*****主設備號用來反映設備類型******

***次設備號用來區分同類型的哪一個設備***

?

三.主次設備號

Q:內核中如何描述設備號?

A:dev_t

*****其實質為unsigned??int? 32位整數,其中高12位為主設備號,低20位為次設備號。

?

Q:如何從dev_t中分解出主設備號?

AMAJOR(dev_t??dev)

?

Q:如何從dev_t只分解出次設備號?

AMINOR(dev_t dev)

?

四.分配主設備號

Linux?內核如何給設備分配主設備號?

可以采用靜態申請,動態分配兩種方法

(動態、靜態是針對主設備號來說的)

?

靜態申請

int??register_chrdev_region(dev_t from ,unsigned count ,const char *name)

?

功能:申請使用從from開始的count?個設備號(主設備號不變,次設備號增加)

參數:

From :希望申請使用的設備號數目

Count :希望申請使用的設備號數目

Name :設備名(體現在/proc/devices

?

動態分配

?

方法:

使用alloc_chrdev_region分配設備號

?

優點:簡單,易于驅動推廣

缺點:無法在安裝驅動前創建設備文件(因為安裝前還沒分配到主設備號。)

?

解決辦法:

安裝驅動后,從/proc/devices中查詢設備號

?

動態分配

Int alloc_chrdev_region(dev_t *dev,??unsigned baseminor,? unsigned count,? const char *name)

功能:動態申請count個設備號,第1個設備號的次設備號為baseminor.

參數:

Dev:分配到的設備號

Baseminor :起始次設備號

Count :要注冊的設備號個數

Name :設備名(體現在/proc/devices

主設備號是動態產生的,次設備號(的第一個)是要指定的;

?

??五.注銷設備號

???????不論使用何種方法分配設備號,都應該在不再使用它們的時候釋放這些設備號。

?

Void unregister_chrdev_region(dev_t??from,? unsigned count)

?功能:

釋放從from?開始的count個設備號

?

六.創建設備文件

兩種方法:1.使用mknod命令手工創建;

???2.自動創建

?

手工創建:

mknod用法:

mknod??filename type major minor

filename :設備文件名

type:?設備文件類型

major主設備號

minor?:次設備號

?

例如:mknod serial0??c ?100 ?0

?

之后?ls??serial0??命令可查

不要0也可以,通過0知道是第幾個設備

?

七.重要結構

Linux?字符設備驅動程序設計中,有3種非常重要的數據結構:

1.??????struct??file

2.??????struct??inode

3.??????struct??file_operations

?

Stuct??file?

代表一個開打的文件。系統中每一個打開的文件在內核空間都有一個關聯的struct??file .??它由內核在打開文件時創建,在文件關閉后釋放。

(一個文件被打開一次對應一個Struct??file,這個文件同時被打開10次,則對應10Struct??file)

?

***重要成員

Loff_t??f_pos? /*文件讀寫位置*/

Struct??file_operations *f_op

?

struct??inode

用來記錄文件的物理上的信息。因此,他和代表打開文件的file結構是不同的。

一個文件可以對應多個file結構,但只有一個inode結構

?

轉載于:https://blog.51cto.com/yumsun/1690558

總結

以上是生活随笔為你收集整理的/dev 设备文件属性解读的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。