memblock_alloc_try_nid(9)
πΈ NAME πΈ
memblock_alloc_try_nid β bestie, this is the one that allocates a boot memory block π
β¨ SYNOPSIS β¨
void * memblock_alloc_try_nid (phys_addr_t size , phys_addr_t align ,
phys_addr_t min_addr , phys_addr_t max_addr , int nid );
okay so she takes five things and gives you back a pointer, slay π«Ά
π ARGUMENTS π
sizeβ how big the memory block you want is, in bytes. literally the size, that's it πalignβ the alignment of the region and the block's size. yes both. she's thorough β¨min_addrβ the lower bound of the memory region where you'd prefer the allocation to land (physical address, iykyk) πΈmax_addrβ the upper bound of that same preferred region (physical address again), or you can passMEMBLOCK_ALLOC_ACCESSIBLEand then it only allocates from memory limited by thememblock.current_limitvalue π₯nidβ thenidof the free area to go find, orNUMA_NO_NODEif you're chill with literally any node π¦
π DESCRIPTION π
She's a public function, so everyone can call her, and no cap she provides extra debugging info (including caller info) if that's enabled π
Also, important: this function zeroes the allocated memory β¨ every byte, squeaky clean, no leftover vibes.
π RETURN π
Virtual address of the allocated memory block on success π NULL on failure π (she is not okay, and neither are you).
π§ SEE ALSO π§
Kernel file ./mm/memblock.c, plus the whole friend group, fr fr:
memblock overview(9)__memblock_find_range_bottom_up(9)__memblock_find_range_top_down(9)memblock_find_in_range_node(9)memblock_find_in_range(9)memblock_discard(9)memblock_double_array(9)memblock_merge_regions(9)memblock_insert_region(9)memblock_add_range(9)memblock_add_node(9)memblock_add(9)memblock_validate_numa_coverage(9)memblock_isolate_range(9)memblock_free(9)memblock_phys_free(9)memblock_setclr_flag(9)memblock_mark_hotplug(9)memblock_clear_hotplug(9)memblock_mark_mirror(9)memblock_mark_nomap(9)memblock_clear_nomap(9)memblock_reserved_mark_noinit(9)memblock_reserved_mark_kern(9)memblock_mark_kho_scratch(9)memblock_clear_kho_scratch(9)__next_mem_range(9)__next_mem_range_rev(9)memblock_set_node(9)memblock_alloc_range_nid(9)memblock_phys_alloc_range(9)memblock_phys_alloc_try_nid(9)memblock_alloc_internal(9)memblock_alloc_exact_nid_raw(9)memblock_alloc_try_nid_raw(9)memblock_alloc_hugetlb(9)__memblock_alloc_or_panic(9)memblock_estimated_nr_free_pages(9)memblock_is_region_memory(9)memblock_is_region_reserved(9)memblock_free_all(9)reserve_mem_find_by_name(9)reserve_mem_release_by_name(9)
and that's the whole thing bestie π this page lives in ./mm and was dated October 2026, mwah, go allocate something iconic β¨π
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms