我該如何知道在哪個位置我應該使用kmalloc()爲設備驅動程序中的設備分配內存?我們如何在linux驅動程序代碼中使用kmalloc
在初始化期間還是在打開期間?和malloc一樣,wil kmalloc是動態分配內存的嗎?
我該如何知道在哪個位置我應該使用kmalloc()爲設備驅動程序中的設備分配內存?我們如何在linux驅動程序代碼中使用kmalloc
在初始化期間還是在打開期間?和malloc一樣,wil kmalloc是動態分配內存的嗎?
通常,當需要在內核空間中物理連續存儲時,可以使用kmalloc()。 根據您的使用情況,您可以在init/open期間使用它。 如果您在init()中使用kmalloc,但從未使用該設備,則分配的內存很浪費。 如果在open()中使用kmalloc,則實際使用分配的內存,因爲僅在使用設備時才分配內存。
另外,請注意,您可以在內核中使用vmalloc(),以防您不需要物理上連續分配內存。
這取決於你什麼時候需要它。沒有硬性規定。
對於例如在linux kernel的i2c
驅動程序中,有兩個調用kmalloc
,初始化或任何特定功能都沒有。
是的,它的行爲類似於用戶空間malloc
調用和動態分配內存。