summaryrefslogtreecommitdiffstats
path: root/common/misc.c
blob: 0d193664c0ea0c39acf84535a2859ba1ee2ad297 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <common.h>
#include <mem_malloc.h>

/*
 * Begin and End of memory area for malloc(), and current "brk"
 */
static ulong mem_malloc_start = 0;
static ulong mem_malloc_end = 0;
static ulong mem_malloc_brk = 0;

void mem_malloc_init (ulong start, ulong end)
{
	mem_malloc_start = start;
	mem_malloc_end = end;
	mem_malloc_brk = mem_malloc_start;

	memset ((void *) mem_malloc_start, 0,
			mem_malloc_end - mem_malloc_start);
}

void *sbrk (ptrdiff_t increment)
{
	ulong old = mem_malloc_brk;
	ulong new = old + increment;

        if ((new < mem_malloc_start) || (new > mem_malloc_end)) {
 		return (NULL);
	}
	mem_malloc_brk = new;

	return ((void *) old);
}

void perror(char *s, int errno)
{
        printf("%s failed with %d\n", s, errno);
}