diff --git a/ubb-vga/physmem.c b/ubb-vga/physmem.c index b0921bc..348dda0 100644 --- a/ubb-vga/physmem.c +++ b/ubb-vga/physmem.c @@ -21,13 +21,25 @@ */ +static void align_brk(int alignment) +{ + unsigned long addr; + + addr = (unsigned long) sbrk(0); + sbrk(alignment-(addr % alignment)); +} + + void **calloc_phys_vec(size_t n, size_t size) { void **vec; int i; + align_brk(sizeof(void *)); vec = sbrk(sizeof(void *)*n); + for (i = 0; i != n; i++) { + align_brk(512); /* crude page alignment */ vec[i] = sbrk(size); memset(vec[i], 0, size); }