static void __attribute__((constructor)) mallocsetup(void) { hts_lwmutex_init(&mutex); #ifdef USE_VIRTUAL_MEM int size = MB(256); int psize = MB(96); Lv2Syscall6(300, size, psize, 0xFFFFFFFFU, 0x200ULL, 1UL, (u64)&heap_base); #else int size = MB(96); Lv2Syscall3(348, size, 0x400, (u64)&heap_base); #endif total_avail = size; gpool = tlsf_create((void *)(intptr_t)heap_base, size); // Malloc is initialized now so we can safely do this http_path_add("/api/memstats", NULL, memstats, 1); }
void backend_init(void) { backend_t *be; hts_lwmutex_init(&dyanamic_backends_mutex); hts_mutex_init(&imageloader_mutex); hts_cond_init(&imageloader_cond, &imageloader_mutex); TAILQ_INIT(&cached_images); LIST_FOREACH(be, &backends, be_global_link) if(be->be_init != NULL) be->be_init(); }