diff options
| author | Richard Qin <richard.qin.x@gmail.com> | 2026-07-10 11:31:46 +0800 |
|---|---|---|
| committer | Richard Qin <richard.qin.x@gmail.com> | 2026-07-10 11:31:46 +0800 |
| commit | e90b72ec3082588b296956730bd2930cf8d5d671 (patch) | |
| tree | 36ff6916af9b4176ea5a9662219d11e721f0b691 /src/kernel/cxx.cc | |
| parent | 1767d390fbf3d0c65389de46caf0b6d43ef3b6ad (diff) | |
| download | lume-e90b72ec3082588b296956730bd2930cf8d5d671.tar.gz lume-e90b72ec3082588b296956730bd2930cf8d5d671.tar.xz | |
refactor: promote new architecture to repository root
Archive the deprecated implementation under lume-legacy, make the new kernel the default root-level build, and update repository entry points without changing kernel behavior.
Diffstat (limited to 'src/kernel/cxx.cc')
| -rw-r--r-- | src/kernel/cxx.cc | 78 |
1 files changed, 0 insertions, 78 deletions
diff --git a/src/kernel/cxx.cc b/src/kernel/cxx.cc deleted file mode 100644 index 00f2799..0000000 --- a/src/kernel/cxx.cc +++ /dev/null @@ -1,78 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-or-later -/* - * Copyright (C) 2026 Richard QIn - */ -#include "common/types.h" -#include "kernel/pmm.h" -#include "drivers/uart.h" - -/* - * C++ Kernel Runtime Support - * - * * Strategy: Map directly to PMM::alloc_page(). - * Pros: Simple, works immediately for VFS. - * Cons: Allocates 4KB for every object (wasteful for small objects), - * but acceptable for current stage. - */ - -void *operator new(unsigned long size) -{ - // Safety check: PMM allocates 4096 bytes max per call - if (size > 4096) - { - Drivers::uart_puts("panic: new allocation too big (max 4096)\n"); - while (1) - ; - } - - void *p = PMM::alloc_page(); - if (!p) - { - Drivers::uart_puts("panic: new out of memory\n"); - while (1) - ; - } - // PMM::alloc_page returns zeroed memory usually, - // but standard 'new' doesn't guarantee it. - // The constructor will handle initialization. - return p; -} - -void *operator new[](unsigned long size) -{ - return operator new(size); -} - -void operator delete(void *p) -{ - if (p) - PMM::free_page(p); -} - -void operator delete[](void *p) -{ - if (p) - PMM::free_page(p); -} - -// C++14 Sized Deallocation (Required by modern compilers) -// The compiler optimizes 'delete' calls to pass the size of the object -void operator delete(void *p, unsigned long size) -{ - (void)size; // We ignore size because PMM always frees a full page - if (p) - PMM::free_page(p); -} - -void operator delete[](void *p, unsigned long size) -{ - (void)size; - if (p) - PMM::free_page(p); -} - -void *operator new(unsigned long size, void *ptr) -{ - (void)size; - return ptr; -}
\ No newline at end of file |
