2016-02-26 3 views
0

Я создаю кэш плиты kmem_cache_create(... size), а затем выделяю память из этого кеша на kmem_cache_alloc().Что произойдет, если у kmem_cache нет свободной памяти для выделения?

После того, как я выделил память для «размера» раз, что произойдет, если я позвоню kmem_cache_alloc(), чтобы выделить size + 1-я память? Вернуть NULL или расширить кеш неявно?

ответ

0

Аргумент «размер» не относится к памяти, зарезервированной для чего-либо. Речь идет о размере каждого распределения, возвращаемого kmem_cache_alloc.

Возможно, в этом случае будет недостаток памяти, и в этом случае, в зависимости от флагов, наложенных на kmem_cache_alloc, ядро ​​может попытаться освободить некоторых, например. сокращающиеся тайники.