原创 ipconntrack中的一個BUG

好不容易搞個週六,被總監叫回去救火,鬱悶啊! 說是BT下載有內存泄露。跑兩小時就內核掛了。亂殺進程。 又出現了傳說中的內存泄露。哎。只好回公司。 首先進行問題定位。 先看是內核的還是應用的。經過對SLABINFO進行分析。發現是內核中一個

原创 非易失性存儲設備寫數據掉電恢復策略

本文允許轉載。轉載請註明出處:http://blog.csdn.net/z2007b 作者:無爲和尚   非易失性存儲設備寫數據時掉電恢復是一個比較頭痛的問題,如果寫入數據寫入到一半的時候掉電,數據的完整性就沒法得到保證,本文提出的方法是

原创 linux內核中platform框架中的一個小技巧

先給出函數原型: struct platform_device *platform_device_alloc(const char *name, int id){ struct platform_object *pa;  pa = kza

原创 擴展EBTABLES

之前對ARP協議進行了擴展,可是隻能對ARP包進行修改,後面又有了DHCP包的VLAN優先級不對的問題。想了想,這樣下去不行,就直接想在在發包的過程中掛個HOOK,這個地方。然後統一修改。大小通吃。並且這樣做的好處在於以後要再加什麼功能也

原创 Linux內核LED模塊分析(二)

Linux內核LED模塊分析(二)上次分析到那裏後,還是有些同志說看不懂,那我就繼續分析一把我認爲不需要繼續分析的東西吧。上回分析了 led_cdev和trigger的關係後就沒有繼續說了。有同志還是沒明白怎麼調用的。幹活的函數是:sta

原创 netfilter框架分析

本來是不打算寫這種基礎性的東西的,但是有很多同志經常問我(有同事也有網友)。所以就寫一下吧,這個是理解LINUX內核網絡子系統的基礎,ip conntrack等都是依賴這些基礎的。好的,閒話不多說了。來正文。 其實netfilter就是依

原创 LINUX內核大講堂系列(序論)

LINUX內核大講堂系列(序論) 其實我也是過來人,深知沒有接觸過內核開發的同志在無人指導的情況下獨自學習LINUX設備驅動的感受。都是買書,看 BLOG,自已調個小程序,很難有同志能夠堅持下去,市面上的書籍也不是說寫的不好,只是大家的基

原创 ip conntrack整體框圖

花了三個小時畫的一個圖。獻給大家做爲愚人節的禮物。呵呵。          

原创 linux內核裏的工作隊列及內核通知鏈

看懂後總結了一下,其實就兩句話: 工作隊列初始化就是開啓一個內核線程,然後內核線程會將你註冊在鏈表上的動作(函數)按順序執行,執行完後將函數從鏈表上移除。 內核通知鏈其實就是一個回調函數鏈。你首先需要將你要執行的動作註冊到鏈表上。然後在一

原创 雙向鏈表在內核中的超然地位

玩過內核的人都知道,linux內核中的鏈表是比較有特色的。利用一個container_of宏來實現鏈表到數據的計算,不可謂不精妙。(如果不知道的同志趕快上網看看)爲什麼linux內核要用雙向鏈表?爲什麼不用單向鏈表?這是因爲雙向鏈表的靈活

原创 linux內核代碼閱讀的幾個技巧

這些技巧都是平時我自已在閱讀的時候總結的,想到哪就說到哪了,其實我總結的技巧遠不止這些,但是先說這些吧。後面想到了再補充,只有在拿到代碼做分析的時候遇到實際的問題時,才能見招拆招,想些辦法。其實linux內核源碼還是比較難跟蹤的,我剛開始

原创 高手是怎樣煉成的

高手,大牛,專家,這是對一個技術人員最高的評價。 前經看過幾篇文章,什麼程序員的十重境界,程序的幾個層次等等。 發現大家對高手的理解各有不同,但和我所理解的高手差別還是挺大的。 其實我只想對高手進行分析,找到某種共性,使自已在學習成長的過

原创 Linux內核LED模塊分析(一)

應羣裏幾位聊的好的哥們的邀請,要我分析一個內核模塊。我後面就選了LED模塊分析,LED模塊分析不算難,但 要說清楚其實還是很挑戰的。今天俺的文章被推薦到首頁了。挺有成就感的。我的文章雖然不登大雅之堂,但只 要能給到大家一起指點,哪怕就一點

原创 Linux內核大講堂 (一) 設備驅動的基石驅動模型(1)

可能把驅動模型放在第一章講會會有點難度,但是只要能跨過這道坎,後面就會輕鬆很多,驅動模型是整個linux設備驅動的基石。大部分人把驅動模型叫做設備模型,但是我查了linux的幫助文檔,就是在下載源碼路徑下的Documentation目錄中

原创 linux雙向鏈表分析之list_del中的技巧

linux內核的雙向鏈表是比較經典的東西,網上分析鏈表的同志基本分析了99%,就差了1%。那就是list_del函數。先給出函數原型: #ifdef CONFIG_ILLEGAL_POINTER_VALUE# define POISON_