/* lina.fn.c - kmlina() - linear allocate * ~ lexi hale * kmlina() allocates the requested amount of space on * the heap and returns a pointer to it. it allocates * this memory simply by growing the heap the proper * length. */ #include #include #ifdef KFenv_posix # include #endif kmres kmlina(sz size) { k_platform_syscall_arg top = (sz)kmlini(), newbrk = top + size; struct k_platform_syscall_answer a = k_platform_syscall (k_platform_syscall_brk, 1, &newbrk); kmres reply; if (a.error != 0) reply.cond = kmcond_no_room, reply.raw = 0; else reply.cond = kmcond_ok, reply.raw = (void*)a.ret; return reply; }