實際上是按照cpu個數建立的乙個陣列,每個cpu訪問自己的陣列成員,所以不用持鎖,但是會有乙個問題需要考慮,就是核心搶占問題:
1.乙個訪問每個cpu資料的任務,可能會被排程在不同的cpu上執行,此時對應的陣列成員就不同的
2.另乙個任務搶占了當前任務在當前cpu上執行,如果兩個任務都訪問當前cpu的資料,那麼可能發生問題
鑑於以上問題,在每次操作每個cpu資料時,需要在操作前禁止掉搶占,操作後開啟搶占,核心中可以通過如下api可以實現該功能:
get_cpu()
put_cpu()
核心中的資料型別
第 11 章 核心中的資料型別 除了資料型別,當編寫乙個驅動時有幾個其他的軟體問題要記住,如果你想在 linux 平台間可移植.乙個通常的規則是懷疑顯式的常量值.常常通過使用預處理巨集,已被引數化.這一節列出了最重要的可移植性問題.無論何時你遇到已被引數化的值,你可以在標頭檔案中以及在隨官方核心發布...
linux核心中list head使用介紹
list head結構的介紹 list head結構定義在 struct list head 有的人可能看到這樣的結構會覺得很奇怪這樣的結構可以存放資料嗎?當然是不行的棉,因為這個結構根本是拿來讓人當資料存的。首先,我們先來看看兩個macro,define list head name struct...
Java核心中的核心 多型
一句話概括多型 也叫動態繫結 在執行期間,判斷其引用的實際型別,根據其實際的型別,呼叫對應的方法。多型可以幫助我們的程式的顆擴充套件性達到極致。多型的三個必要條件 1 要有繼承。2 子類要重寫父類的方法。3 父類的引用指向子類的物件。根據以下的 來理解 class animal 在animal類裡面...