summaryrefslogtreecommitdiff
path: root/src/kernel/cxx.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/kernel/cxx.cc')
-rw-r--r--src/kernel/cxx.cc78
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