2014-03-19 64 views

回答

1

通常,當需要在內核空間中物理連續存儲時,可以使用kmalloc()。 根據您的使用情況,您可以在init/open期間使用它。 如果您在init()中使用kmalloc,但從未使用該設備,則分配的內存很浪費。 如果在open()中使用kmalloc,則實際使用分配的內存,因爲僅在使用設備時才分配內存。

另外,請注意,您可以在內核中使用vmalloc(),以防您不需要物理上連續分配內存。

1

這取決於你什麼時候需要它。沒有硬性規定。

對於例如在linux kerneli2c驅動程序中,有兩個調用kmalloc,初始化或任何特定功能都沒有。

是的,它的行爲類似於用戶空間malloc調用和動態分配內存。

相關問題