physalloc, physfree, phystag, physinit, physallocdump – kernel buddy allocator for physical addresses


void      physinit(uintmem pa, u64int size)
uintmem physalloc(u64int size, int *colorp, void *tag)
void*     phystag(uintmem pa)
void      physfree(uintmem pa, u64int size)
char*     seprintphysstats(char *s,    char *e)


The kernel contains a buddy allocator to hand out large chunks of memory outside the kernel heap. The buddy allocator does not assign virtual addresses. The map is populated by one or more calls to physinit. Physalloc allocates a region of the given color with the given tag. If the color is –1, then any memory color may be used, otherwise only memory of the given color will be allocated. The tag is user–defined. Calls to phystag map addresses in the allocation back to tag. Allocated regions are freed with physfree. Stats may be put in a buffer with seprintstats, which takes a pointer to a buffer and its end as seprint.




adr(9nix), qmalloc(9nix),