linux核心細節 va arg 錯誤 崩潰

2021-08-07 07:56:53 字數 543 閱讀 5335

最近做windows至linux遷移,碰到乙個linux核心的問題,         

#define _bnd(x, bnd) (((sizeof (x)) + (bnd)) & (~(bnd)))

#define va_arg(ap, t)

(*(t *)

(((ap) += (_bnd (t, _aupbnd))) - (_bnd (t,_adnbnd))))

#define va_end(ap) (ap = (va_list) null)

#define va_start(ap, a) (void) ((ap) = (((char *) &(a)) + (_bnd (a,_aupbnd)))

此些語句每次做一定的偏移,沒有型別的限制,而我們

每次在va_list讀了乙個word,而linux核中是無法區別 int 位元組寬度以下的

(也是從別的文件中得知),因些每次讀乙個int再將其內容強制轉化為word,像byte同樣轉化,此時問題得到解決。具體情況見 鴨蛋西紅柿 的c部落格。

本人系統為centos 64..

公升級Linux核心錯誤

因為要使用ntfs 3g 核心至少2.6.22才不會有warning提示 的寫功能,所以將自己機器上的linux debian 核心從2.6.18公升級到目前最新的2.6.25.9 最後還是要生成initrd檔案的,可以使用yaird命令 這裡記錄一下公升級過程中碰到的兩個導致linux啟動pani...

linux核心搶占的幾個細節

郵件列表每天都能讓我學到新東西,感謝他!有朋友問preempt active有什麼用,我給出了最簡單的回答,就是避免被搶占的程序被無情的趕出執行佇列。這個回答顯然不能讓那位朋友滿意.程序一旦呼叫了schedule,如果再次被排程執行,那麼有下面幾種可能 1.狀態為task running,處於執行佇...

centos核心錯誤 Linux核心適配的一則小記

我們的產品包含多個核心驅動模組,隨著linux核心的不斷演進,既有的驅動 可能因為使用了一些被新版本核心所廢棄的函式或者資料結構,導致不能編譯通過,或者執行時出錯。這時,我們就需要修改我們的驅動 以便其能在新版本的核心上正常工作,這個過程通常被稱為 適配 最近就接到了乙個客戶在centos 7上適配...