#include #include #include #include int main() { char string[] = "333.txt"; uint8_t buf[128] = {0}; char tips_str[] = "The first application 'init.bin' started successfully!\n"; put_string(tips_str, COLOR_GREEN, COLOR_BLACK); printf("test printf: %s size: %d\n", string, sizeof(string)); /* int fd = open(string, 0); printf("fd=%d\n", fd); read(fd, buf, 128); put_string(buf, COLOR_ORANGE, COLOR_BLACK); lseek(fd, 0, SEEK_SET); write(fd, tips_str, sizeof(tips_str)-1); lseek(fd, 0, SEEK_SET); // 由于暂时没有实现用户态的memset,因此先手动清零 for(int i=0;i<128;++i) buf[i] = 0; read(fd, buf, 128); put_string(buf, COLOR_YELLOW, COLOR_BLACK); close(fd); */ void *ptr[256] = {0}; for (int k = 0; k < 2; ++k) { printf("try to malloc 256*16K=4MB\n"); uint64_t js = 0; for (int i = 0; i < 256; ++i) { ptr[i] = malloc(4096 * 4); js += *(uint64_t *)((uint64_t)(ptr[i]) - sizeof(uint64_t)); if (*(uint64_t *)((uint64_t)(ptr[i]) - sizeof(uint64_t)) > 0x4008) printf("[%d] start_addr = %#018lx, len = %#010lx\n", (uint64_t)(ptr[i]) - 8, *(uint64_t *)((uint64_t)(ptr[i]) - sizeof(uint64_t))); } // printf("ptr[0]->len=%lld\n", *(uint64_t *)((uint64_t)ptr[0] - sizeof(uint64_t))); // printf("ptr[1]->len=%lld\n", *(uint64_t *)((uint64_t)ptr[1] - sizeof(uint64_t))); // printf("ptr[24]->len=%lld\n", *(uint64_t*)((uint64_t)ptr[24] - sizeof(uint64_t))); printf("alloc done. total used: %lld bytes\n", js); printf("try to free...\n"); for (int i = 0; i < 256; ++i) { free(ptr[i]); } printf("free done!\n"); } // *p = 'a'; /* pid_t p = fork(); if(p == 0) put_string("subproc\n", COLOR_PURPLE, COLOR_BLACK); else put_string("parent proc\n", COLOR_ORANGE, COLOR_BLACK); */ while (1) ; }