1*dc47ac61SPaolo Bonzini #ifndef _ALLOC_PHYS_H_ 2*dc47ac61SPaolo Bonzini #define _ALLOC_PHYS_H_ 3*dc47ac61SPaolo Bonzini /* 4*dc47ac61SPaolo Bonzini * phys_alloc is a very simple allocator which allows physical memory 5*dc47ac61SPaolo Bonzini * to be partitioned into regions until all memory is allocated. 6*dc47ac61SPaolo Bonzini * 7*dc47ac61SPaolo Bonzini * Note: This is such a simple allocator that there is no way to free 8*dc47ac61SPaolo Bonzini * a region. For more complicated memory management a single region 9*dc47ac61SPaolo Bonzini * can be allocated, but then have its memory managed by a more 10*dc47ac61SPaolo Bonzini * sophisticated allocator, e.g. a page allocator. 11*dc47ac61SPaolo Bonzini * 12*dc47ac61SPaolo Bonzini * Copyright (C) 2014, Red Hat Inc, Andrew Jones <drjones@redhat.com> 13*dc47ac61SPaolo Bonzini * 14*dc47ac61SPaolo Bonzini * This work is licensed under the terms of the GNU LGPL, version 2. 15*dc47ac61SPaolo Bonzini */ 16*dc47ac61SPaolo Bonzini #include "libcflat.h" 17*dc47ac61SPaolo Bonzini 18*dc47ac61SPaolo Bonzini #define DEFAULT_MINIMUM_ALIGNMENT 32 19*dc47ac61SPaolo Bonzini 20*dc47ac61SPaolo Bonzini /* 21*dc47ac61SPaolo Bonzini * phys_alloc_init creates the initial free memory region of size @size 22*dc47ac61SPaolo Bonzini * at @base. The minimum alignment is set to DEFAULT_MINIMUM_ALIGNMENT. 23*dc47ac61SPaolo Bonzini */ 24*dc47ac61SPaolo Bonzini extern void phys_alloc_init(phys_addr_t base, phys_addr_t size); 25*dc47ac61SPaolo Bonzini 26*dc47ac61SPaolo Bonzini /* 27*dc47ac61SPaolo Bonzini * phys_alloc_set_minimum_alignment sets the minimum alignment to 28*dc47ac61SPaolo Bonzini * @align. 29*dc47ac61SPaolo Bonzini */ 30*dc47ac61SPaolo Bonzini extern void phys_alloc_set_minimum_alignment(phys_addr_t align); 31*dc47ac61SPaolo Bonzini 32*dc47ac61SPaolo Bonzini /* 33*dc47ac61SPaolo Bonzini * phys_alloc_show outputs all currently allocated regions with the 34*dc47ac61SPaolo Bonzini * following format 35*dc47ac61SPaolo Bonzini * <start_addr>-<end_addr> [<USED|FREE>] 36*dc47ac61SPaolo Bonzini */ 37*dc47ac61SPaolo Bonzini extern void phys_alloc_show(void); 38*dc47ac61SPaolo Bonzini 39*dc47ac61SPaolo Bonzini #endif /* _ALLOC_PHYS_H_ */ 40