October 2017
Intermediate to advanced
586 pages
14h 8m
English
vmalloc() is the last kernel allocator we will discuss in the book. It returns memory only contiguous in virtual space (not physically contiguous):

The returned memory always comes from the HIGH_MEM zone. Addresses returned cannot be translated into physical ones or into bus addresses, because you cannot assert that the memory is physically contiguous. It means memory returned by vmalloc() can't be used outside the microprocessor (you cannot easily use it for DMA purposes). It is correct to use vmalloc() to allocate memory for a large sequential (it does not make sense to use it to allocate one page, for example) that exists ...