boredos_mirror/src/kernel/memory_manager.h
2026-02-25 19:09:32 +01:00

58 lines
1.4 KiB
C

#ifndef MEMORY_MANAGER_H
#define MEMORY_MANAGER_H
#include <stddef.h>
#include <stdint.h>
#include <stdbool.h>
// Memory Manager Configuration
#define DEFAULT_POOL_SIZE (512 * 1024 * 1024) // 512MB default (can be overridden)
#define MAX_ALLOCATIONS 4096 // Increased for larger pools
#define MAX_FRAGMENTATION_SLOTS 2048
// Allocation block metadata
typedef struct {
void *address;
size_t size;
bool allocated;
uint32_t allocation_id;
uint32_t timestamp;
} MemBlock;
// Memory statistics
typedef struct {
size_t total_memory;
size_t used_memory;
size_t available_memory;
size_t allocated_blocks;
size_t free_blocks;
size_t largest_free_block;
size_t smallest_free_block;
size_t fragmentation_percent;
size_t peak_memory_used;
} MemStats;
// Public API
void memory_manager_init(void);
void memory_manager_init_with_size(size_t pool_size);
// Allocation/Deallocation
void* kmalloc(size_t size);
void* kmalloc_aligned(size_t size, size_t alignment);
void kfree(void *ptr);
void* krealloc(void *ptr, size_t new_size);
// Statistics and Information
MemStats memory_get_stats(void);
void memory_print_stats(void);
void memory_print_detailed(void);
void memory_validate(void);
void memory_dump_blocks(void);
// Internal utilities
size_t memory_get_peak_usage(void);
void memory_reset_peak(void);
bool memory_is_valid_ptr(void *ptr);
#endif // MEMORY_MANAGER_H