diff --git a/System/FFI/LibC.HC b/System/FFI/LibC.HC index 2e6bbb6..4b89096 100644 --- a/System/FFI/LibC.HC +++ b/System/FFI/LibC.HC @@ -12,8 +12,8 @@ U0 bcmp() U64 @calloc(I64 size) { - U64 res = CAlloc(size, malloc_mem_task[malloc_current_mem_task % MALLOC_MEM_TASK_COUNT]->code_heap); - malloc_current_mem_task++; + U64 res = CAlloc(size, calloc_mem_task[calloc_current_mem_task % CALLOC_MEM_TASK_COUNT]->code_heap); + calloc_current_mem_task++; return res; } diff --git a/System/Setup/Environment.HC b/System/Setup/Environment.HC index c9d995e..ea26476 100644 --- a/System/Setup/Environment.HC +++ b/System/Setup/Environment.HC @@ -169,8 +169,8 @@ sys_code_bp->mem_free_lst = ShrinkMemBlkByPags(sys_code_bp->mem_free_lst, 131072 CTask* erythros_mem_task = Spawn(&@erythros_mem_task_loop, , "ErythrosMemTask"); -#define MALLOC_MEM_TASK_COUNT 4 -CTask** malloc_mem_task = CAlloc(sizeof(CTask*) * MALLOC_MEM_TASK_COUNT, erythros_mem_task); +#define MALLOC_MEM_TASK_COUNT 16 +CTask** malloc_mem_task = CAlloc(sizeof(CTask*) * MALLOC_MEM_TASK_COUNT, adam_task); I64 malloc_current_mem_task = 0; U0 @malloc_mem_tasks_init() @@ -185,6 +185,22 @@ U0 @malloc_mem_tasks_init() @malloc_mem_tasks_init; +#define CALLOC_MEM_TASK_COUNT 16 +CTask** calloc_mem_task = CAlloc(sizeof(CTask*) * CALLOC_MEM_TASK_COUNT, adam_task); +I64 calloc_current_mem_task = 0; + +U0 @calloc_mem_tasks_init() +{ + U8* scratch_buffer[64]; + I64 i; + for (i = 0; i < CALLOC_MEM_TASK_COUNT; i++) { + StrPrint(scratch_buffer, "ErythrosCallocTask%d", i); + calloc_mem_task[i] = Spawn(&@erythros_mem_task_loop, , scratch_buffer); + } +} + +@calloc_mem_tasks_init; + U0 dd() { DocDump(adam_task->put_doc); } //@patch_jmp_rel32(&Fault2, &Reboot); // Reboot instead of crashing to the debugger U0 NoBeep(I8, Bool) {};