forked from PoliEcho-holding-org/kern
Implemented VMM!
This commit is contained in:
@@ -11,9 +11,11 @@ typedef struct bitmap_t {
|
||||
size_t blocks; // Eqiv. to # of bits
|
||||
size_t bytes; // ceil(blocks / 8)
|
||||
size_t used; // # of bits set to 0
|
||||
size_t membase; // Used with allocators
|
||||
int ready;
|
||||
} bitmap_t;
|
||||
|
||||
void* bmap_ptr(bitmap_t* map, size_t bit);
|
||||
void bmap_set(bitmap_t* map, size_t bit, int val);
|
||||
int bmap_get(bitmap_t* map, size_t bit);
|
||||
void bmap_setarea(bitmap_t* map, size_t base, size_t len, int val);
|
||||
|
||||
@@ -7,15 +7,15 @@
|
||||
/*
|
||||
* Virtual memory addresses
|
||||
*/
|
||||
#define USER_HEAP 0x10000000
|
||||
#define USER_STACK 0xBF000000
|
||||
#define USER_SHARED 0xA0000000
|
||||
#define KERNEL_BASE 0xC0000000
|
||||
#define KERNEL_SIZE 0x10000000
|
||||
#define KERNEL_MEM_BASE 0xD0000000
|
||||
#define KERNEL_MEM_SIZE 0x10000000
|
||||
#define KERNEL_SHARED 0xF0000000
|
||||
#define KERNEL_FRAMEBUF 0xC8000000
|
||||
#define USER_HEAP 0x10000000
|
||||
#define USER_STACK 0xBF000000
|
||||
#define USER_SHARED 0xA0000000
|
||||
#define KERNEL_BASE 0xC0000000
|
||||
#define KERNEL_SIZE 0x10000000
|
||||
#define KERNEL_HEAP_BASE 0xD0000000
|
||||
#define KERNEL_HEAP_SIZE 0x10000000
|
||||
#define KERNEL_SHARED 0xF0000000
|
||||
#define KERNEL_FRAMEBUF 0xC8000000
|
||||
|
||||
/*
|
||||
* Variable arguments
|
||||
|
||||
@@ -7,9 +7,7 @@
|
||||
extern bitmap_t pmm_bitmap;
|
||||
|
||||
int pmm_init(void);
|
||||
void pmm_initRegion(size_t base, size_t len);
|
||||
void pmm_deinitRegion(size_t base, size_t len);
|
||||
void* pmm_alloc(size_t len);
|
||||
void pmm_free(void* ptr, size_t len);
|
||||
void* pmm_allocPage(void);
|
||||
void pmm_freePage(void* page);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
#ifndef _VMM_H
|
||||
#define _VMM_H
|
||||
|
||||
#include <kernel.h>
|
||||
#include <bitmap.h>
|
||||
|
||||
extern bitmap_t vmm_bitmap;
|
||||
|
||||
int vmm_init(void);
|
||||
void* vmm_alloc(size_t pages);
|
||||
void vmm_free(void* ptr, size_t pages);
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user