From 6d75e31596b5ac2e638c8a31c6c2185ee4053b6b Mon Sep 17 00:00:00 2001 From: Minep Date: Sat, 27 Aug 2022 13:13:52 +0100 Subject: [PATCH] refactor: clean up the virtual memory mappings chores: other code clean up --- docs/img/lunaix-os-mem.png | Bin 110968 -> 97974 bytes lunaix-os/hal/pci.c | 4 +- lunaix-os/includes/lunaix/common.h | 17 +- lunaix-os/includes/lunaix/mm/cake.h | 14 + lunaix-os/includes/lunaix/mm/page.h | 2 +- lunaix-os/includes/lunaix/sched.h | 2 +- lunaix-os/kernel/asm/x86/pfault.c | 10 +- lunaix-os/kernel/k_init.c | 24 +- lunaix-os/kernel/mm/cake.c | 22 +- lunaix-os/kernel/mm/dmm.c | 12 +- lunaix-os/kernel/mm/kalloc.c | 511 ++++++++++++++-------------- lunaix-os/kernel/mm/mmio.c | 10 +- lunaix-os/kernel/mm/region.c | 2 +- lunaix-os/kernel/process.c | 2 +- lunaix-os/kernel/sched.c | 60 ++-- lunaix-os/kernel/tty/tty.c | 2 +- 16 files changed, 363 insertions(+), 331 deletions(-) diff --git a/docs/img/lunaix-os-mem.png b/docs/img/lunaix-os-mem.png index 75c82a46b874ce7ae3e3fc17546b0979c03b4f3c..dd64890099997887137c7c49e93cbed2232ec12b 100644 GIT binary patch literal 97974 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 Ka0STx&Hn?)Rw4NS literal 110968 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⁢I2xC^bwEiYVPeZ@#mXaOm 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, bar->size); + map, "[%d] base=%.8p, size=%.8p, ", bar_index, bar->start, bar->size); if ((bar->type & BAR_TYPE_MMIO)) { twimap_printf(map, "mmio"); if ((bar->type & BAR_TYPE_CACHABLE)) { - twimap_printf(map, ", cachable"); + twimap_printf(map, ", prefetchable"); } } else { twimap_printf(map, "io"); diff --git a/lunaix-os/includes/lunaix/common.h b/lunaix-os/includes/lunaix/common.h index 4c8c794..8873a73 100644 --- a/lunaix-os/includes/lunaix/common.h +++ b/lunaix-os/includes/lunaix/common.h @@ -1,24 +1,23 @@ #ifndef __LUNAIX_CONSTANTS_H #define __LUNAIX_CONSTANTS_H -#define KSTACK_SIZE (64 << 10) +#define MEM_1MB 0x100000 +#define MEM_4MB 0x400000 + +#define KSTACK_SIZE MEM_1MB #define KSTACK_START ((0x3FFFFFU - KSTACK_SIZE) + 1) #define KSTACK_TOP 0x3FFFF0U #define KERNEL_MM_BASE 0xC0000000 -#define MEM_1MB 0x100000 -#define MEM_4MB 0x400000 #define KCODE_MAX_SIZE MEM_4MB -#define KHEAP_START (KERNEL_MM_BASE + KCODE_MAX_SIZE) -#define KHEAP_SIZE_MB 256 +// #define KHEAP_START (KERNEL_MM_BASE + KCODE_MAX_SIZE) +// #define KHEAP_SIZE_MB 256 #define PROC_TABLE_SIZE_MB 4 -#define PROC_START (KHEAP_START + (KHEAP_SIZE_MB * MEM_1MB)) +#define PROC_START (KERNEL_MM_BASE + KCODE_MAX_SIZE) -#define VGA_BUFFER_VADDR (PROC_START + (PROC_TABLE_SIZE_MB * MEM_1MB)) -#define VGA_BUFFER_PADDR 0xB8000 -#define VGA_BUFFER_SIZE 4096 +#define VGA_FRAMEBUFFER 0xB8000 #define KCODE_SEG 0x08 #define KDATA_SEG 0x10 diff --git a/lunaix-os/includes/lunaix/mm/cake.h b/lunaix-os/includes/lunaix/mm/cake.h index 6a3aa39..81321f8 100644 --- a/lunaix-os/includes/lunaix/mm/cake.h +++ b/lunaix-os/includes/lunaix/mm/cake.h @@ -7,6 +7,10 @@ #define PILE_CACHELINE 1 +struct cake_pile; + +typedef void (*pile_cb)(struct cake_pile*, void*); + struct cake_pile { struct llist_header piles; @@ -20,6 +24,8 @@ struct cake_pile unsigned int pieces_per_cake; unsigned int pg_per_cake; char pile_name[PILE_NAME_MAXLEN]; + + pile_cb ctor; }; typedef unsigned int piece_index_t; @@ -49,6 +55,9 @@ cake_new_pile(char* name, unsigned int pg_per_cake, int options); +void +cake_set_constructor(struct cake_pile* pile, pile_cb ctor); + /** * @brief 拿一块儿蛋糕 * @@ -73,4 +82,9 @@ cake_init(); void cake_export(); +/********** some handy constructor ***********/ + +void +cake_ctor_zeroing(struct cake_pile* pile, void* piece); + #endif /* __LUNAIX_VALLOC_H */ diff --git a/lunaix-os/includes/lunaix/mm/page.h b/lunaix-os/includes/lunaix/mm/page.h index 8883a6b..ad73542 100644 --- a/lunaix-os/includes/lunaix/mm/page.h +++ b/lunaix-os/includes/lunaix/mm/page.h @@ -99,7 +99,7 @@ extern void __pg_mount_point; /* 四个页挂载点,两个页目录挂载点: 用于临时创建&编辑页表 */ #define PG_MOUNT_RANGE(l1_index) (701 <= l1_index && l1_index <= 703) -#define PD_MOUNT_1 (VGA_BUFFER_VADDR + MEM_4MB) +#define PD_MOUNT_1 (PROC_START + MEM_4MB) #define PG_MOUNT_BASE (PD_MOUNT_1 + MEM_4MB) #define PG_MOUNT_1 (PG_MOUNT_BASE) #define PG_MOUNT_2 (PG_MOUNT_BASE + 0x1000) diff --git a/lunaix-os/includes/lunaix/sched.h b/lunaix-os/includes/lunaix/sched.h index 021b55e..c1ffddd 100644 --- a/lunaix-os/includes/lunaix/sched.h +++ b/lunaix-os/includes/lunaix/sched.h @@ -5,7 +5,7 @@ struct scheduler { - struct proc_info* _procs; + struct proc_info** _procs; int procs_index; unsigned int ptable_len; }; diff --git a/lunaix-os/kernel/asm/x86/pfault.c b/lunaix-os/kernel/asm/x86/pfault.c index 6df3182..fcd52cc 100644 --- a/lunaix-os/kernel/asm/x86/pfault.c +++ b/lunaix-os/kernel/asm/x86/pfault.c @@ -108,14 +108,8 @@ int do_kernel(v_mapping* mapping) { uintptr_t addr = mapping->va; - if (addr >= KHEAP_START && addr < PROC_START) { - // This is kernel heap page - uintptr_t pa = pmm_alloc_page(KERNEL_PID, 0); - *mapping->pte = (*mapping->pte & 0xfff) | pa | PG_PRESENT; - cpu_invplg(mapping->pte); - cpu_invplg(addr); - goto done; - } + + // TODO return 0; done: diff --git a/lunaix-os/kernel/k_init.c b/lunaix-os/kernel/k_init.c index b7c5668..a82df94 100644 --- a/lunaix-os/kernel/k_init.c +++ b/lunaix-os/kernel/k_init.c @@ -5,6 +5,7 @@ #include #include #include +#include #include #include #include @@ -56,9 +57,6 @@ _kernel_pre_init() setup_memory((multiboot_memory_map_t*)_k_init_mb_info->mmap_addr, map_size); - tty_init((void*)VGA_BUFFER_VADDR); - tty_set_theme(VGA_COLOR_WHITE, VGA_COLOR_BLACK); - __kernel_ptd = cpu_rcr3(); tmp = (struct proc_info){ .page_table = __kernel_ptd }; @@ -73,6 +71,9 @@ _kernel_init() cake_init(); valloc_init(); + tty_init(ioremap(VGA_FRAMEBUFFER, PG_SIZE)); + tty_set_theme(VGA_COLOR_WHITE, VGA_COLOR_BLACK); + vfs_init(); fsm_init(); input_init(); @@ -193,22 +194,7 @@ setup_memory(multiboot_memory_map_t* map, size_t map_size) // 将内核占据的页,包括前1MB,hhk_init 设为已占用 size_t pg_count = V2P(&__kernel_end) >> PG_SIZE_BITS; - pmm_mark_chunk_occupied(KERNEL_PID, 0, pg_count, 0); - - size_t vga_buf_pgs = VGA_BUFFER_SIZE >> PG_SIZE_BITS; - - // 首先,标记VGA部分为已占用,并且锁定 - pmm_mark_chunk_occupied( - KERNEL_PID, VGA_BUFFER_PADDR >> PG_SIZE_BITS, vga_buf_pgs, PP_FGLOCKED); - - // 重映射VGA文本缓冲区(以后会变成显存,i.e., framebuffer) - for (size_t i = 0; i < vga_buf_pgs; i++) { - vmm_set_mapping(PD_REFERENCED, - VGA_BUFFER_VADDR + (i << PG_SIZE_BITS), - VGA_BUFFER_PADDR + (i << PG_SIZE_BITS), - PG_PREM_URW, - VMAP_NULL); - } + pmm_mark_chunk_occupied(KERNEL_PID, 0, pg_count, PP_FGLOCKED); for (uintptr_t i = &__usrtext_start; i < &__usrtext_end; i += PG_SIZE) { vmm_set_mapping(PD_REFERENCED, i, V2P(i), PG_PREM_UR, VMAP_NULL); diff --git a/lunaix-os/kernel/mm/cake.c b/lunaix-os/kernel/mm/cake.c index 5aa9bef..5e03d34 100644 --- a/lunaix-os/kernel/mm/cake.c +++ b/lunaix-os/kernel/mm/cake.c @@ -120,6 +120,12 @@ cake_new_pile(char* name, return pile; } +void +cake_set_constructor(struct cake_pile* pile, pile_cb ctor) +{ + pile->ctor = ctor; +} + void* cake_grab(struct cake_pile* pile) { @@ -147,8 +153,14 @@ cake_grab(struct cake_pile* pile) llist_append(&pile->partial, &pos->cakes); } - return (void*)((uintptr_t)pos->first_piece + - found_index * pile->piece_size); + void* ptr = + (void*)((uintptr_t)pos->first_piece + found_index * pile->piece_size); + + if (pile->ctor) { + pile->ctor(pile, ptr); + } + + return ptr; } int @@ -188,4 +200,10 @@ found: } return 1; +} + +void +cake_ctor_zeroing(struct cake_pile* pile, void* piece) +{ + memset(piece, 0, pile->piece_size); } \ No newline at end of file diff --git a/lunaix-os/kernel/mm/dmm.c b/lunaix-os/kernel/mm/dmm.c index 651c6fc..edc28ef 100644 --- a/lunaix-os/kernel/mm/dmm.c +++ b/lunaix-os/kernel/mm/dmm.c @@ -50,13 +50,11 @@ dmm_init(heap_context_t* heap) heap->brk = heap->start; mutex_init(&heap->lock); - int perm = PG_ALLOW_USER; - if (heap->brk >= KHEAP_START) { - perm = 0; - } - - return vmm_set_mapping( - PD_REFERENCED, heap->brk, 0, PG_WRITE | perm, VMAP_NULL) != NULL; + return vmm_set_mapping(PD_REFERENCED, + heap->brk, + 0, + PG_WRITE | PG_ALLOW_USER, + VMAP_NULL) != NULL; } int diff --git a/lunaix-os/kernel/mm/kalloc.c b/lunaix-os/kernel/mm/kalloc.c index 6b5b878..aec1001 100644 --- a/lunaix-os/kernel/mm/kalloc.c +++ b/lunaix-os/kernel/mm/kalloc.c @@ -1,3 +1,6 @@ + +/**** DO NOT USE ****/ + /** * @file kalloc.c * @author Lunaixsky @@ -11,269 +14,271 @@ * @copyright Copyright (c) 2022 * */ -#include -#include -#include - -#include -#include - -#include +// #include +// #include +// #include -#include +// #include +// #include -extern uint8_t __kernel_heap_start; +// #include -void* -lx_malloc_internal(heap_context_t* heap, size_t size); - -void -place_chunk(uint8_t* ptr, size_t size); +// #include -void -lx_free_internal(void* ptr); +// extern uint8_t __kernel_heap_start; + +// void* +// lx_malloc_internal(heap_context_t* heap, size_t size); + +// void +// place_chunk(uint8_t* ptr, size_t size); -void* -coalesce(uint8_t* chunk_ptr); +// void +// lx_free_internal(void* ptr); -void* -lx_grow_heap(heap_context_t* heap, size_t sz); +// void* +// coalesce(uint8_t* chunk_ptr); + +// void* +// lx_grow_heap(heap_context_t* heap, size_t sz); -/* - At the beginning, we allocate an empty page and put our initial marker +// /* +// At the beginning, we allocate an empty page and put our initial marker - | 4/1 | 0/1 | - ^ ^ brk - start +// | 4/1 | 0/1 | +// ^ ^ brk +// start - Then, expand the heap further, with HEAP_INIT_SIZE (evaluated to 4096, i.e., - 1 pg size) This will allocate as much pages and override old epilogue marker - with a free region hdr and put new epilogue marker. These are handled by - lx_grow_heap which is internally used by alloc to expand the heap at many - moment when needed. +// Then, expand the heap further, with HEAP_INIT_SIZE (evaluated to 4096, +// i.e., +// 1 pg size) This will allocate as much pages and override old epilogue +// marker with a free region hdr and put new epilogue marker. These are +// handled by lx_grow_heap which is internally used by alloc to expand the +// heap at many moment when needed. - | 4/1 | 4096/0 | ....... | 4096/0 | 0/1 | - ^ ^ brk_old ^ - start brk +// | 4/1 | 4096/0 | ....... | 4096/0 | 0/1 | +// ^ ^ brk_old ^ +// start brk - Note: the brk always point to the beginning of epilogue. -*/ +// Note: the brk always point to the beginning of epilogue. +// */ -static heap_context_t kheap; +// static heap_context_t kheap; -int -kalloc_init() -{ - kheap.start = KHEAP_START; - kheap.brk = NULL; - kheap.max_addr = - (void*)PROC_START; // 在新的布局中,堆结束的地方即为进程表开始的地方 - - for (size_t i = 0; i < KHEAP_SIZE_MB >> 2; i++) { - vmm_set_mapping(PD_REFERENCED, - (uintptr_t)kheap.start + (i << 22), - 0, - PG_PREM_RW, - VMAP_NOMAP); - } - - if (!dmm_init(&kheap)) { - return 0; - } - - SW(kheap.start, PACK(4, M_ALLOCATED)); - SW(kheap.start + WSIZE, PACK(0, M_ALLOCATED)); - kheap.brk += WSIZE; - - return lx_grow_heap(&kheap, HEAP_INIT_SIZE) != NULL; -} - -void* -lxmalloc(size_t size) -{ - mutex_lock(&kheap.lock); - void* r = lx_malloc_internal(&kheap, size); - mutex_unlock(&kheap.lock); - - return r; -} - -void* -lxcalloc(size_t n, size_t elem) -{ - size_t pd = n * elem; - - // overflow detection - if (pd < elem || pd < n) { - return NULL; - } - - void* ptr = lxmalloc(pd); - if (!ptr) { - return NULL; - } - - return memset(ptr, 0, pd); -} - -void -lxfree(void* ptr) -{ - if (!ptr) { - return; - } - mutex_lock(&kheap.lock); - - uint8_t* chunk_ptr = (uint8_t*)ptr - WSIZE; - uint32_t hdr = LW(chunk_ptr); - size_t sz = CHUNK_S(hdr); - uint8_t* next_hdr = chunk_ptr + sz; - - // make sure the ptr we are 'bout to free makes sense - // the size trick is stolen from glibc's malloc/malloc.c:4437 ;P - - assert_msg(((uintptr_t)ptr < (uintptr_t)(-sz)) && !((uintptr_t)ptr & 0x3), - "free(): invalid pointer"); - - assert_msg(sz > WSIZE, "free(): invalid size"); - - SW(chunk_ptr, hdr & ~M_ALLOCATED); - SW(FPTR(chunk_ptr, sz), hdr & ~M_ALLOCATED); - SW(next_hdr, LW(next_hdr) | M_PREV_FREE); - - coalesce(chunk_ptr); - - mutex_unlock(&kheap.lock); -} - -void* -lx_malloc_internal(heap_context_t* heap, size_t size) -{ - // Simplest first fit approach. - - if (!size) { - return NULL; - } - - uint8_t* ptr = heap->start; - // round to largest 4B aligned value - // and space for header - size = ROUNDUP(size + WSIZE, BOUNDARY); - while (ptr < (uint8_t*)heap->brk) { - uint32_t header = *((uint32_t*)ptr); - size_t chunk_size = CHUNK_S(header); - if (!chunk_size && CHUNK_A(header)) { - break; - } - if (chunk_size >= size && !CHUNK_A(header)) { - // found! - place_chunk(ptr, size); - return BPTR(ptr); - } - ptr += chunk_size; - } - - // if heap is full (seems to be!), then allocate more space (if it's - // okay...) - if ((ptr = lx_grow_heap(heap, size))) { - place_chunk(ptr, size); - return BPTR(ptr); - } - - // Well, we are officially OOM! - return NULL; -} - -void -place_chunk(uint8_t* ptr, size_t size) -{ - uint32_t header = *((uint32_t*)ptr); - size_t chunk_size = CHUNK_S(header); - *((uint32_t*)ptr) = PACK(size, CHUNK_PF(header) | M_ALLOCATED); - uint8_t* n_hdrptr = (uint8_t*)(ptr + size); - uint32_t diff = chunk_size - size; - - if (!diff) { - // if the current free block is fully occupied - uint32_t n_hdr = LW(n_hdrptr); - // notify the next block about our avaliability - SW(n_hdrptr, n_hdr & ~0x2); - } else { - // if there is remaining free space left - uint32_t remainder_hdr = PACK(diff, M_NOT_ALLOCATED | M_PREV_ALLOCATED); - SW(n_hdrptr, remainder_hdr); - SW(FPTR(n_hdrptr, diff), remainder_hdr); - - /* - | xxxx | | | - - | - v - - | xxxx | | - */ - coalesce(n_hdrptr); - } -} - -void* -coalesce(uint8_t* chunk_ptr) -{ - uint32_t hdr = LW(chunk_ptr); - uint32_t pf = CHUNK_PF(hdr); - uint32_t sz = CHUNK_S(hdr); - - uint32_t n_hdr = LW(chunk_ptr + sz); - - if (CHUNK_A(n_hdr) && pf) { - // case 1: prev is free - uint32_t prev_ftr = LW(chunk_ptr - WSIZE); - size_t prev_chunk_sz = CHUNK_S(prev_ftr); - uint32_t new_hdr = PACK(prev_chunk_sz + sz, CHUNK_PF(prev_ftr)); - SW(chunk_ptr - prev_chunk_sz, new_hdr); - SW(FPTR(chunk_ptr, sz), new_hdr); - chunk_ptr -= prev_chunk_sz; - } else if (!CHUNK_A(n_hdr) && !pf) { - // case 2: next is free - size_t next_chunk_sz = CHUNK_S(n_hdr); - uint32_t new_hdr = PACK(next_chunk_sz + sz, pf); - SW(chunk_ptr, new_hdr); - SW(FPTR(chunk_ptr, sz + next_chunk_sz), new_hdr); - } else if (!CHUNK_A(n_hdr) && pf) { - // case 3: both free - uint32_t prev_ftr = LW(chunk_ptr - WSIZE); - size_t next_chunk_sz = CHUNK_S(n_hdr); - size_t prev_chunk_sz = CHUNK_S(prev_ftr); - uint32_t new_hdr = - PACK(next_chunk_sz + prev_chunk_sz + sz, CHUNK_PF(prev_ftr)); - SW(chunk_ptr - prev_chunk_sz, new_hdr); - SW(FPTR(chunk_ptr, sz + next_chunk_sz), new_hdr); - chunk_ptr -= prev_chunk_sz; - } - - // (fall through) case 4: prev and next are not free - return chunk_ptr; -} - -void* -lx_grow_heap(heap_context_t* heap, size_t sz) -{ - void* start; - - // The "+ WSIZE" capture the overhead for epilogue marker - if (!(start = lxsbrk(heap, sz + WSIZE, 0))) { - return NULL; - } - sz = ROUNDUP(sz, BOUNDARY); - - // minus the overhead for epilogue, keep the invariant. - heap->brk -= WSIZE; - - uint32_t old_marker = *((uint32_t*)start); - uint32_t free_hdr = PACK(sz, CHUNK_PF(old_marker)); - SW(start, free_hdr); - SW(FPTR(start, sz), free_hdr); - SW(NEXT_CHK(start), PACK(0, M_ALLOCATED | M_PREV_FREE)); - - return coalesce(start); -} \ No newline at end of file +// int +// kalloc_init() +// { +// kheap.start = KHEAP_START; +// kheap.brk = NULL; +// kheap.max_addr = +// (void*)PROC_START; // 在新的布局中,堆结束的地方即为进程表开始的地方 + +// for (size_t i = 0; i < KHEAP_SIZE_MB >> 2; i++) { +// vmm_set_mapping(PD_REFERENCED, +// (uintptr_t)kheap.start + (i << 22), +// 0, +// PG_PREM_RW, +// VMAP_NOMAP); +// } + +// if (!dmm_init(&kheap)) { +// return 0; +// } + +// SW(kheap.start, PACK(4, M_ALLOCATED)); +// SW(kheap.start + WSIZE, PACK(0, M_ALLOCATED)); +// kheap.brk += WSIZE; + +// return lx_grow_heap(&kheap, HEAP_INIT_SIZE) != NULL; +// } + +// void* +// lxmalloc(size_t size) +// { +// mutex_lock(&kheap.lock); +// void* r = lx_malloc_internal(&kheap, size); +// mutex_unlock(&kheap.lock); + +// return r; +// } + +// void* +// lxcalloc(size_t n, size_t elem) +// { +// size_t pd = n * elem; + +// // overflow detection +// if (pd < elem || pd < n) { +// return NULL; +// } + +// void* ptr = lxmalloc(pd); +// if (!ptr) { +// return NULL; +// } + +// return memset(ptr, 0, pd); +// } + +// void +// lxfree(void* ptr) +// { +// if (!ptr) { +// return; +// } +// mutex_lock(&kheap.lock); + +// uint8_t* chunk_ptr = (uint8_t*)ptr - WSIZE; +// uint32_t hdr = LW(chunk_ptr); +// size_t sz = CHUNK_S(hdr); +// uint8_t* next_hdr = chunk_ptr + sz; + +// // make sure the ptr we are 'bout to free makes sense +// // the size trick is stolen from glibc's malloc/malloc.c:4437 ;P + +// assert_msg(((uintptr_t)ptr < (uintptr_t)(-sz)) && !((uintptr_t)ptr & +// 0x3), +// "free(): invalid pointer"); + +// assert_msg(sz > WSIZE, "free(): invalid size"); + +// SW(chunk_ptr, hdr & ~M_ALLOCATED); +// SW(FPTR(chunk_ptr, sz), hdr & ~M_ALLOCATED); +// SW(next_hdr, LW(next_hdr) | M_PREV_FREE); + +// coalesce(chunk_ptr); + +// mutex_unlock(&kheap.lock); +// } + +// void* +// lx_malloc_internal(heap_context_t* heap, size_t size) +// { +// // Simplest first fit approach. + +// if (!size) { +// return NULL; +// } + +// uint8_t* ptr = heap->start; +// // round to largest 4B aligned value +// // and space for header +// size = ROUNDUP(size + WSIZE, BOUNDARY); +// while (ptr < (uint8_t*)heap->brk) { +// uint32_t header = *((uint32_t*)ptr); +// size_t chunk_size = CHUNK_S(header); +// if (!chunk_size && CHUNK_A(header)) { +// break; +// } +// if (chunk_size >= size && !CHUNK_A(header)) { +// // found! +// place_chunk(ptr, size); +// return BPTR(ptr); +// } +// ptr += chunk_size; +// } + +// // if heap is full (seems to be!), then allocate more space (if it's +// // okay...) +// if ((ptr = lx_grow_heap(heap, size))) { +// place_chunk(ptr, size); +// return BPTR(ptr); +// } + +// // Well, we are officially OOM! +// return NULL; +// } + +// void +// place_chunk(uint8_t* ptr, size_t size) +// { +// uint32_t header = *((uint32_t*)ptr); +// size_t chunk_size = CHUNK_S(header); +// *((uint32_t*)ptr) = PACK(size, CHUNK_PF(header) | M_ALLOCATED); +// uint8_t* n_hdrptr = (uint8_t*)(ptr + size); +// uint32_t diff = chunk_size - size; + +// if (!diff) { +// // if the current free block is fully occupied +// uint32_t n_hdr = LW(n_hdrptr); +// // notify the next block about our avaliability +// SW(n_hdrptr, n_hdr & ~0x2); +// } else { +// // if there is remaining free space left +// uint32_t remainder_hdr = PACK(diff, M_NOT_ALLOCATED | +// M_PREV_ALLOCATED); SW(n_hdrptr, remainder_hdr); SW(FPTR(n_hdrptr, +// diff), remainder_hdr); + +// /* +// | xxxx | | | + +// | +// v + +// | xxxx | | +// */ +// coalesce(n_hdrptr); +// } +// } + +// void* +// coalesce(uint8_t* chunk_ptr) +// { +// uint32_t hdr = LW(chunk_ptr); +// uint32_t pf = CHUNK_PF(hdr); +// uint32_t sz = CHUNK_S(hdr); + +// uint32_t n_hdr = LW(chunk_ptr + sz); + +// if (CHUNK_A(n_hdr) && pf) { +// // case 1: prev is free +// uint32_t prev_ftr = LW(chunk_ptr - WSIZE); +// size_t prev_chunk_sz = CHUNK_S(prev_ftr); +// uint32_t new_hdr = PACK(prev_chunk_sz + sz, CHUNK_PF(prev_ftr)); +// SW(chunk_ptr - prev_chunk_sz, new_hdr); +// SW(FPTR(chunk_ptr, sz), new_hdr); +// chunk_ptr -= prev_chunk_sz; +// } else if (!CHUNK_A(n_hdr) && !pf) { +// // case 2: next is free +// size_t next_chunk_sz = CHUNK_S(n_hdr); +// uint32_t new_hdr = PACK(next_chunk_sz + sz, pf); +// SW(chunk_ptr, new_hdr); +// SW(FPTR(chunk_ptr, sz + next_chunk_sz), new_hdr); +// } else if (!CHUNK_A(n_hdr) && pf) { +// // case 3: both free +// uint32_t prev_ftr = LW(chunk_ptr - WSIZE); +// size_t next_chunk_sz = CHUNK_S(n_hdr); +// size_t prev_chunk_sz = CHUNK_S(prev_ftr); +// uint32_t new_hdr = +// PACK(next_chunk_sz + prev_chunk_sz + sz, CHUNK_PF(prev_ftr)); +// SW(chunk_ptr - prev_chunk_sz, new_hdr); +// SW(FPTR(chunk_ptr, sz + next_chunk_sz), new_hdr); +// chunk_ptr -= prev_chunk_sz; +// } + +// // (fall through) case 4: prev and next are not free +// return chunk_ptr; +// } + +// void* +// lx_grow_heap(heap_context_t* heap, size_t sz) +// { +// void* start; + +// // The "+ WSIZE" capture the overhead for epilogue marker +// if (!(start = lxsbrk(heap, sz + WSIZE, 0))) { +// return NULL; +// } +// sz = ROUNDUP(sz, BOUNDARY); + +// // minus the overhead for epilogue, keep the invariant. +// heap->brk -= WSIZE; + +// uint32_t old_marker = *((uint32_t*)start); +// uint32_t free_hdr = PACK(sz, CHUNK_PF(old_marker)); +// SW(start, free_hdr); +// SW(FPTR(start, sz), free_hdr); +// SW(NEXT_CHK(start), PACK(0, M_ALLOCATED | M_PREV_FREE)); + +// return coalesce(start); +// } \ No newline at end of file diff --git a/lunaix-os/kernel/mm/mmio.c b/lunaix-os/kernel/mm/mmio.c index 5e0d01e..a52dc1b 100644 --- a/lunaix-os/kernel/mm/mmio.c +++ b/lunaix-os/kernel/mm/mmio.c @@ -1,11 +1,19 @@ #include #include #include +#include void* ioremap(uintptr_t paddr, uint32_t size) { - return vmm_vmap(paddr, size, PG_PREM_RW | PG_DISABLE_CACHE); + void* ptr = vmm_vmap(paddr, size, PG_PREM_RW | PG_DISABLE_CACHE); + if (ptr) { + pmm_mark_chunk_occupied(KERNEL_PID, + paddr >> PG_SIZE_BITS, + CEIL(size, PG_SIZE_BITS), + PP_FGLOCKED); + } + return ptr; } void* diff --git a/lunaix-os/kernel/mm/region.c b/lunaix-os/kernel/mm/region.c index 920c35b..bd3b26e 100644 --- a/lunaix-os/kernel/mm/region.c +++ b/lunaix-os/kernel/mm/region.c @@ -21,7 +21,7 @@ region_release_all(struct mm_region* regions) llist_for_each(pos, n, ®ions->head, head) { - lxfree(pos); + vfree(pos); } } diff --git a/lunaix-os/kernel/process.c b/lunaix-os/kernel/process.c index 086a5e3..e30e461 100644 --- a/lunaix-os/kernel/process.c +++ b/lunaix-os/kernel/process.c @@ -151,7 +151,7 @@ init_proc_user_space(struct proc_info* pcb) vmm_set_mapping(PD_MOUNT_1, i, 0, PG_ALLOW_USER | PG_WRITE, VMAP_NULL); } - // todo: other uspace initialization stuff + // TODO other uspace initialization stuff vmm_unmount_pd(PD_MOUNT_1); } diff --git a/lunaix-os/kernel/sched.c b/lunaix-os/kernel/sched.c index 2274238..9061e80 100644 --- a/lunaix-os/kernel/sched.c +++ b/lunaix-os/kernel/sched.c @@ -4,6 +4,7 @@ #include #include +#include #include #include #include @@ -16,7 +17,8 @@ #include #include -#define MAX_PROCESS 512 +#define PROC_TABLE_SIZE 8192 +#define MAX_PROCESS (PROC_TABLE_SIZE / sizeof(uintptr_t)) volatile struct proc_info* __current; @@ -24,20 +26,25 @@ struct proc_info dummy; struct scheduler sched_ctx; +struct cake_pile* proc_pile; + LOG_MODULE("SCHED") void sched_init() { - size_t pg_size = ROUNDUP(sizeof(struct proc_info) * MAX_PROCESS, 0x1000); + // size_t pg_size = ROUNDUP(sizeof(struct proc_info) * MAX_PROCESS, 0x1000); - for (size_t i = 0; i <= pg_size; i += 4096) { - uintptr_t pa = pmm_alloc_page(KERNEL_PID, PP_FGPERSIST); - vmm_set_mapping( - PD_REFERENCED, PROC_START + i, pa, PG_PREM_RW, VMAP_NULL); - } + // for (size_t i = 0; i <= pg_size; i += 4096) { + // uintptr_t pa = pmm_alloc_page(KERNEL_PID, PP_FGPERSIST); + // vmm_set_mapping( + // PD_REFERENCED, PROC_START + i, pa, PG_PREM_RW, VMAP_NULL); + // } + + proc_pile = cake_new_pile("proc", sizeof(struct proc_info), 1, 0); + cake_set_constructor(proc_pile, cake_ctor_zeroing); - sched_ctx = (struct scheduler){ ._procs = (struct proc_info*)PROC_START, + sched_ctx = (struct scheduler){ ._procs = vzalloc(PROC_TABLE_SIZE), .ptable_len = 0, .procs_index = 0 }; } @@ -80,7 +87,7 @@ can_schedule(struct proc_info* proc) void check_sleepers() { - struct proc_info* leader = &sched_ctx._procs[0]; + struct proc_info* leader = sched_ctx._procs[0]; struct proc_info *pos, *n; time_t now = clock_systime(); llist_for_each(pos, n, &leader->sleep.sleepers, sleep.sleepers) @@ -132,8 +139,8 @@ schedule() redo: do { ptr = (ptr + 1) % sched_ctx.ptable_len; - next = &sched_ctx._procs[ptr]; - } while (next->state != PS_READY && ptr != prev_ptr); + next = sched_ctx._procs[ptr]; + } while (!next || (next->state != PS_READY && ptr != prev_ptr)); sched_ctx.procs_index = ptr; @@ -162,9 +169,9 @@ __DEFINE_LXSYSCALL1(unsigned int, sleep, unsigned int, seconds) return (__current->sleep.wakeup_time - clock_systime()) / 1000U; } + struct proc_info* root_proc = sched_ctx._procs[0]; __current->sleep.wakeup_time = clock_systime() + seconds * 1000; - llist_append(&sched_ctx._procs[0].sleep.sleepers, - &__current->sleep.sleepers); + llist_append(&root_proc->sleep.sleepers, &__current->sleep.sleepers); __current->intr_ctx.registers.eax = seconds; __current->state = PS_BLOCKED; @@ -178,9 +185,9 @@ __DEFINE_LXSYSCALL1(unsigned int, alarm, unsigned int, seconds) __current->sleep.alarm_time = seconds ? now + seconds * 1000 : 0; + struct proc_info* root_proc = sched_ctx._procs[0]; if (llist_empty(&__current->sleep.sleepers)) { - llist_append(&sched_ctx._procs[0].sleep.sleepers, - &__current->sleep.sleepers); + llist_append(&root_proc->sleep.sleepers, &__current->sleep.sleepers); } return prev_ddl ? (prev_ddl - now) / 1000 : 0; @@ -259,8 +266,7 @@ struct proc_info* alloc_process() { pid_t i = 0; - for (; i < sched_ctx.ptable_len && sched_ctx._procs[i].state != PS_DESTROY; - i++) + for (; i < sched_ctx.ptable_len && sched_ctx._procs[i]; i++) ; if (i == MAX_PROCESS) { @@ -271,8 +277,7 @@ alloc_process() sched_ctx.ptable_len++; } - struct proc_info* proc = &sched_ctx._procs[i]; - memset(proc, 0, sizeof(*proc)); + struct proc_info* proc = cake_grab(proc_pile); proc->state = PS_CREATED; proc->pid = i; @@ -286,13 +291,15 @@ alloc_process() llist_init_head(&proc->sleep.sleepers); waitq_init(&proc->waitqueue); + sched_ctx._procs[i] = proc; + return proc; } void commit_process(struct proc_info* process) { - assert(process == &sched_ctx._procs[process->pid]); + assert(process == sched_ctx._procs[process->pid]); if (process->state != PS_CREATED) { __current->k_status = EINVAL; @@ -301,7 +308,7 @@ commit_process(struct proc_info* process) // every process is the child of first process (pid=1) if (!process->parent) { - process->parent = &sched_ctx._procs[1]; + process->parent = sched_ctx._procs[1]; } llist_append(&process->parent->children, &process->siblings); @@ -321,8 +328,9 @@ destroy_process(pid_t pid) __current->k_status = EINVAL; return; } - struct proc_info* proc = &sched_ctx._procs[index]; - proc->state = PS_DESTROY; + struct proc_info* proc = sched_ctx._procs[index]; + sched_ctx._procs[index] = 0; + llist_delete(&proc->siblings); for (size_t i = 0; i < VFS_MAX_FD; i++) { @@ -345,6 +353,8 @@ destroy_process(pid_t pid) vmm_unmount_pd(PD_MOUNT_1); + cake_release(proc_pile, proc); + return pid; } @@ -364,7 +374,7 @@ get_process(pid_t pid) if (index < 0 || index > sched_ctx.ptable_len) { return NULL; } - return &sched_ctx._procs[index]; + return sched_ctx._procs[index]; } int @@ -374,7 +384,7 @@ orphaned_proc(pid_t pid) return 0; if (pid >= sched_ctx.ptable_len) return 0; - struct proc_info* proc = &sched_ctx._procs[pid]; + struct proc_info* proc = sched_ctx._procs[pid]; struct proc_info* parent = proc->parent; // 如果其父进程的状态是terminated 或 destroy中的一种 diff --git a/lunaix-os/kernel/tty/tty.c b/lunaix-os/kernel/tty/tty.c index f197559..b8631b6 100644 --- a/lunaix-os/kernel/tty/tty.c +++ b/lunaix-os/kernel/tty/tty.c @@ -6,7 +6,7 @@ #include #include -vga_attribute* tty_vga_buffer = (vga_attribute*)VGA_BUFFER_PADDR; +vga_attribute* tty_vga_buffer; vga_attribute tty_theme_color = VGA_COLOR_BLACK; -- 2.27.0