亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ch14s07.html

?? 介紹Linux設備驅動開發
?? HTML
?? 第 1 頁 / 共 2 頁
字號:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>14.7.&#160;熱插拔-Linux設備驅動第三版(中文版)-開發頻道-華星在線</title>
<meta name="description" content="驅動開發-開發頻道-華星在線" />
<meta name="keywords" content="Linux設備驅動,中文版,第三版,ldd,linux device driver,驅動開發,電子版,程序設計,軟件開發,開發頻道" />
<meta name="author" content="華星在線 www.21cstar.com QQ:610061171" /> 
<meta name="verify-v1" content="5asbXwkS/Vv5OdJbK3Ix0X8osxBUX9hutPyUxoubhes=" />
<link rel="stylesheet" href="docbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.69.0">
<link rel="start" href="index.html" title="Linux 設備驅動 Edition 3">
<link rel="up" href="ch14.html" title="第&#160;14&#160;章&#160;Linux 設備模型">
<link rel="prev" href="ch14s06.html" title="14.6.&#160;集成起來">
<link rel="next" href="ch14s08.html" title="14.8.&#160;處理固件">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr><th colspan="3" align="center">14.7.&#160;熱插拔</th></tr>
<tr>
<td width="20%" align="left">
<a accesskey="p" href="ch14s06.html">上一頁</a>&#160;</td>
<th width="60%" align="center">第&#160;14&#160;章&#160;Linux 設備模型</th>
<td width="20%" align="right">&#160;<a accesskey="n" href="ch14s08.html">下一頁</a>
</td>
</tr>
</table>
<hr>
</div>
<div class="sect1" lang="zh-cn">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="Hotplug.sect1"></a>14.7.&#160;熱插拔</h2></div></div></div>
<p>有 2 個不同方法來看熱插拔. 內核看待熱插拔為硬件, 內核和內核驅動之間的交互. 用戶看待熱插拔是內核和用戶空間的通過稱為 /sbin/hotplug 的程序的交互. 這個程序被內核調用, 當它想通知用戶空間某種熱插拔事件剛剛在內核中發生.</p>
<div class="sect2" lang="zh-cn">
<div class="titlepage"><div><div><h3 class="title">
<a name="DynamicDevices.sect2"></a>14.7.1.&#160;動態設備</h3></div></div></div>
<p>術語"熱插拔"最普遍使用的意義產生于當討論這樣的事實時, 幾乎所有的計算機系統現在能夠處理當系統有電時設備的出現或消失. 這非常不同于只是幾年前的計算機系統, 那時程序員知道他們只需要在啟動時掃描所有的設備, 并且他們從不必擔心他們的設備消失直到整個機器被關電. 現在, 隨著 USB 的出現, CardBus, PCMCIA, IEEE1394, 和 PCI 熱插拔控制器, Linux 內核需要能夠可靠地運行不管什么硬件從系統中增加或去除. 這產生了一個額外的負擔給設備驅動作者, 因為現在他們必須一直處理一個沒有任何通知而突然從地下冒出來的設備.</p>
<p>每個不同的總線類型以不同方式處理一個設備的消失. 例如, 當一個 PCI , CardBus, 或者 PCMCIA 設備從系統中去除, 在驅動通過它的去除函數被通知之前常常是一會兒. 在發生這個前, 所有的從 PCI 的讀返回所有的位集合. 這意味著驅動需要一直檢查它們從 PCI 總線讀取的值并且能夠正確處理 0xff 值.</p>
<p>這個的一個例子可在 drivers/usb/host/ehci-hcd.c 驅動中見到, 它是一個 PCI 驅動給一個 UBS 2.0(高速)控制卡. 它有下面的代碼在它的主握手循環中來探測是否控制塊已經從系統中去除.</p>
<pre class="programlisting">
result = readl(ptr);
if (result == ~(u32)0)  /* card removed */
 return -ENODEV; 
