注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當前位置: 首頁出版圖書科學技術計算機/網(wǎng)絡操作系統(tǒng)Linux深入Linux設備驅動程序內核機制

深入Linux設備驅動程序內核機制

深入Linux設備驅動程序內核機制

定 價:¥98.00

作 者: 陳學松 著
出版社: 電子工業(yè)出版社
叢編項:
標 簽: LINUX

ISBN: 9787121150524 出版時間: 2012-01-08 包裝: 平裝
開本: 16開 頁數(shù): 540 字數(shù):  

內容簡介

  內 容 簡 介這是一本系統(tǒng)闡述Linux設備驅動程序技術內幕的專業(yè)書籍,它的側重點不是討論如何在Linux系統(tǒng)下編寫設備驅動程序,而是要告訴讀者隱藏在這些設備驅動程序背后的那些內核機制及原理。作者通過對Linux內核源碼抽絲剝繭般的解讀,再輔之以精心設計的大量圖片,使讀者在閱讀完本書后對驅動程序前臺所展現(xiàn)出來的那些行為特點變得豁然開朗。本書涵蓋了編寫設備驅動程序所需要的幾乎所有的內核設施,比如內核模塊、中斷處理、互斥與同步、內存分配、延遲操作、時間管理,以及新設備驅動模型等內容。為了避免讀者迷失在某一技術細節(jié)的討論當中,本書在一個比較高的層面上進行展開,以一種先框架再細節(jié)的結構安排極大地簡化了讀者的閱讀與學習。本書不僅適合那些在Linux系統(tǒng)下從事設備驅動程序開發(fā)的專業(yè)技術人員閱讀,也同樣適合有志于從事Linux設備驅動程序開發(fā)或對Linux設備驅動程序及Linux內核感興趣的在校學生等閱讀。對于沒有任何Linux設備驅動程序開發(fā)經(jīng)驗的初學者,建議先閱讀那些討論“如何”在Linux系統(tǒng)下編寫設備驅動程序的入門書籍,然后再閱讀本書來理解“為什么”要以這樣或者那樣的方式來編寫設備驅動程序。

作者簡介

  陳學松,曾任職于Intel,Marvell等半導體公司,9年以上Linux內核、設備驅動程序、嵌入式LinuxBSP等領域的開發(fā)經(jīng)驗。專注于Linux系統(tǒng)內核、BIOS、文件系統(tǒng)及軟件虛擬化等技術,曾模仿Linux內核編寫過微型操作系統(tǒng)。工作之余喜歡以文章的形式將自己的學習心得進行總結,善于運用圖形等元素將復雜概念具體化,梳理脈絡而不拘于細節(jié)。05年在IBMLinux開發(fā)者論壇所發(fā)表的《解析Linux中的VFS文件系統(tǒng)機制》則堪稱作者這一寫作特色的代表之作,該文發(fā)表后曾被多家技術網(wǎng)站、論壇及個人博客所轉載。喜歡游泳,四肢發(fā)達,胸無城府。古文功底頗深,少時涉獵甚廣,現(xiàn)在則主要閱讀一些歷史題材類的書籍,熟讀《三國志》。目前任職于AMD上海研發(fā)中心,主要從事Linux顯卡驅動等領域的研發(fā)工作。

圖書目錄

