亚洲欧美第一页_禁久久精品乱码_粉嫩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精品婷婷国产综合久久性色| 国产成a人亚洲| 日韩影院在线观看| 最新高清无码专区| 2021国产精品久久精品| 69成人精品免费视频| av中文字幕不卡| 久久99久久99精品免视看婷婷| 亚洲欧美日韩成人高清在线一区| 欧美不卡一区二区三区四区| 欧美中文字幕亚洲一区二区va在线| 懂色中文一区二区在线播放| 麻豆成人av在线| 婷婷一区二区三区| 亚洲综合久久久| 中文字幕日本乱码精品影院| 精品成人a区在线观看| 91精品国产综合久久婷婷香蕉 | 色94色欧美sute亚洲线路二| 国产剧情av麻豆香蕉精品| 日韩国产欧美三级| 亚洲高清视频的网址| 亚洲欧美经典视频| 国产精品色哟哟| 国产午夜精品久久久久久免费视 | 色悠久久久久综合欧美99| 国产精品18久久久久久久久久久久| 日本网站在线观看一区二区三区| 亚洲成人免费在线观看| 亚洲欧美一区二区三区久本道91| 国产精品欧美综合在线| 国产午夜一区二区三区| 久久久久国产成人精品亚洲午夜| 精品av久久707| 精品国产91亚洲一区二区三区婷婷| 91精品综合久久久久久| 欧美一区二区三区小说| 91精品欧美一区二区三区综合在| 91精品一区二区三区久久久久久 | 精品中文av资源站在线观看| 日本欧美韩国一区三区| 免费成人你懂的| 久久99精品一区二区三区三区| 激情综合网激情| 国产福利一区二区| 丁香六月综合激情| 99久久久免费精品国产一区二区| 972aa.com艺术欧美| 在线中文字幕一区二区| 欧美精品xxxxbbbb| 日韩欧美国产成人一区二区| 欧美精品一区二区三区久久久| 久久久天堂av| 中文字幕亚洲成人| 亚洲国产日韩综合久久精品| 天天av天天翘天天综合网 | 国产乱码字幕精品高清av| 国产高清视频一区| 色婷婷久久综合| 欧美群妇大交群的观看方式| 91精品国产综合久久精品图片| 精品国产99国产精品| 中文字幕一区三区| 一区二区国产盗摄色噜噜| 日韩精品色哟哟| 国产成人综合精品三级| 在线免费观看一区| 日韩视频免费直播| 欧美国产视频在线| 亚洲中国最大av网站| 捆绑变态av一区二区三区| www.99精品| 69成人精品免费视频| 日本一区二区不卡视频| 亚洲一区成人在线| 激情都市一区二区| 色婷婷激情一区二区三区| 日韩亚洲国产中文字幕欧美| 中文在线免费一区三区高中清不卡| 一区二区三国产精华液| 美女视频免费一区| 91麻豆国产精品久久| 日韩一区二区中文字幕| 亚洲欧美影音先锋| 美女在线一区二区| 色天天综合久久久久综合片| 久久综合一区二区| 亚洲成人一区二区在线观看| 国产91丝袜在线18| 69久久夜色精品国产69蝌蚪网| 国产精品剧情在线亚洲| 美女诱惑一区二区| 在线免费一区三区| 国产精品色哟哟网站| 久久精品国产在热久久| 欧美午夜寂寞影院| 欧美激情资源网| 看电影不卡的网站| 欧美色手机在线观看| 国产精品夫妻自拍| 国内精品免费**视频| 欧美日韩免费一区二区三区视频| 日本一二三不卡| 狠狠色丁香婷综合久久| 欧美日韩dvd在线观看| 自拍偷在线精品自拍偷无码专区| 国产一区在线观看麻豆| 欧美巨大另类极品videosbest | 欧美剧情电影在线观看完整版免费励志电影 | 日韩高清不卡在线| 一本大道久久a久久精品综合| 久久综合九色综合97_久久久| 视频一区欧美日韩| 欧美亚州韩日在线看免费版国语版| 亚洲国产精品精华液2区45| 国内成人免费视频| 欧美tickling网站挠脚心| 天天av天天翘天天综合网色鬼国产 | 一本大道综合伊人精品热热 | 蜜臀久久99精品久久久久宅男| 色8久久精品久久久久久蜜| 国产精品的网站| 国产99精品视频| 久久精品这里都是精品| 美女诱惑一区二区| 日韩视频一区二区三区在线播放 | 日韩欧美亚洲另类制服综合在线| 午夜欧美电影在线观看| 欧美性大战久久久久久久蜜臀| 国产精品欧美久久久久无广告| 成人一区在线观看| 国产精品女人毛片| 成人激情免费网站| 中文字幕亚洲不卡| 日本韩国精品在线| 亚洲国产人成综合网站| 欧美日韩第一区日日骚| 亚洲成人资源网| 91精品在线观看入口| 麻豆成人91精品二区三区| 日韩精品资源二区在线| 国产在线一区二区| 精品视频在线视频| 国产91精品在线观看| 成人午夜av电影| 在线播放中文字幕一区| 天堂资源在线中文精品| 日韩午夜在线播放| 国产一区在线精品| 国产精品久久久久精k8| 日本久久电影网| 日韩国产欧美在线播放| 精品av久久707| 99在线精品免费| 亚洲成人1区2区| 欧美大片在线观看一区| 国产成人丝袜美腿| 一区二区三区四区亚洲| 3atv在线一区二区三区| 黑人精品欧美一区二区蜜桃 | ...xxx性欧美| 欧美日韩一区二区在线观看视频 | 久久久久久久久久久久电影| 国产·精品毛片| 亚洲一区二区三区四区不卡| 欧美久久婷婷综合色| 国产乱码精品一区二区三区忘忧草| 亚洲国产经典视频| 成人激情图片网| 欧美精品一二三区| 精品国产一区久久| 国产亚洲欧美中文| 精品成a人在线观看| av激情成人网| 亚洲成人先锋电影| 日韩欧美高清在线| 国产成人自拍网| 日韩一区二区三区av| 中文av字幕一区| 日韩和的一区二区| av在线不卡电影| 5566中文字幕一区二区电影| 日韩精品中文字幕一区二区三区| 精品剧情在线观看| 青娱乐精品视频| 欧美在线一二三四区| 久久久国产精品麻豆| 久久久美女毛片| 麻豆国产欧美日韩综合精品二区 | 成人免费毛片嘿嘿连载视频| 国产精品99久久久久| 蜜臀av性久久久久av蜜臀妖精| 国产精品白丝av| 欧美精品一区二区三区很污很色的| 亚洲精品一二三四区| jvid福利写真一区二区三区| 日韩三区在线观看|