</pre>
<p>對于 USB 驅動, 當一個 USB 驅動被綁定到的設備被從系統中去除, 任何掛起的已被提交給設備的 urbs 以錯誤 -ENODEV 失敗. 如果發生這個情況, 驅動需要識別這個錯誤并且正確清理任何掛起的 I/O .</p>
<p>可熱插拔的設備不只限于傳統的設備, 例如鼠標, 鍵盤, 和網卡. 有大量的系統現在支持整個 CPU 和內存條的移出. 幸運地, Linux 內核正確處理這些核心"系統"設備的加減, 以至于單個設備驅動不需要注意這些事情.</p>
</div>
<div class="sect2" lang="zh-cn">
<div class="titlepage"><div><div><h3 class="title">
<a name="ThesbinhotplugUtility.sect2"></a>14.7.2.&#160;/sbin/hotplug 工具</h3></div></div></div>
<p>如同本章中前面提過的, 無論何時一個設備從系統中增刪, 都產生一個"熱插拔事件". 這意味著內核調用用戶空間程序 /sbin/hotplug.  這個程序典型地是一個非常小的 bash 腳本, 只傳遞執行給一系列其他的位于 /etc/hot-plug.d/ 目錄樹的程序. 對于大部分的 Linux 發布, 這個腳本看來如下:</p>
<pre class="screen">
DIR="/etc/hotplug.d"
for I in "${DIR}/$1/"*.hotplug "${DIR}/"default/*.hotplug ; do
 if [ -f $I ]; then
 test -x $I &amp;&amp; $I $1 ;
 fi
done
exit 1
</pre>
<p>換句話說, 這個腳本搜索所有的有 .hotplug 后綴的可能對這個事件感興趣的程序并調用它們, 傳遞給它們許多不同的環境變量, 這些環境變量已經被內核設置. 更多關于 /sbin/hotplug 腳本如何工作的細節可在程序的注釋中找到, 以及在 hotplug(8)手冊頁中.</p>
<p>如同前面提到的, /sbin/hotplug 被調用無論何時一個 kobject 被創建或銷毀. 熱插拔程序被用一個提供事件名子的單個命令行參數調用. 核心內核和涉及到的特定子系統也設定一系列帶有關于發生了什么的信息的環境變量(下面描述). 這些變量被熱插拔程序使用來判定剛剛在內核發生了什么, 以及是否有任何特定的動作應當采取.</p>
<p>傳遞給 /sbin/hotplug 的命令行參數是關聯這個熱插拔事件的名子, 如同分配給 kobject 的 kset 所決定的. 這個名子可通過一個對屬于本章前面描述過的 kset 的 hotplug_ops 結構的 name 函數的調用來設定; 如果那個函數不存在或者從未被調用, 名子是 kset 自身的名子.</p>
<p>一直為 /sbin/hotplug 設定的缺省的環境變量是:</p>
<div class="variablelist"><dl>
<dt><span class="term"><span>ACTION </span></span></dt>
<dd><p>這個字符串 add 或 remove, 只根據是否這個對象是被創建或者銷毀.</p></dd>
<dt><span class="term"><span>DEVPATH </span></span></dt>
<dd><p>一個目錄路徑, 在 sysfs 文件系統中, 它指向在被創建或銷毀的 kobject. 注意 sysfs 文件系統的加載點不是添加到這路徑, 因此是由用戶空間程序來決定這個. </p></dd>
<dt><span class="term"><span>SEQNUM </span></span></dt>
<dd><p>這個熱插拔事件的順序號. 順序號是一個 64-位 數, 它每次產生熱插拔事件都遞增. 這允許用戶空間以內核產生它們的順序來排序熱插拔事件, 因為對一個用戶空間程序可能亂序運行.</p></dd>
<dt><span class="term"><span>SUBSYSTEM </span></span></dt>
<dd><p>同樣的字符串作為前面描述的命令行參數傳遞.</p></dd>
</dl></div>
<p>許多不同的總線子系統都添加它們自己的環境變量到 /sbin/hotplug 調用中, 當關聯到總線的設備被添加或從系統中去除. 它們在它們的熱插拔回調中做這個, 這個回調在分配給它們的總線(如同在"熱插拔操作"一節中描述的)的 struct kset_hotplug_ops 中指定. 這允許用戶空間能夠自動加載必要的可能需要來控制這個被總線發現的設備的模塊. 這里是一個不同總線類型的列表以及它們添加到 /sbin/hotplug 調用中的環境變量. </p>
<div class="sect3" lang="zh-cn">
<div class="titlepage"><div><div><h4 class="title">
<a name="IEEE1394FireWire.sect3"></a>14.7.2.1.&#160;IEEE1394(火線)</h4></div></div></div>
<p>任何在 IEEE1394 總線, 也是火線, 上的設備, 由 /sbin/hotplug 參數名和 SUBSYSTEM 環境變量設置為值 ieee1394. ieee1394 子系統也總是添加下列 4 個環境變量:</p>
<div class="variablelist"><dl>
<dt><span class="term"><span>VENDOR_ID </span></span></dt>
<dd><p>IEEE1394 的 24-位 供應者 ID. </p></dd>
<dt><span class="term"><span>MODEL_ID </span></span></dt>
<dd><p>IEEE1394 的 24-位型號 ID.</p></dd>
<dt><span class="term"><span>GUID </span></span></dt>
<dd><p>設備的 64-位 GUID.</p></dd>
<dt><span class="term"><span>SPECIFIER_ID </span></span></dt>
<dd><p>24-位值, 指定設備的協議規格的擁有者.</p></dd>
<dt><span class="term"><span>VERSION </span></span></dt>
<dd><p>指定設備協議規格的版本的值</p></dd>
</dl></div>
</div>
<div class="sect3" lang="zh-cn">
<div class="titlepage"><div><div><h4 class="title">
<a name="Networking.sect3"></a>14.7.2.2.&#160;網絡</h4></div></div></div>
<p>所有的網絡設備都創建一個熱插拔事件, 當設備注冊或者注銷在內核. /sbin/hotplug 調用有參數 name 和 SUBSYSTEM 環境變量設置為 net, 并且只添加下列環境變量:</p>
<div class="variablelist"><dl>
<dt><span class="term"><span>INTERFACE </span></span></dt>
<dd><p>已經從內核注冊或注銷的接口的名子. 這個的例子是 lo 和 eth0.</p></dd>
</dl></div>
</div>
<div class="sect3" lang="zh-cn">
<div class="titlepage"><div><div><h4 class="title">
<a name="PCI.sect3"></a>14.7.2.3.&#160;PCI 總線</h4></div></div></div>
<p>任何在 PCI 總線上的設備有參數 name 和 SUBSYSTEM 環境變量設置為值 pci. PCI 子系統也一直添加下面 4 個環境變量:</p>
<div class="variablelist"><dl>
<dt><span class="term"><span>PCI_CLASS </span></span></dt>
<dd><p>設備的 PCI 類號, 16 進制.</p></dd>
<dt><span class="term"><span>PCI_ID </span></span></dt>
<dd><p>設備的 PCI 供應商和設備 ID, 16進制, 結合成這樣的格式 供應者:設備.</p></dd>
<dt><span class="term"><span>PCI_SUBSYS_ID </span></span></dt>
<dd><p>PCI 子系統供應商和子系統設備 ID, 以 子系統供應者:子系統設備 的格式結合.</p></dd>
<dt><span class="term"><span>PCI_SLOT_NAME </span></span></dt>
<dd><p>PCI 插口"名", 內核給予這個設備的. 它以這樣的格式 域:總線:插口:功能. 一個例子可能是: 0000:00:0d.0.</p></dd>
</dl></div>
</div>
<div class="sect3" lang="zh-cn">
<div class="titlepage"><div><div><h4 class="title">
<a name="Input.sect3"></a>14.7.2.4.&#160;輸入</h4></div></div></div>
<p>對所有的輸入設備(鼠標, 鍵盤, 游戲桿, 等等), 一個熱插拔事件當設備從內核增減時產生. /sbin/hotplug 參數和 SUBSYSTEM 環境變量被設置為值 input. 輸入子系統也總是添加下面的環境變量:</p>
<div class="variablelist"><dl>
<dt><span class="term"><span>PRODUCT </span></span></dt>
<dd><p>一個多值字符串, 用 16 進制列出值沒有前導 0. 它的格式是 bustype:vender:product:version.</p></dd>
</dl></div>
<p>下列環境變量可能出現, 如果設備支持它:</p>
<div class="variablelist"><dl>
<dt><span class="term"><span>NAME </span></span></dt>
<dd><p>輸入設備的名子, 如同設備給定的.</p></dd>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区三区黄视频| 91视频在线观看免费| 国产一区日韩二区欧美三区| 97久久精品人人澡人人爽| 日韩欧美中文一区| 一区二区三区四区高清精品免费观看 | 国产伦精品一区二区三区免费| 91视频在线看| 国产精品久久网站| 黄色成人免费在线| 日韩一区二区三区观看| 一区二区日韩电影| 成人免费视频视频在线观看免费| 欧美丰满少妇xxxxx高潮对白 | 性久久久久久久| 91网址在线看| 亚洲欧美在线高清| 成人在线综合网站| 国产亚洲精品免费| 韩国欧美国产一区| 精品日韩99亚洲| 精品亚洲国产成人av制服丝袜 | 91免费看视频| 亚洲欧美在线视频| 91美女在线观看| 亚洲婷婷综合色高清在线| 成人激情小说乱人伦| 国产色婷婷亚洲99精品小说| 国产麻豆一精品一av一免费 | 狠狠色丁香久久婷婷综| 日韩精品一区二区三区在线观看| 丝袜脚交一区二区| 91精品国产综合久久蜜臀| 石原莉奈在线亚洲三区| 6080yy午夜一二三区久久| 爽好多水快深点欧美视频| 欧美日韩精品综合在线| 日韩中文欧美在线| 日韩欧美中文字幕一区| 国产一本一道久久香蕉| 国产欧美一区二区精品性| 成人听书哪个软件好| 国产精品国产馆在线真实露脸 | 日韩亚洲国产中文字幕欧美| 一区二区三区欧美| 91成人网在线| 日本sm残虐另类| 久久免费电影网| 成人aaaa免费全部观看| 亚洲精品免费视频| 在线综合亚洲欧美在线视频| 久草精品在线观看| 国产精品第一页第二页第三页| 91麻豆精品秘密| 日韩 欧美一区二区三区| 精品国产污网站| 99久久精品免费看| 水野朝阳av一区二区三区| 久久久不卡网国产精品二区 | 欧美日韩精品一区视频| 九九视频精品免费| 中文字幕综合网| 欧美一区二区视频网站| 福利电影一区二区| 亚洲午夜av在线| 久久久久久久久一| 在线免费av一区| 国产露脸91国语对白| 亚洲精品视频在线观看网站| 日韩欧美久久一区| 一本色道综合亚洲| 国内国产精品久久| 亚洲国产欧美日韩另类综合| 久久女同性恋中文字幕| 欧美三级电影网| 成人久久18免费网站麻豆| 日韩国产成人精品| 亚洲欧美日韩系列| 久久久久综合网| 欧美三级日韩三级国产三级| 成人黄色国产精品网站大全在线免费观看 | 日韩国产精品久久久| 亚洲视频 欧洲视频| 久久一留热品黄| 欧美喷潮久久久xxxxx| av在线播放不卡| 国产自产视频一区二区三区| 午夜视频在线观看一区二区| 国产精品色一区二区三区| 欧美成人性战久久| 欧美伦理视频网站| 色av一区二区| 99久久精品国产精品久久| 精品一区二区在线播放| 手机精品视频在线观看| 亚洲精品久久7777| 中文字幕中文字幕一区二区| 久久影院视频免费| 精品免费日韩av| 91精品国产综合久久久久久久久久| 色94色欧美sute亚洲线路一ni| 高清久久久久久| 成人视屏免费看| 成人午夜视频福利| 成人免费毛片嘿嘿连载视频| 国产伦精品一区二区三区视频青涩 | 有码一区二区三区| 亚洲视频一区二区在线观看| 国产精品欧美经典| 中文字幕欧美区| 国产精品久久久久国产精品日日 | 日韩三级伦理片妻子的秘密按摩| 欧美伊人久久大香线蕉综合69| 99精品欧美一区| 99久久精品免费观看| 色先锋资源久久综合| 91久久精品国产91性色tv| 91电影在线观看| 欧美精品aⅴ在线视频| 6080午夜不卡| 亚洲精品一区二区三区在线观看| 日韩免费看的电影| 久久精品一区二区三区av| 国产色婷婷亚洲99精品小说| 国产精品久久久久久妇女6080| 中文字幕在线不卡视频| 一区二区三区在线视频免费观看| 一区二区三区不卡在线观看| 亚洲一区国产视频| 毛片av一区二区三区| 国产一区二区日韩精品| kk眼镜猥琐国模调教系列一区二区| 不卡在线视频中文字幕| 91黄色免费观看| 日韩欧美一区二区久久婷婷| 久久女同互慰一区二区三区| 成人免费在线视频| 婷婷一区二区三区| 国产一区不卡精品| 色94色欧美sute亚洲线路一ni | 欧美视频一二三区| 精品剧情v国产在线观看在线| 日本一区二区视频在线观看| 亚洲男女一区二区三区| 肉色丝袜一区二区| 福利一区二区在线观看| 欧美天堂一区二区三区| 26uuu国产电影一区二区| 亚洲天堂成人在线观看| 日韩成人免费电影| kk眼镜猥琐国模调教系列一区二区 | 男女男精品视频| 91在线免费播放| 日韩精品一区二区三区四区 | 日本一区二区免费在线| 亚洲成国产人片在线观看| 国产精品99精品久久免费| 欧美色图第一页| 中文字幕av一区二区三区| 日韩电影免费在线看| 91污在线观看| 国产三级久久久| 日本va欧美va瓶| 欧美伊人久久大香线蕉综合69 | 午夜激情一区二区三区| 成人性生交大合| 日韩欧美高清在线| 亚洲一区二区不卡免费| 国产成人在线观看免费网站| 91精品国产综合久久蜜臀| 一区二区三区在线观看欧美| 国产精品系列在线观看| 69精品人人人人| 一区二区三区视频在线看| 国产精品99久久久久| 精品久久国产字幕高潮| 午夜天堂影视香蕉久久| 欧洲av在线精品| 一色屋精品亚洲香蕉网站| 国产精品一二三区| 欧美成人三级在线| 天堂精品中文字幕在线| 91福利国产精品| 亚洲综合一区二区| 一本大道久久a久久综合| 国产精品久久久久久久久免费桃花 | 欧美揉bbbbb揉bbbbb| 亚洲视频图片小说| 99精品国产91久久久久久| 国产欧美一区二区精品秋霞影院| 久久国产综合精品| 欧美一区二区大片| 人禽交欧美网站| 7777精品伊人久久久大香线蕉超级流畅 | 国产精品欧美久久久久无广告 | 久久久久久久久岛国免费| 蜜臀av一区二区在线免费观看| 欧美日韩黄色一区二区| 亚洲bt欧美bt精品777| 欧美影院一区二区三区|