linux主次設備號介紹
linux主次設備號有哪些呢?下面是小編給大家介紹一下linux主次設備號,大家可以參考閲讀,更多詳情請關注應屆畢業生考試網。
1、主設備號與次設備號的功能
在Linux內核中,主設備號標識設備對應的驅動程序,告訴Linux內核使用哪一個驅動程序為該設備(也就是/dev下的設備文件)服務;而次設備號則用來標識具體且唯一的某個設備。
比如説在linux的終端打入命令:
**@ubuntu:/dev$ ls –l
crw-rw—- 1 root root 4, 0 2010-05-25 06:50 tty0
crw——- 1 root root 4, 1 2010-05-25 06:51 tty1
會出現很多的文件列表,這裏舉例字符串設備文件【字符串設備的開頭表示為c,當然塊設備表示為b】,這些文件可以稱為文件系統書的節點,都是位於/dev目錄下。另外上面2行中的數字,4【紫紅表示】,0,1【藍色表示】分別表示的是該設備的主設備號,次設備號。一個主設備號和一個次設備號就組成了該設備的.唯一標識符。雖然現在的linux內核允許多個驅動程序共享主設備號,但是現在大多數的設備仍然按照“一個主設備號對應一個驅動程序”的原則組織。次設備號用來指向驅動程序所實現的設備,內核本身基本上不會去關心關於次設備號的任何其他信息。
查看系統已經分配的主設備有哪些:
#cat /proc/devices
2、設備編號的內部表達
設備號的類型是dev_t類型(2.4內核為kdev_t),在<linux/coda.h>中定義。
typedef unsigned long dev_t ;
其中dev_t是一個32位的數,12位表示主設備號,另外20位表示次設備號。
2.6內核把主設備號由8位擴展到12位,而次設備號由8位擴展到20位。
獲取主設備號和次設備號的方法如下:
MAJOR(dev_t dev):根據設備號dev獲得主設備號;
MINOR(dev_t dev):根據設備號dev獲得次設備號;
在<linux/kdev_t.h> 中以上宏的定義如下:
#define MAJOR(dev) ((unsigned int) ((dev) >> MINORBITS))
#define MINOR(dev) ((unsigned int) ((dev) & MINORMASK))
根據主設備號major和次設備號minor構建設備號(轉換成dev_t的類型),可以使用
MKDEV(int major, int minor);
在<linux/kdev_t.h> 中以上宏的定義如下:
#define MKDEV(ma,mi) (((ma) << MINORBITS) | (mi))
3、雜項設備的介紹
misc設備,主設備號為10,函數註冊的方式也不一樣。使用如下:
misc_register(&XXX_miscdev);
misc_deregister(&XXX_miscdev);
上面的函數需指定miscdevice結構體,
在#include <linux/miscdevice.h>中定義:
C++代碼
struct miscdevice
{
int minor; //次設備號
const char *name; //設備驅動程序的名稱
struct file_operations *fops; //file_operation
struct miscdevice *next, *prev; //用於內部管理
devfs_handle_t devfs_handle; //用於內部管理
}
開發人員必須定義的filed包括:minor ,name 及fops如下:
C++代碼
static struct miscdevice mymisc_dev = {
r = MISC_DYNAMIC_MINOR,
= "mymisc",
= &mymisc_fops,
};
可以通過#cat /proc/misc來查看misc設備的註冊情況。
-
win10系統永久激活方法
導讀:Win10怎麼永久激活,下面為大家講解一下永久激活win10的方法。就跟隨本站小編一起去了解下吧,想了解更多相關信息請持續關注我們應屆畢業生考試網!1、點擊Win10桌面左下角的.開始圖標,從打開的擴展面板中點擊設置按鈕。2、在win10的設置面板依次點擊更新和安全...
-
四則XP系統使用技巧
XP操作系統可以説是得到了許多用户的支持,是一個功能強大,界面美觀的操作系統,但是其中也有許多技巧可以簡化我們的操作或者提高系統性能。只要我們在使用過程中稍加留心就會發現。一、快速關機對於快速關機,在網上也有許多方法,同時愛好是因人而異的,這裏也不妨介紹...
-
電腦開機密碼忘記應對策略
為了保護個人隱私,我們經常會將電腦設置上個人密碼,但是當忘記密碼時應該怎麼辦呢?下面是小編給大家提供的電腦開機密碼忘記應對策略,大家可以參考閲讀,更多詳情請關注應屆畢業生考試網。方法一在開機時,按下F8進入帶命令提示符的安全模式,輸入NETUSER用户名123456/A...
-
linux正確重啟MySQL的教程
由於是從源碼包安裝的Mysql,所以系統中是沒有紅帽常用的servciemysqldrestart這個腳本只好手工重啟有人建議Killallmysql。這種野蠻的方法其實是不行的,強制終止的話,如果造成表損壞,損失是巨大的。這裏推薦安全的重啟方法$mysql_dir/bin/mysqladmin-uroot-pshutdo...