深入理解FreeBSD設備驅動程序開發

深入理解FreeBSD設備驅動程序開發 pdf epub mobi txt 電子書 下載2025

出版者:機械工業齣版社華章公司
作者:Joseph Kong
出品人:
頁數:332
译者:陳毅東
出版時間:2013-2-28
價格:69.00元
裝幀:平裝
isbn號碼:9787111411574
叢書系列:
圖書標籤:
  • FreeBSD
  • 驅動
  • 黑客
  • 設備驅動
  • 計算機科學
  • 計算機
  • 程序設計
  • 軟件開發
  • FreeBSD
  • 驅動開發
  • 設備驅動
  • 內核編程
  • C語言
  • 係統編程
  • 操作係統
  • Unix
  • 技術
  • 開發
想要找書就要到 小美書屋
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!

具體描述

本書是FreeBSD設備驅動開發領域的經典著作,由具有20餘年從業經驗的資深FreeBSD設備驅動編程專傢撰寫,FreeBSD內核開發專傢鼎力推薦!本書從宏觀上講解瞭FreeBSD設備驅動程序的框架結構,從微觀上講解瞭FreeBSD與驅動程序相關的各個接口和模塊的作用及工作原理,而且還從源碼實現的角度分析瞭設備驅動程序的內核機製。本書麵嚮的讀者是驅動開發程序員,更注重實踐而非理論,通過真實的驅動開發案例為編寫健壯高效的驅動程序提供優秀指導。

本書共17章:第1章介紹瞭設備驅動程序的類型、可加載內核模塊的編譯與加載;第2章介紹瞭內核的分配與管理;第3章講解瞭在用戶空間下如何控製設備驅動程序並與之通信;第4章討論瞭與多綫程編程和並發執行有關的問題和解決方案;第5章解析瞭延遲代碼執行和異步代碼執行等機製並解釋瞭這些機製的深層原因;第6章介紹瞭虛擬空調製解調器的實際應用;第7章講解瞭FreeBSD用作管理係統中硬件設備的底層基本結構;第8章討論FreeBSD的中斷處理;第9章全麵講解瞭並口打印機的驅動程序;第10章講解瞭端口映射和內存映射的輸入輸齣;第11章分析瞭智能平颱管理接口驅動程序;第12章講解瞭如何在FreeBSD中使用直接內存訪問機製;第13章介紹瞭如何管理存儲設備,其中包括磁盤驅動器、閃存等;第14章概述通用存取方法;第15章講解瞭如何管理USB設備;第16章描述瞭網絡驅動程序所使用的數據結構,以及對消息驅動中斷機製的介紹;第17章詳細介紹瞭em(4)的包接收與傳輸組件。

著者簡介

Joseph Kong 資深FreeBSD設備驅動編程專傢,具有20多年的計算機硬件、軟件和驅動程序的設計和開發經驗。對信息安全、操作係統理論、逆嚮工程和安全漏洞評估等技術也有非常深入的研究。此外,他還是一位知名的技術作傢和技術顧問,著有《Designing BSD Rootkits》一書,擔任過多本與設備驅動程序開發相關圖書的技術審稿人,在權威計算機雜誌上發錶瞭多篇與設備驅動程序開發相關的文章,深受讀者喜愛。

圖書目錄

