注冊(cè) | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁(yè)出版圖書科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計(jì)程序設(shè)計(jì)綜合深入理解FreeBSD設(shè)備驅(qū)動(dòng)程序開發(fā)

深入理解FreeBSD設(shè)備驅(qū)動(dòng)程序開發(fā)

深入理解FreeBSD設(shè)備驅(qū)動(dòng)程序開發(fā)

定 價(jià):¥69.00

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

ISBN: 9787111411574 出版時(shí)間: 2013-02-20 包裝: 平裝
開本: 16 頁(yè)數(shù): 332 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

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

作者簡(jiǎn)介

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

圖書目錄

譯者序
序言
前言
致謝
第1章構(gòu)建并運(yùn)行模塊1
1.1 設(shè)備驅(qū)動(dòng)程序的類型1
1.2 可加載內(nèi)核模塊2
1.2.1 模塊事件處理程序2
1.2.2 DECLARE_MO-DULE宏3
1.3 Hello, world!5
1.4 編譯與加載6
1.5 字符設(shè)備驅(qū)動(dòng)程序7
1.5.1 d_foo函數(shù)8
1.5.2 字符設(shè)備開關(guān)表8
1.5.3 make_dev函數(shù)和des-troy_dev函數(shù)9
1.6 實(shí)例:內(nèi)存字符設(shè)備驅(qū)動(dòng)程序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 試運(yùn)行16
1.7 塊設(shè)備驅(qū)動(dòng)程序消失了16
1.8 本章小結(jié)17
第2章分配內(nèi)存18
2.1 內(nèi)存管理例程18
2.2 malloc_type結(jié)構(gòu)19
2.2.1 MALLOC_DE-FINE宏20
2.2.2 MALLOC_DE-CLARE宏20
2.3 讓一切配合起來(lái)21
2.4 連續(xù)物理內(nèi)存管理例程23
2.5 一個(gè)簡(jiǎn)單的例子24
2.6 本章小結(jié)26
第3章設(shè)備通信與控制27
3.1 ioctl接口27
3.2 定義ioctl命令29
3.3 實(shí)現(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 試運(yùn)行38
3.4 調(diào)用ioctl38
3.5 sysctl41
3.6 實(shí)現(xiàn)sysctl(第1部分)41
3.7 sysctl上下文管理例程45
3.8 創(chuàng)建動(dòng)態(tài)的sysctl45
3.8.1 SYSCTL_STATIC_CHILDREN宏48
3.8.2 SYSCTL_CHILDREN宏48
3.9 實(shí)現(xiàn)sysctl(第2部分)48
3.9.1 sysctl_set_buffer_size函數(shù)52
3.9.2 試運(yùn)行53
3.10 本章小結(jié)53
第4章線程同步54
4.1 一個(gè)簡(jiǎn)單的同步問(wèn)題54
4.2 一個(gè)更復(fù)雜的同步問(wèn)題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 問(wèn)題的根源62
4.3 防止競(jìng)態(tài)條件66
4.4 互斥鎖67
4.4.1 自旋互斥鎖67
4.4.2 休眠互斥鎖67
4.5 互斥鎖管理例程68
4.6 實(shí)現(xiàn)互斥鎖70
4.6.1 race_modevent函數(shù)73
4.6.2 試運(yùn)行74
4.7 共享/獨(dú)占鎖75
4.8 共享/獨(dú)占鎖管理例程75
4.9 實(shí)現(xiàn)共享/獨(dú)占鎖77
4.10 讀者/寫者鎖81
4.11 讀者/寫者鎖管理例程81
4.12 條件變量83
4.13 條件變量管理例程83
4.14 一般性原則85
4.14.1 避免在獨(dú)占鎖上遞歸85
4.14.2 避免長(zhǎng)時(shí)間占用獨(dú)占鎖85
4.15 本章小結(jié)85
第5章延遲執(zhí)行86
5.1 主動(dòng)上下文切換/休眠86
5.2 實(shí)現(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 試運(yùn)行96
5.3 內(nèi)核事件處理器96
5.4 callout98
5.5 callout和競(jìng)態(tài)條件100
5.6 任務(wù)隊(duì)列101
5.6.1 全局任務(wù)隊(duì)列101
5.6.2 任務(wù)隊(duì)列管理例程102
5.7 本章小結(jié)103
第6章案例研究:虛擬空調(diào)制解調(diào)器104
6.1 前期基礎(chǔ)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 試運(yùn)行118
6.3 本章小結(jié)118
第7章Newbus和資源分配119
7.1 自動(dòng)配置與Newbus驅(qū)動(dòng)程序119
7.1.1 device_foo函數(shù)119
7.1.2 設(shè)備方法表121
7.1.3 DRIVER_MO-DULE宏121
7.2 驅(qū)動(dòng)程序示例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 試運(yùn)行128
7.3 硬件資源管理128
7.4 本章小結(jié)130
第8章中斷處理131
8.1 注冊(cè)中斷處理程序131
8.2 FreeBSD中的中斷處理程序132
8.3 實(shí)現(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 試運(yùn)行144
8.4 生成并口中斷145
8.5 本章小結(jié)146
第9章案例研究:并口打印機(jī)驅(qū)動(dòng)程序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 本章小結(jié)170
第10章管理與使用資源171
10.1 輸入輸出端口與輸入輸出內(nèi)存171
10.1.1 從輸入輸出端口和輸入輸出內(nèi)存讀取數(shù)據(jù)171
10.1.2 向輸入輸出端口和輸入輸出內(nèi)存寫入數(shù)據(jù)173
10.1.3 流操作175
10.2 內(nèi)存柵欄178
10.3 讓一切配合起來(lái)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 本章小結(jié)188
第11章案例研究:智能平臺(tái)管理接口驅(qū)動(dòng)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 本章小結(jié)197
第12章直接內(nèi)存訪問(wèn)198
12.1 實(shí)現(xiàn)DMA198
12.1.1 初始化DMA數(shù)據(jù)傳輸200
12.1.2 取消DMA201
12.2 創(chuàng)建DMA標(biāo)簽201
12.3 銷毀DMA標(biāo)簽203
12.4 DMA映射管理例程(第1部分)204
12.5 將(DMA)緩沖區(qū)載入DMA映射204
12.5.1 bus_dma_segment結(jié)構(gòu)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 一個(gè)簡(jiǎn)單的例子208
12.8 同步DMA緩沖區(qū)210
12.9 本章小結(jié)210
第13章存儲(chǔ)驅(qū)動(dòng)211
13.1 disk結(jié)構(gòu)211
13.1.1 描述性字段212
13.1.2 存儲(chǔ)設(shè)備方法字段212
13.1.3 必需的媒體特性字段213
13.1.4 可選的媒體特性字段213
13.1.5 驅(qū)動(dòng)程序私有數(shù)據(jù)字段213
13.2 disk結(jié)構(gòu)管理例程214
13.3 塊輸入輸出結(jié)構(gòu)214
13.4 塊輸入輸出隊(duì)列216
13.5 讓一切配合起來(lái)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 本章小結(jié)228
第14章通用存取方法229
14.1 CAM是如何工作的230
14.2 一個(gè)(略為)簡(jiǎn)單的例子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注冊(cè)例程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 動(dòng)作例程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 本章小結(jié)261
第15章USB驅(qū)動(dòng)262
15.1 關(guān)于USB設(shè)備262
15.2 關(guān)于USB設(shè)備的更多信息263
15.3 USB配置結(jié)構(gòu)264
15.3.1 必需的字段265
15.3.2 可選的字段265
15.3.3 USB傳送標(biāo)志266
15.4 USB傳輸(針對(duì)FreeBSD)267
15.5 USB配置結(jié)構(gòu)管理例程269
15.6 USB方法結(jié)構(gòu)270
15.7 讓一切配合起來(lái)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 本章小結(jié)288
第16章網(wǎng)絡(luò)驅(qū)動(dòng)程序I:數(shù)據(jù)結(jié)構(gòu)289
16.1 網(wǎng)絡(luò)接口結(jié)構(gòu)289
16.2 網(wǎng)絡(luò)接口結(jié)構(gòu)管理例程292
16.2.1 ether_ifattach函數(shù)293
16.2.2 ether_ifdetach函數(shù)294
16.3 網(wǎng)絡(luò)接口媒體結(jié)構(gòu)295
16.4 網(wǎng)絡(luò)接口媒體結(jié)構(gòu)管理例程295
16.5 Hello, world297
16.6 mbuf結(jié)構(gòu)300
16.7 消息驅(qū)動(dòng)中斷300
16.8 實(shí)現(xiàn)MSI301
16.9 MSI管理例程303
16.10  本章小結(jié)304
第17章網(wǎng)絡(luò)驅(qū)動(dò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 本章小結(jié)315
參考文獻(xiàn)316

本目錄推薦

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