注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當前位置: 首頁出版圖書科學技術計算機/網(wǎng)絡軟件與程序設計程序設計綜合深入理解FreeBSD設備驅動程序開發(fā)

深入理解FreeBSD設備驅動程序開發(fā)

深入理解FreeBSD設備驅動程序開發(fā)

定 價:¥69.00

作 者: (加)約瑟夫(Joseph, K.)
出版社: 機械工業(yè)出版社
叢編項:
標 簽: 操作系統(tǒng)/系統(tǒng)開發(fā) 計算機/網(wǎng)絡

ISBN: 9787111411574 出版時間: 2013-02-20 包裝: 平裝
開本: 16 頁數(shù): 332 字數(shù):  

內容簡介

  《深入理解FreeBSD設備驅動程序開發(fā)》內容全面,它不僅詳細講解了開發(fā)企業(yè)級iOS應用所需掌握的各項核心技術,以及各種工具和框架的用法,而且還系統(tǒng)講解了企業(yè)級iOS應用開發(fā)的流程和方法;實戰(zhàn)性強,不僅為各個知識點精心設計了能輔助讀者理解的小案例,而且還有能指導讀者進行完整實踐的大案例,具備極強的可操作性。除此之外,本書還包含大量的開發(fā)技巧和最佳實踐。本書是FreeBSD設備驅動開發(fā)領域的經典著作,由具有20余年從業(yè)經驗的資深FreeBSD設備驅動編程專家撰寫,F(xiàn)reeBSD內核開發(fā)專家鼎力推薦!本書從宏觀上講解了FreeBSD設備驅動程序的框架結構,從微觀上講解了FreeBSD與驅動程序相關的各個接口和模塊的作用及工作原理,而且還從源碼實現(xiàn)的角度分析了設備驅動程序的內核機制。本書面向的讀者是驅動開發(fā)程序員,更注重實踐而非理論,通過真實的驅動開發(fā)案例為編寫健壯高效的驅動程序提供優(yōu)秀指導?!渡钊肜斫釬reeBSD設備驅動程序開發(fā)》共17章:第1章介紹了設備驅動程序的類型、可加載內核模塊的編譯與加載;第2章介紹了內核的分配與管理;第3章講解了在用戶空間下如何控制設備驅動程序并與之通信;第4章討論了與多線程編程和并發(fā)執(zhí)行有關的問題和解決方案;第5章解析了延遲代碼執(zhí)行和異步代碼執(zhí)行等機制并解釋了這些機制的深層原因;第6章介紹了虛擬空調制解調器的實際應用;第7章講解了FreeBSD用作管理系統(tǒng)中硬件設備的底層基本結構;第8章討論FreeBSD的中斷處理;第9章全面講解了并口打印機的驅動程序;第10章講解了端口映射和內存映射的輸入輸出;第11章分析了智能平臺管理接口驅動程序;第12章講解了如何在FreeBSD中使用直接內存訪問機制;第13章介紹了如何管理存儲設備,其中包括磁盤驅動器、閃存等;第14章概述通用存取方法;第15章講解了如何管理USB設備;第16章描述了網(wǎng)絡驅動程序所使用的數(shù)據(jù)結構,以及對消息驅動中斷機制的介紹;第17章詳細介紹了em(4)的包接收與傳輸組件。

作者簡介

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

圖書目錄

