歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux內核

Linux內核模塊編程指南

  申明:此系列原作者Ori Pomerantz 翻譯:cherami

  簡介

  現在,你想寫內核模塊。你了解C語言並且已經寫過一些普通的程序,現在你想接觸真正的動作在哪兒,那個單一的瘋狂的可以刪除整個文件系統的指針及內核轉儲意味著重新啟動在哪兒。

  那麼好吧,歡迎來到這個俱樂部。我曾經有一個瘋狂的指針刪除了DOS (值得慶幸的是,它現在代表 Dead Operating System)下的一個重要的目錄,而且我看不出來為什麼在Linux下會更安全。

  警告: 我是在運行於Pentium的2.0.35 和 2.2.3 版本內核的系統下寫下這些並檢查那些程序的,對於其中的大部分,它們也會工作於其他的CPU和內核版本下,只要內核的版本是2.0.x 或 2.2.x,但我不能保證任何事。一個例外是11章 , 它們只能工作於x86系統下.

  誰應該閱讀本書

  這個文檔是為那些想寫內核模塊的人而寫的。雖然我會在幾個地方提及在內核中事情是如何完成的,但這不是我的目的。有足夠的好的資料會在那方面做的更好。

  這個文檔也是為那些知道如何寫內核模塊但還不適應2.2版內核的人寫的.如果你是這類人,我建議你看看附錄 A以了解我在更新范例時遇到的所有的差異。那個列表是不全面的但我想它覆蓋了大部分的基本功能並且足夠讓你開始新的工作。

  內核是一大塊程序,並且我相信程序員應該至少讀懂一些內核源代碼。說到這,我也相信首先使用系統然後問問題的價值。當我學習一種新的編程語言的時候,我不是從讀庫代碼開始的,而是通過寫一些小的`hello, world'程序開始的。我看不出來在內核上應該有什麼不同。

  注意風格

  我喜歡在我的文檔加入盡可能多的笑話。我寫這是因為我喜歡它,並且我假設你們中的多數也讀這也是基於同樣的原因。如果你僅僅想接觸這些,那麼忽略所有的普通文本而去讀源代碼。我保證我已經將所有的重要的細節放在了注釋裡面。

  修改記錄

  版本 1.0.1中的新東西

  1. 修改節。

  2. 如何查找最小的設備號。

  3. 整理字符文件和設備文件之間的差異的說明。

  4. 內核模塊的make描述文件。

  5. 對稱多處理。

  6. “壞主意”。

  版本 1.1.0中的新東西

  1. 支持內核版本2.2, 所有的地方。

  2. 多內核版本源文件。

  3. 2.0 版和 2.2版之間的變化。

  4. 內核模塊中的多文件。

  5. 不要寫和系統調用混合的模塊。

  感謝

  我感謝 Yoav Weiss,他給了我很多有益的主意和討論並且在這個文檔出版前發現了很多錯誤,當然現有的錯誤完全是我的過錯。這本書的 TEX 構架剽竊於 `Linux Installation and Getting Started Guide'(Linux安裝與入門指南) , TEX 是Matt Welsh的作品. 我感謝Linus Torvalds, Richard Stallman 和所有其他讓我得以在我的計算機上運行如此高質量的操作系統及源代碼而沒有指出的人(是的,那麼我為什麼說呢?)。

  對版本 1.0.1

  我不能列出所有給我發email的人,如果我沒有列出你,我先在此道歉。下面的人對我有很大的幫助:

  來自荷蘭的Frodo Looijaard ,他提供了一個關於主機的有用的建議及關於 2.1.x 版本內核的信息.

  來自新西蘭的Stephen Judd 他進行了拼寫校正.

  來自瑞典的Magnus Ahltorp 他更正了我的關於字符設備和塊設備之間的差異的錯誤。

  對版本 1.1.0

  來自加拿大魁北克的Emmanuel Papirakis 他編寫了所有的對內核 2.2 的范例。

  來自荷蘭的Frodo Looijaard 他教會了我如何創建內核模塊的多文件.

  當然,任何現存的錯誤都是我的過錯,如果你認為這些錯誤使本書是無用的,歡迎你向我索還你付給我的全額款項。

Copyright © Linux教程網 All Rights Reserved