Include stdlib.h rather than malloc.h
[people/xl0/gpxe.git] / src / include / malloc.h
1 #ifndef _MALLOC_H
2 #define _MALLOC_H
3
4 #include <stdint.h>
5
6 /** @file
7  *
8  * Dynamic memory allocation
9  *
10  */
11
12 /*
13  * Prototypes for the standard functions (malloc() et al) are in
14  * stdlib.h.  Include <malloc.h> only if you need the non-standard
15  * functions, such as malloc_dma().
16  *
17  */
18 #include <stdlib.h>
19
20 extern void * alloc_memblock ( size_t size, size_t align );
21 extern void free_memblock ( void *ptr, size_t size );
22 extern void mpopulate ( void *start, size_t len );
23 extern void mdumpfree ( void );
24
25 /**
26  * Allocate memory for DMA
27  *
28  * @v size              Requested size
29  * @v align             Physical alignment
30  * @ret ptr             Memory, or NULL
31  *
32  * Allocates physically-aligned memory for DMA.
33  *
34  * @c align must be a power of two.  @c size may not be zero.
35  */
36 static inline void * malloc_dma ( size_t size, size_t phys_align ) {
37         return alloc_memblock ( size, phys_align );
38 }
39
40 /**
41  * Free memory allocated with malloc_dma()
42  *
43  * @v ptr               Memory allocated by malloc_dma(), or NULL
44  * @v size              Size of memory, as passed to malloc_dma()
45  *
46  * Memory allocated with malloc_dma() can only be freed with
47  * free_dma(); it cannot be freed with the standard free().
48  *
49  * If @c ptr is NULL, no action is taken.
50  */
51 static inline void free_dma ( void *ptr, size_t size ) {
52         free_memblock ( ptr, size );
53 }
54
55 #endif /* _MALLOC_H */