From e90b72ec3082588b296956730bd2930cf8d5d671 Mon Sep 17 00:00:00 2001 From: Richard Qin Date: Fri, 10 Jul 2026 11:31:46 +0800 Subject: 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. --- src/kernel/cxx.cc | 78 ------------------------------------------------------- 1 file changed, 78 deletions(-) delete mode 100644 src/kernel/cxx.cc (limited to 'src/kernel/cxx.cc') 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 -- cgit v1.2.3