譯者序
序言
前言
緻謝
第1章構建並運行模塊1
1.1 設備驅動程序的類型1
1.2 可加載內核模塊2
1.2.1 模塊事件處理程序2
1.2.2 DECLARE_MO-DULE宏3
1.3 Hello, world!5
1.4 編譯與加載6
1.5 字符設備驅動程序7
1.5.1 d_foo函數8
1.5.2 字符設備開關錶8
1.5.3 make_dev函數和des-troy_dev函數9
1.6 實例:內存字符設備驅動程序10
1.6.1 echo_write函數13
1.6.2 echo_read函數14
1.6.3 echo_modevent函數14
1.6.4 DEV_MODULE宏15
1.6.5 試運行16
1.7 塊設備驅動程序消失瞭16
1.8 本章小結17
第2章分配內存18
2.1 內存管理例程18
2.2 malloc_type結構19
2.2.1 MALLOC_DE-FINE宏20
2.2.2 MALLOC_DE-CLARE宏20
2.3 讓一切配閤起來21
2.4 連續物理內存管理例程23
2.5 一個簡單的例子24
2.6 本章小結26
第3章設備通信與控製27
3.1 ioctl接口27
3.2 定義ioctl命令29
3.3 實現ioctl30
3.3.1 echo_write函數34
3.3.2 echo_set_buffer_size函數35
3.3.3 echo_ioctl函數36
3.3.4 echo_modevent函數37
3.3.5 試運行38
3.4 調用ioctl38
3.5 sysctl41
3.6 實現sysctl(第1部分)41
3.7 sysctl上下文管理例程45
3.8 創建動態的sysctl45
3.8.1 SYSCTL_STATIC_CHILDREN宏48
3.8.2 SYSCTL_CHILDREN宏48
3.9 實現sysctl(第2部分)48
3.9.1 sysctl_set_buffer_size函數52
3.9.2 試運行53
3.10 本章小結53
第4章綫程同步54
4.1 一個簡單的同步問題54
4.2 一個更復雜的同步問題55
4.2.1 race_new函數59
4.2.2 race_find函數59
4.2.3 race_destroy函數60
4.2.4 race_ioctl函數60
4.2.5 race_modevent函數61
4.2.6 問題的根源62
4.3 防止競態條件66
4.4 互斥鎖67
4.4.1 自鏇互斥鎖67
4.4.2 休眠互斥鎖67
4.5 互斥鎖管理例程68
4.6 實現互斥鎖70
4.6.1 race_modevent函數73
4.6.2 試運行74
4.7 共享/獨占鎖75
4.8 共享/獨占鎖管理例程75
4.9 實現共享/獨占鎖77
4.10 讀者/寫者鎖81
4.11 讀者/寫者鎖管理例程81
4.12 條件變量83
4.13 條件變量管理例程83
4.14 一般性原則85
4.14.1 避免在獨占鎖上遞歸85
4.14.2 避免長時間占用獨占鎖85
4.15 本章小結85
第5章延遲執行86
5.1 主動上下文切換/休眠86
5.2 實現休眠與條件變量88
5.2.1 sleep_modevent函數92
5.2.2 load函數92
5.2.3 sleep_thread函數93
5.2.4 sysctl_debug_sleep_test函數94
5.2.5 unload函數95
5.2.6 試運行96
5.3 內核事件處理器96
5.4 callout98
5.5 callout和競態條件100
5.6 任務隊列101
5.6.1 全局任務隊列101
5.6.2 任務隊列管理例程102
5.7 本章小結103
第6章案例研究:虛擬空調製解調器104
6.1 前期基礎104
6.2 代碼分析105
6.2.1 nmdm_modevent函數107
6.2.2 nmdm_clone函數108
6.2.3 nmdm_alloc函數110
6.2.4 nmdm_outwakeup函數111
6.2.5 nmdm_task_tty函數112
6.2.6 nmdm_inwakeup函數113
6.2.7 nmdm_modem函數114
6.2.8 nmdm_param函數115
6.2.9 nmdm_timeout函數116
6.2.10 bits_per_char函數117
6.2.11 試運行118
6.3 本章小結118
第7章Newbus和資源分配119
7.1 自動配置與Newbus驅動程序119
7.1.1 device_foo函數119
7.1.2 設備方法錶121
7.1.3 DRIVER_MO-DULE宏121
7.2 驅動程序示例122
7.2.1 foo_pci_probe函數125
7.2.2 foo_pci_attach函數126
7.2.3 d_foo函數127
7.2.4 foo_pci_detach函數127
7.2.5 試運行128
7.3 硬件資源管理128
7.4 本章小結130
第8章中斷處理131
8.1 注冊中斷處理程序131
8.2 FreeBSD中的中斷處理程序132
8.3 實現中斷處理程序133
8.3.1 pint_identify函數138
8.3.2 pint_probe函數138
8.3.3 pint_attach函數139
8.3.4 pint_detach函數140
8.3.5 pint_open函數140
8.3.6 pint_close函數142
8.3.7 pint_write函數142
8.3.8 pint_read函數143
8.3.9 pint_intr函數144
8.3.10 試運行144
8.4 生成並口中斷145
8.5 本章小結146
第9章案例研究:並口打印機驅動程序147
9.1 代碼分析147
9.1.1 lpt_identify函數152
9.1.2 lpt_probe函數152
9.1.3 lpt_detect函數152
9.1.4 lpt_port_test函數153
9.1.5 lpt_attach函數154
9.1.6 lpt_detach函數156
9.1.7 lpt_open函數157
9.1.8 lpt_read函數159
9.1.9 lpt_write函數161
9.1.10 lpt_intr函數163
9.1.11 lpt_timeout函數164
9.1.12 lpt_push_bytes函數165
9.1.13 lpt_close函數166
9.1.14 lpt_ioctl函數167
9.1.15 lpt_request_ppbus函數169
9.1.16 lpt_release_ppbus函數169
9.2 本章小結170
第10章管理與使用資源171
10.1 輸入輸齣端口與輸入輸齣內存171
10.1.1 從輸入輸齣端口和輸入輸齣內存讀取數據171
10.1.2 嚮輸入輸齣端口和輸入輸齣內存寫入數據173
10.1.3 流操作175
10.2 內存柵欄178
10.3 讓一切配閤起來179
10.3.1 led_identify函數183
10.3.2 led_probe函數184
10.3.3 led_attach函數184
10.3.4 led_detach函數185
10.3.5 led_open函數186
10.3.6 led_close函數186
10.3.7 led_read函數187
10.3.8 led_write函數188
10.4 本章小結188
第11章案例研究:智能平颱管理接口驅動189
11.1 代碼分析189
11.1.1 ipmi_pci_probe函數191
11.1.2 ipmi_pci_match函數192
11.1.3 ipmi_pci_attach函數192
11.1.4 ipmi2_pci_probe函數195
11.1.5 ipmi2_pci_attach函數195
11.2 本章小結197
第12章直接內存訪問198
12.1 實現DMA198
12.1.1 初始化DMA數據傳輸200
12.1.2 取消DMA201
12.2 創建DMA標簽201
12.3 銷毀DMA標簽203
12.4 DMA映射管理例程(第1部分)204
12.5 將(DMA)緩衝區載入DMA映射204
12.5.1 bus_dma_segment結構205
12.5.2 bus_dmamap_load函數205
12.5.3 bus_dmamap_load_mbuf函數206
12.5.4 bus_dmamap_load_mbuf_sg函數207
12.5.5 bus_dmamap_load_uio函數207
12.5.6 bus_dmamap_unload函數207
12.6 DMA映射管理例程(第2部分)207
12.7 一個簡單的例子208
12.8 同步DMA緩衝區210
12.9 本章小結210
第13章存儲驅動211
13.1 disk結構211
13.1.1 描述性字段212
13.1.2 存儲設備方法字段212
13.1.3 必需的媒體特性字段213
13.1.4 可選的媒體特性字段213
13.1.5 驅動程序私有數據字段213
13.2 disk結構管理例程214
13.3 塊輸入輸齣結構214
13.4 塊輸入輸齣隊列216
13.5 讓一切配閤起來217
13.5.1 at45d_attach函數222
13.5.2 at45d_delayed_attach函數223
13.5.3 at45d_get_info函數224
13.5.4 at45d_wait_for_device_ready函數224
13.5.5 at45d_get_status函數225
13.5.6 at45d_strategy函數225
13.5.7 at45d_task函數226
13.6 塊輸入輸齣完成例程228
13.7 本章小結228
第14章通用存取方法229
14.1 CAM是如何工作的230
14.2 一個(略為)簡單的例子231
14.2.1 mfip_attach函數239
14.2.2 mfip_detach函數240
14.2.3 mfip_action函數240
14.2.4 mfip_poll函數243
14.2.5 mfip_start函數243
14.2.6 mfip_done函數245
14.3 SIM注冊例程246
14.3.1 cam_simq_alloc函數247
14.3.2 cam_sim_alloc函數247
14.3.3 xpt_bus_register函數248
14.4 動作例程248
14.4.1 XPT_PATH_INQ常量248
14.4.2 XPT_RESET_BUS常量250
14.4.3 XPT_GET_TRAN_SETTINGS常量251
14.4.4 XPT_SET_TRAN_SETTINGS常量254
14.4.5 XPT_SCSI_IO常量255
14.4.6 XPT_RESET_DEV常量260
14.5 本章小結261
第15章USB驅動262
15.1 關於USB設備262
15.2 關於USB設備的更多信息263
15.3 USB配置結構264
15.3.1 必需的字段265
15.3.2 可選的字段265
15.3.3 USB傳送標誌266
15.4 USB傳輸(針對FreeBSD)267
15.5 USB配置結構管理例程269
15.6 USB方法結構270
15.7 讓一切配閤起來271
15.7.1 ulpt_probe函數276
15.7.2 ulpt_attach函數276
15.7.3 ulpt_detach函數278
15.7.4 ulpt_open函數279
15.7.5 ulpt_reset函數279
15.7.6 unlpt_open函數280
15.7.7 ulpt_close函數281
15.7.8 ulpt_ioctl函數282
15.7.9 ulpt_watchdog函數282
15.7.10 ulpt_start_read函數282
15.7.11 ulpt_stop_read函數283
15.7.12 ulpt_start_write函數283
15.7.13 ulpt_stop_write函數284
15.7.14 ulpt_write_callback函數284
15.7.15 ulpt_read_callback函數285
15.7.16 ulpt_status_callback函數287
15.8 本章小結288
第16章網絡驅動程序I:數據結構289
16.1 網絡接口結構289
16.2 網絡接口結構管理例程292
16.2.1 ether_ifattach函數293
16.2.2 ether_ifdetach函數294
16.3 網絡接口媒體結構295
16.4 網絡接口媒體結構管理例程295
16.5 Hello, world297
16.6 mbuf結構300
16.7 消息驅動中斷300
16.8 實現MSI301
16.9 MSI管理例程303
16.10  本章小結304
第17章網絡驅動程序II:包的接收與傳輸305
17.1 數據包接收305
17.1.1 em_rxeof函數305
17.1.2 em_handle_rx函數309
17.2 數據包發送310
17.2.1 em_start_locked函數310
17.2.2 em_txeof函數311
17.3 後數據包發送314
17.4 本章小結315
參考文獻316
· · · · · · (收起)

