我正在爲在x86-64 SMP上運行的版本2.6.32編寫一個小型Linux可加載內核模塊。per-cpu變量的地址
我的問題是:有沒有辦法獲得內核中聲明的per-cpu變量的地址偏移量。偏移量指的是從gs寄存器中找到的percpu基地址的偏移量。具體來說,我試圖找到current_task變量的偏移量,它是我相信當前任務的任務結構的指針。
我正在尋找具有get_current()函數的arch/x86/include/asm/current.h。該函數使用宏percpu_read_stable讀取current_task per-cpu變量。至於我能理解percpu_read_stable基本上擴展到ASM程序是這樣的:
asm("movq %%gs:%P1, %0"
: "=r" (ret__)
: "m" (per_cpu__current_task))
這是在arch/86 /包括/ ASM/percpu.h。 我想從我的模塊讀取gs後的偏移量。如果我嘗試使用per_cpu_current_task變量來簡單地執行printk,則該模塊將被終止。
感謝您的關注!