freebsd11_network: Properly handle M_NOWAIT in _kernel_malloc.
I'm not sure what the comment was about; HEAP_DONT_WAIT_FOR_MALLOC predates the FreeBSD compatibility layer. Potentially fixes some timing issues.
This commit is contained in:
@@ -13,6 +13,7 @@
|
|||||||
|
|
||||||
#include <KernelExport.h>
|
#include <KernelExport.h>
|
||||||
#include <image.h>
|
#include <image.h>
|
||||||
|
#include <kernel/heap.h>
|
||||||
|
|
||||||
#include <util/BitUtils.h>
|
#include <util/BitUtils.h>
|
||||||
|
|
||||||
@@ -619,14 +620,13 @@ resource_int_value(const char *name, int unit, const char *resname,
|
|||||||
void *
|
void *
|
||||||
_kernel_malloc(size_t size, int flags)
|
_kernel_malloc(size_t size, int flags)
|
||||||
{
|
{
|
||||||
// our kernel malloc() is insufficient, must handle M_WAIT
|
|
||||||
|
|
||||||
// According to the FreeBSD kernel malloc man page the allocator is expected
|
// According to the FreeBSD kernel malloc man page the allocator is expected
|
||||||
// to return power of two aligned addresses for allocations up to one page
|
// to return power of two aligned addresses for allocations up to one page
|
||||||
// size. While it also states that this shouldn't be relied upon, at least
|
// size. While it also states that this shouldn't be relied upon, at least
|
||||||
// bus_dmamem_alloc expects it and drivers may depend on it as well.
|
// bus_dmamem_alloc expects it and drivers may depend on it as well.
|
||||||
void *ptr
|
void *ptr
|
||||||
= memalign(size >= PAGESIZE ? PAGESIZE : next_power_of_2(size), size);
|
= memalign_etc(size >= PAGESIZE ? PAGESIZE : next_power_of_2(size), size,
|
||||||
|
(flags & M_NOWAIT) ? HEAP_DONT_WAIT_FOR_MEMORY : 0);
|
||||||
if (ptr == NULL)
|
if (ptr == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user