37 lines
1.0 KiB
C
37 lines
1.0 KiB
C
function S32 os_main();
|
|
const SizeU page_size = 4096;
|
|
|
|
function String
|
|
os_read_file(Arena *arena, String name){
|
|
String result = {0};
|
|
FILE *f = fopen((char *)name.str, "rb");
|
|
assert(f);
|
|
fseek(f, 0, SEEK_END);
|
|
result.len = ftell(f);
|
|
fseek(f, 0, SEEK_SET); /* same as rewind(f); */
|
|
|
|
result.str = arena_push_size(arena, result.len + 1);
|
|
fread(result.str, result.len, 1, f);
|
|
fclose(f);
|
|
|
|
result.str[result.len] = 0;
|
|
return result;
|
|
}
|
|
|
|
function OS_Memory
|
|
os_reserve(SizeU size){
|
|
OS_Memory result = {0};
|
|
SizeU adjusted_size = align_up(size, page_size);
|
|
result.data = VirtualAlloc(0, adjusted_size, MEM_RESERVE, PAGE_READWRITE);
|
|
assert_msg(result.data, "Failed to reserve virtual memory");
|
|
result.reserve = adjusted_size;
|
|
return result;
|
|
}
|
|
|
|
function void
|
|
os_commit(OS_Memory *m, SizeU size){
|
|
SizeU commit = align_up(size, page_size);
|
|
void *p = VirtualAlloc((U8 *)m->data + m->commit, commit, MEM_COMMIT, PAGE_READWRITE);
|
|
assert_msg(p, "Failed to commit more memory");
|
|
m->commit += commit;
|
|
} |