欧美日韩不卡一区二区三区,www.蜜臀.com,高清国产一区二区三区四区五区,欧美日韩三级视频,欧美性综合,精品国产91久久久久久,99a精品视频在线观看

操作系統(tǒng)

linux主次設(shè)備號(hào)介紹

時(shí)間:2025-01-04 14:45:38 操作系統(tǒng) 我要投稿
  • 相關(guān)推薦

linux主次設(shè)備號(hào)介紹

  linux主次設(shè)備號(hào)有哪些呢?下面是小編給大家介紹一下linux主次設(shè)備號(hào),大家可以參考閱讀,更多詳情請(qǐng)關(guān)注應(yīng)屆畢業(yè)生考試網(wǎng)。

  1、主設(shè)備號(hào)與次設(shè)備號(hào)的功能

  在Linux內(nèi)核中,主設(shè)備號(hào)標(biāo)識(shí)設(shè)備對(duì)應(yīng)的驅(qū)動(dòng)程序,告訴Linux內(nèi)核使用哪一個(gè)驅(qū)動(dòng)程序?yàn)樵撛O(shè)備(也就是/dev下的設(shè)備文件)服務(wù);而次設(shè)備號(hào)則用來(lái)標(biāo)識(shí)具體且唯一的某個(gè)設(shè)備。

  比如說(shuō)在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

  會(huì)出現(xiàn)很多的文件列表,這里舉例字符串設(shè)備文件【字符串設(shè)備的開(kāi)頭表示為c,當(dāng)然塊設(shè)備表示為b】,這些文件可以稱為文件系統(tǒng)書(shū)的節(jié)點(diǎn),都是位于/dev目錄下。另外上面2行中的數(shù)字,4【紫紅表示】,0,1【藍(lán)色表示】分別表示的是該設(shè)備的主設(shè)備號(hào),次設(shè)備號(hào)。一個(gè)主設(shè)備號(hào)和一個(gè)次設(shè)備號(hào)就組成了該設(shè)備的唯一標(biāo)識(shí)符。雖然現(xiàn)在的linux內(nèi)核允許多個(gè)驅(qū)動(dòng)程序共享主設(shè)備號(hào),但是現(xiàn)在大多數(shù)的設(shè)備仍然按照“一個(gè)主設(shè)備號(hào)對(duì)應(yīng)一個(gè)驅(qū)動(dòng)程序”的原則組織。次設(shè)備號(hào)用來(lái)指向驅(qū)動(dòng)程序所實(shí)現(xiàn)的設(shè)備,內(nèi)核本身基本上不會(huì)去關(guān)心關(guān)于次設(shè)備號(hào)的任何其他信息。

  查看系統(tǒng)已經(jīng)分配的主設(shè)備有哪些:

  #cat /proc/devices

  2、設(shè)備編號(hào)的內(nèi)部表達(dá)

  設(shè)備號(hào)的類型是dev_t類型(2.4內(nèi)核為kdev_t),在<linux/coda.h>中定義。

  typedef  unsigned  long        dev_t ;

  其中dev_t是一個(gè)32位的數(shù),12位表示主設(shè)備號(hào),另外20位表示次設(shè)備號(hào)。

  2.6內(nèi)核把主設(shè)備號(hào)由8位擴(kuò)展到12位,而次設(shè)備號(hào)由8位擴(kuò)展到20位。

  獲取主設(shè)備號(hào)和次設(shè)備號(hào)的方法如下:

  MAJOR(dev_t dev):根據(jù)設(shè)備號(hào)dev獲得主設(shè)備號(hào);

  MINOR(dev_t dev):根據(jù)設(shè)備號(hào)dev獲得次設(shè)備號(hào);

  在<linux/kdev_t.h> 中以上宏的定義如下:

  #define MAJOR(dev)    ((unsigned int) ((dev) >> MINORBITS))

  #define MINOR(dev)    ((unsigned int) ((dev) & MINORMASK))

  根據(jù)主設(shè)備號(hào)major和次設(shè)備號(hào)minor構(gòu)建設(shè)備號(hào)(轉(zhuǎn)換成dev_t的類型),可以使用

  MKDEV(int major, int minor);

  在<linux/kdev_t.h> 中以上宏的定義如下:

  #define MKDEV(ma,mi)    (((ma) << MINORBITS) | (mi))

  3、雜項(xiàng)設(shè)備的介紹

  misc設(shè)備,主設(shè)備號(hào)為10,函數(shù)注冊(cè)的方式也不一樣。使用如下:

  misc_register(&XXX_miscdev);

  misc_deregister(&XXX_miscdev);

  上面的函數(shù)需指定miscdevice結(jié)構(gòu)體,

  在#include <linux/miscdevice.h>中定義:

  C++代碼

  struct miscdevice

  {

  int minor;                        //次設(shè)備號(hào)

  const char *name;          //設(shè)備驅(qū)動(dòng)程序的名稱

  struct file_operations *fops;    //file_operation

  struct   miscdevice  *next,  *prev;     //用于內(nèi)部管理

  devfs_handle_t devfs_handle;        //用于內(nèi)部管理

  }

  開(kāi)發(fā)人員必須定義的filed包括:minor ,name 及fops如下:

  C++代碼

  static struct miscdevice mymisc_dev = {

  .minor = MISC_DYNAMIC_MINOR,

  .name = "mymisc",

  .fops = &mymisc_fops,

  };

  可以通過(guò)#cat /proc/misc來(lái)查看misc設(shè)備的注冊(cè)情況。

【linux主次設(shè)備號(hào)介紹】相關(guān)文章:

Linux系統(tǒng)調(diào)用設(shè)備的ioctl函數(shù)10-20

Linux系統(tǒng)字符設(shè)備驅(qū)動(dòng)框架筆記09-12

Linux系統(tǒng)中怎么掛載外界設(shè)備06-14

linux常用查看硬件設(shè)備信息命令07-16

Linux入門(mén)學(xué)習(xí) GNOME介紹11-01

Linux環(huán)境下保護(hù)數(shù)據(jù)的方法和設(shè)備信息10-15

linux下卸載apache方法介紹09-12

Linux的主要特點(diǎn)及功能介紹08-12

linux磁盤(pán)清理方法介紹09-27