譯者序
序言
前言
致謝
第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函數(shù)8
1.5.2 字符設備開關表8
1.5.3 make_dev函數(shù)和des-troy_dev函數(shù)9
1.6 實例:內存字符設備驅動程序10
1.6.1 echo_write函數(shù)13
1.6.2 echo_read函數(shù)14
1.6.3 echo_modevent函數(shù)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 連續(xù)物理內存管理例程23
2.5 一個簡單的例子24
2.6 本章小結26
第3章設備通信與控制27
3.1 ioctl接口27
3.2 定義ioctl命令29
3.3 實現(xiàn)ioctl30
3.3.1 echo_write函數(shù)34
3.3.2 echo_set_buffer_size函數(shù)35
3.3.3 echo_ioctl函數(shù)36
3.3.4 echo_modevent函數(shù)37
3.3.5 試運行38
3.4 調用ioctl38
3.5 sysctl41
3.6 實現(xiàn)sysctl(第1部分)41
3.7 sysctl上下文管理例程45
3.8 創(chuàng)建動態(tài)的sysctl45
3.8.1 SYSCTL_STATIC_CHILDREN宏48
3.8.2 SYSCTL_CHILDREN宏48
3.9 實現(xiàn)sysctl(第2部分)48
3.9.1 sysctl_set_buffer_size函數(shù)52
3.9.2 試運行53
3.10 本章小結53
第4章線程同步54
4.1 一個簡單的同步問題54
4.2 一個更復雜的同步問題55
4.2.1 race_new函數(shù)59
4.2.2 race_find函數(shù)59
4.2.3 race_destroy函數(shù)60
4.2.4 race_ioctl函數(shù)60
4.2.5 race_modevent函數(shù)61
4.2.6 問題的根源62
4.3 防止競態(tài)條件66
4.4 互斥鎖67
4.4.1 自旋互斥鎖67
4.4.2 休眠互斥鎖67
4.5 互斥鎖管理例程68
4.6 實現(xiàn)互斥鎖70
4.6.1 race_modevent函數(shù)73
4.6.2 試運行74
4.7 共享/獨占鎖75
4.8 共享/獨占鎖管理例程75
4.9 實現(xiàn)共享/獨占鎖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章延遲執(zhí)行86
5.1 主動上下文切換/休眠86
5.2 實現(xiàn)休眠與條件變量88
5.2.1 sleep_modevent函數(shù)92
5.2.2 load函數(shù)92
5.2.3 sleep_thread函數(shù)93
5.2.4 sysctl_debug_sleep_test函數(shù)94
5.2.5 unload函數(shù)95
5.2.6 試運行96
5.3 內核事件處理器96
5.4 callout98
5.5 callout和競態(tài)條件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函數(shù)107
6.2.2 nmdm_clone函數(shù)108
6.2.3 nmdm_alloc函數(shù)110
6.2.4 nmdm_outwakeup函數(shù)111
6.2.5 nmdm_task_tty函數(shù)112
6.2.6 nmdm_inwakeup函數(shù)113
6.2.7 nmdm_modem函數(shù)114
6.2.8 nmdm_param函數(shù)115
6.2.9 nmdm_timeout函數(shù)116
6.2.10 bits_per_char函數(shù)117
6.2.11 試運行118
6.3 本章小結118
第7章Newbus和資源分配119
7.1 自動配置與Newbus驅動程序119
7.1.1 device_foo函數(shù)119
7.1.2 設備方法表121
7.1.3 DRIVER_MO-DULE宏121
7.2 驅動程序示例122
7.2.1 foo_pci_probe函數(shù)125
7.2.2 foo_pci_attach函數(shù)126
7.2.3 d_foo函數(shù)127
7.2.4 foo_pci_detach函數(shù)127
7.2.5 試運行128
7.3 硬件資源管理128
7.4 本章小結130
第8章中斷處理131
8.1 注冊中斷處理程序131
8.2 FreeBSD中的中斷處理程序132
8.3 實現(xiàn)中斷處理程序133
8.3.1 pint_identify函數(shù)138
8.3.2 pint_probe函數(shù)138
8.3.3 pint_attach函數(shù)139
8.3.4 pint_detach函數(shù)140
8.3.5 pint_open函數(shù)140
8.3.6 pint_close函數(shù)142
8.3.7 pint_write函數(shù)142
8.3.8 pint_read函數(shù)143
8.3.9 pint_intr函數(shù)144
8.3.10 試運行144
8.4 生成并口中斷145
8.5 本章小結146
第9章案例研究:并口打印機驅動程序147
9.1 代碼分析147
9.1.1 lpt_identify函數(shù)152
9.1.2 lpt_probe函數(shù)152
9.1.3 lpt_detect函數(shù)152
9.1.4 lpt_port_test函數(shù)153
9.1.5 lpt_attach函數(shù)154
9.1.6 lpt_detach函數(shù)156
9.1.7 lpt_open函數(shù)157
9.1.8 lpt_read函數(shù)159
9.1.9 lpt_write函數(shù)161
9.1.10 lpt_intr函數(shù)163
9.1.11 lpt_timeout函數(shù)164
9.1.12 lpt_push_bytes函數(shù)165
9.1.13 lpt_close函數(shù)166
9.1.14 lpt_ioctl函數(shù)167
9.1.15 lpt_request_ppbus函數(shù)169
9.1.16 lpt_release_ppbus函數(shù)169
9.2 本章小結170
第10章管理與使用資源171
10.1 輸入輸出端口與輸入輸出內存171
10.1.1 從輸入輸出端口和輸入輸出內存讀取數(shù)據(jù)171
10.1.2 向輸入輸出端口和輸入輸出內存寫入數(shù)據(jù)173
10.1.3 流操作175
10.2 內存柵欄178
10.3 讓一切配合起來179
10.3.1 led_identify函數(shù)183
10.3.2 led_probe函數(shù)184
10.3.3 led_attach函數(shù)184
10.3.4 led_detach函數(shù)185
10.3.5 led_open函數(shù)186
10.3.6 led_close函數(shù)186
10.3.7 led_read函數(shù)187
10.3.8 led_write函數(shù)188
10.4 本章小結188
第11章案例研究:智能平臺管理接口驅動189
11.1 代碼分析189
11.1.1 ipmi_pci_probe函數(shù)191
11.1.2 ipmi_pci_match函數(shù)192
11.1.3 ipmi_pci_attach函數(shù)192
11.1.4 ipmi2_pci_probe函數(shù)195
11.1.5 ipmi2_pci_attach函數(shù)195
11.2 本章小結197
第12章直接內存訪問198
12.1 實現(xiàn)DMA198
12.1.1 初始化DMA數(shù)據(jù)傳輸200
12.1.2 取消DMA201
12.2 創(chuàng)建DMA標簽201
12.3 銷毀DMA標簽203
12.4 DMA映射管理例程(第1部分)204
12.5 將(DMA)緩沖區(qū)載入DMA映射204
12.5.1 bus_dma_segment結構205
12.5.2 bus_dmamap_load函數(shù)205
12.5.3 bus_dmamap_load_mbuf函數(shù)206
12.5.4 bus_dmamap_load_mbuf_sg函數(shù)207
12.5.5 bus_dmamap_load_uio函數(shù)207
12.5.6 bus_dmamap_unload函數(shù)207
12.6 DMA映射管理例程(第2部分)207
12.7 一個簡單的例子208
12.8 同步DMA緩沖區(qū)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 驅動程序私有數(shù)據(jù)字段213
13.2 disk結構管理例程214
13.3 塊輸入輸出結構214
13.4 塊輸入輸出隊列216
13.5 讓一切配合起來217
13.5.1 at45d_attach函數(shù)222
13.5.2 at45d_delayed_attach函數(shù)223
13.5.3 at45d_get_info函數(shù)224
13.5.4 at45d_wait_for_device_ready函數(shù)224
13.5.5 at45d_get_status函數(shù)225
13.5.6 at45d_strategy函數(shù)225
13.5.7 at45d_task函數(shù)226
13.6 塊輸入輸出完成例程228
13.7 本章小結228
第14章通用存取方法229
14.1 CAM是如何工作的230
14.2 一個(略為)簡單的例子231
14.2.1 mfip_attach函數(shù)239
14.2.2 mfip_detach函數(shù)240
14.2.3 mfip_action函數(shù)240
14.2.4 mfip_poll函數(shù)243
14.2.5 mfip_start函數(shù)243
14.2.6 mfip_done函數(shù)245
14.3 SIM注冊例程246
14.3.1 cam_simq_alloc函數(shù)247
14.3.2 cam_sim_alloc函數(shù)247
14.3.3 xpt_bus_register函數(shù)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函數(shù)276
15.7.2 ulpt_attach函數(shù)276
15.7.3 ulpt_detach函數(shù)278
15.7.4 ulpt_open函數(shù)279
15.7.5 ulpt_reset函數(shù)279
15.7.6 unlpt_open函數(shù)280
15.7.7 ulpt_close函數(shù)281
15.7.8 ulpt_ioctl函數(shù)282
15.7.9 ulpt_watchdog函數(shù)282
15.7.10 ulpt_start_read函數(shù)282
15.7.11 ulpt_stop_read函數(shù)283
15.7.12 ulpt_start_write函數(shù)283
15.7.13 ulpt_stop_write函數(shù)284
15.7.14 ulpt_write_callback函數(shù)284
15.7.15 ulpt_read_callback函數(shù)285
15.7.16 ulpt_status_callback函數(shù)287
15.8 本章小結288
第16章網(wǎng)絡驅動程序I:數(shù)據(jù)結構289
16.1 網(wǎng)絡接口結構289
16.2 網(wǎng)絡接口結構管理例程292
16.2.1 ether_ifattach函數(shù)293
16.2.2 ether_ifdetach函數(shù)294
16.3 網(wǎng)絡接口媒體結構295
16.4 網(wǎng)絡接口媒體結構管理例程295
16.5 Hello, world297
16.6 mbuf結構300
16.7 消息驅動中斷300
16.8 實現(xiàn)MSI301
16.9 MSI管理例程303
16.10  本章小結304
第17章網(wǎng)絡驅動程序II:包的接收與傳輸305
17.1 數(shù)據(jù)包接收305
17.1.1 em_rxeof函數(shù)305
17.1.2 em_handle_rx函數(shù)309
17.2 數(shù)據(jù)包發(fā)送310
17.2.1 em_start_locked函數(shù)310
17.2.2 em_txeof函數(shù)311
17.3 后數(shù)據(jù)包發(fā)送314
17.4 本章小結315
參考文獻316

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) hotzeplotz.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號