xref: /kvm-unit-tests/lib/alloc_phys.h (revision dc47ac613f1df343417d1a730d6b68e5e0b0c1a9)
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