目  錄第1章  內核模塊      11.1  內核模塊的文件格式   21.2  EXPORT_SYMBOL的內核實現(xiàn) 51.3  模塊的加載過程   81.3.1  sys_init_module(第一部分) 91.3.2  structmodule     91.3.3 load_module     131.3.4  sys_init_module(第二部分) 491.3.5  模塊的卸載      541.4  本章小結      55第2章  字符設備驅動程序      572.1  應用程序與設備驅動程序互動實例   582.2  structfile_operations    622.3  字符設備的內核抽象   632.4  設備號的構成與分配   652.4.1  設備號的構成   652.4.2  設備號的分配與管理      662.5  字符設備的注冊   712.6  設備文件節(jié)點的生成   742.7  字符設備文件的打開操作   772.8  本章小結      85第3章  分配內存      873.1  物理內存的管理   873.1.1  內存節(jié)點node   873.1.2  內存區(qū)域zone   883.1.3  內存頁      893.2  頁面分配器(pageallocator)    903.2.1 gfp_mask    913.2.2  alloc_pages 953.2.3 __get_free_pages      963.2.4  get_zeroed_page 973.2.5 __get_dma_pages     973.3  slab分配器(slaballocator)      983.3.1  管理slab的數(shù)據(jù)結構      993.3.2  kmalloc與kzalloc     1053.3.3 kmem_cache_create與kmem_cache_alloc     1083.4  內存池(mempool)   1103.5  虛擬內存的管理   1113.5.1  內核虛擬地址空間構成   1113.5.2  vmalloc與vfree 1123.5.3 ioremap      1153.6  per-CPU變量      1153.6.1  靜態(tài)per-CPU變量的聲明與定義   1163.6.2  靜態(tài)per-CPU變量的鏈接腳本      1173.6.3 setup_per_cpu_areas函數(shù) 1183.6.4  使用per-CPU變量   1213.7  本章小結      125第4章  互斥與同步    1274.1  并發(fā)的來源   1274.2  local_irq_enable與local_irq_disable   1284.3  自旋鎖   1294.3.1 spin_lock    1304.3.2  spin_lock的變體      1334.3.3  單處理器上的spin_lock函數(shù) 1364.3.4  讀取者與寫入者自旋鎖rwlock      1374.4  信號量(semaphore) 1414.4.1  信號量的定義與初始化   1414.4.2  DOWN操作      1424.4.3  UP操作     1454.4.4  讀取者與寫入者信號量rwsem      1464.5  互斥鎖mutex      1484.5.1  互斥鎖的定義與初始化   1484.5.2  互斥鎖的DOWN操作     1494.5.3  互斥鎖的UP操作   1504.6  順序鎖seqlock     1524.7 RCU      1554.7.1  讀取者的RCU臨界區(qū)     1564.7.2  寫入者的RCU操作 1564.7.3  RCU使用的特點      1574.8  原子變量與位操作      1594.9  等待隊列      1624.9.1  等待隊列頭wait_queue_head_t      1624.9.2  等待隊列的節(jié)點      1634.9.3  等待隊列的應用      1644.10  完成接口completion  1644.11  本章小結     168第5章  中斷處理      1695.1  中斷的硬件框架   1695.2  PIC與軟件中斷號      1705.3  通用的中斷處理函數(shù)   1715.4  do_IRQ函數(shù) 1725.5  structirq_chip      1785.6  structirqaction      1795.7 irq_set_handler     1805.8 handle_irq_event   1845.9 request_irq    1865.10  中斷處理的irq_thread機制      1905.11 free_irq      1915.12 SOFTIRQ    1925.13  irq的自動探測   1965.14  中斷處理例程    2005.15  中斷共享    2015.16  本章小結    202第6章  延遲操作      2036.1 tasklet    2036.1.1  tasklet機制初始化    2046.1.2  提交一個tasklet2056.1.3 tasklet_action     2096.1.4  tasklet的其他操作    2126.2  工作隊列workqueue   2146.2.1  數(shù)據(jù)結構   2146.2.2 create_singlethread_workqueue和create_workqueue     2166.2.3  工人線程worker_thread   2196.2.4 destroy_workqueue    2216.2.5  提交工作節(jié)點queue_work     2246.2.6  內核創(chuàng)建的工作隊列      2296.3  本章小結      230第7章  設備文件的高級操作    2317.1  ioctl文件操作      2317.1.1  ioctl的系統(tǒng)調用      2317.1.2  ioctl的命令編碼      2357.1.3  copy_from_user和copy_to_user     2387.2  字符設備的I/O模型   2437.3  同步阻塞型I/O    2447.3.1 wait_event_interruptible   2447.3.2 wake_up_interruptible      2467.4  同步非阻塞型I/O2507.5  異步阻塞型I/O    2517.6  異步非阻塞型I/O2587.7  驅動程序的fsync例程2597.8  fasync例程   2607.9  llseek例程    2697.10  訪問權能    2727.11  本章小結     273第8章  時間管理      2748.1 jiffies     2748.1.1  時間比較   2778.1.2  時間轉換   2788.2  延時操作      2798.2.1  長延時      2808.2.2  短延時      2858.3  內核定時器   2868.3.1 init_timer   2898.3.2  add_timer  2898.3.3  del_timer和del_timer_sync    2938.4  本章小結      293第9章 Linux設備驅動模型     2959.1  sysfs文件系統(tǒng)      2959.2  kobject和kset     2989.2.1 kobject      2989.2.2  kobject的類型屬性   3059.2.3 kset     3089.2.4  熱插拔中的uevent和call_usermodehelper    3119.2.5  實例源碼   3209.3  總線、設備與驅動      3289.3.1  總線及其注冊   3289.3.2  總線的屬性      3359.3.3  設備與驅動的綁定   3389.3.4  設備   3399.3.5  驅動   3489.4 class      3519.5  本章小結      355第10章  內存映射與DMA      35610.1  設備緩存與設備內存 35610.2  mmap  35610.2.1  structvm_area_struct     35710.2.2  用戶空間虛擬地址布局  35810.2.3  mmap系統(tǒng)調用過程      36210.2.4  驅動程序中mmap方法的實現(xiàn)     36810.2.5  mmap使用范例      37310.2.6  munmap  38310.3  DMA  38410.3.1  內核中的DMA層  38410.3.2  物理地址與總線地址     38610.3.3  dma_set_mask 38710.3.4  DMA映射      38810.3.5  回彈緩沖區(qū)(bouncebuffer)      40110.3.6  DMA池   40110.4  本章小結    405第11章  塊設備驅動程序  40711.1  塊子系統(tǒng)初始化 40811.2  ramdisk源碼實例      41011.2.1  make_request版本的RAMDISK源碼  41111.2.2  request版本的RAMDISK源碼    41611.2.3  ramdisk的使用      42011.3  塊設備號的注冊與管理     42211.4 block_device      42411.5  structgendisk      42511.6  structhd_struct    42811.7  用alloc_disk分配gendisk對象42811.8  向系統(tǒng)添加一個塊設備add_disk    43011.9 block_device_operations    43911.10  塊設備文件的打開   44011.11 blk_init_queue   44811.12 blk_queue_make_request  45911.13  向隊列提交請求      46011.14  塊設備的請求處理函數(shù)   46611.15  bio結構     46711.16  本章小結   472第12章  網(wǎng)絡設備驅動程序      47312.1  net_device  47512.2  網(wǎng)絡設備的注冊 48812.3  設備方法    49212.3.1  設備初始化     49412.3.2  設備接口的打開與停止  49512.3.3  數(shù)據(jù)包的發(fā)送  49512.3.4  網(wǎng)絡數(shù)據(jù)包發(fā)送過程中的流控機制     50012.3.5  傳輸超時(watchdogtimeout)    50312.3.6  數(shù)據(jù)包的接收  50612.4  套接字緩沖區(qū)    51012.5  中斷處理    51812.6  NAPI  52012.7  本章小結    522

本目錄推薦

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