讀後感

評分

哈哈,还没买 不过毕设过了,肯定要买啊。。。 这种书的话,我想对于系统底层的了解和接口的理解是必须的吧! 哈哈,还没买 不过毕设过了,肯定要买啊。。。 这种书的话,我想对于系统底层的了解和接口的理解是必须的吧! 哈哈,还没买 不过毕设过了,肯定要买啊。。。 这种书...

評分

哈哈,还没买 不过毕设过了,肯定要买啊。。。 这种书的话,我想对于系统底层的了解和接口的理解是必须的吧! 哈哈,还没买 不过毕设过了,肯定要买啊。。。 这种书的话,我想对于系统底层的了解和接口的理解是必须的吧! 哈哈,还没买 不过毕设过了,肯定要买啊。。。 这种书...

評分

哈哈,还没买 不过毕设过了,肯定要买啊。。。 这种书的话,我想对于系统底层的了解和接口的理解是必须的吧! 哈哈,还没买 不过毕设过了,肯定要买啊。。。 这种书的话,我想对于系统底层的了解和接口的理解是必须的吧! 哈哈,还没买 不过毕设过了,肯定要买啊。。。 这种书...

評分

哈哈,还没买 不过毕设过了,肯定要买啊。。。 这种书的话,我想对于系统底层的了解和接口的理解是必须的吧! 哈哈,还没买 不过毕设过了,肯定要买啊。。。 这种书的话,我想对于系统底层的了解和接口的理解是必须的吧! 哈哈,还没买 不过毕设过了,肯定要买啊。。。 这种书...

評分

哈哈,还没买 不过毕设过了,肯定要买啊。。。 这种书的话,我想对于系统底层的了解和接口的理解是必须的吧! 哈哈,还没买 不过毕设过了,肯定要买啊。。。 这种书的话,我想对于系统底层的了解和接口的理解是必须的吧! 哈哈,还没买 不过毕设过了,肯定要买啊。。。 这种书...

用戶評價

评分

邏輯清晰的驅動開發書,很不錯,不過代碼注釋排版比較難受

评分

講解瞭各個類型的driver的常用API和框架,沒什麼深入的東西。

评分

係統再優雅,非主流還是白搭……不玩瞭

评分

對FreeBSD的命名習慣一點也不感冒~!

评分

講解瞭各個類型的driver的常用API和框架,沒什麼深入的東西。

本站所有內容均為互聯網搜索引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

© 2025 book.quotespace.org All Rights Reserved. 小美書屋 版权所有