matos/core/mem.h

25 lines
479 B
C
Raw Normal View History

2018-08-06 18:41:45 +02:00
#pragma once
#include "types.h"
#include "stdarg.h"
2018-08-06 18:41:45 +02:00
2019-04-11 22:34:20 +02:00
#define PAGE_SHIFT 12U
#define PAGE_SIZE (1U << PAGE_SHIFT)
2018-08-06 18:41:45 +02:00
// Defined in linker.ld script
extern uint32_t __ld_kernel_begin;
extern uint32_t __ld_kernel_end;
struct mem_desc{
paddr_t phy_addr;
2018-11-12 23:01:55 +01:00
long ref;
2018-08-09 22:19:34 +02:00
struct mem_desc *next, *prev;
2018-08-06 18:41:45 +02:00
};
2018-11-11 23:04:23 +01:00
int memSetup(paddr_t upperMem, paddr_t *lastUsed);
paddr_t allocPhyPage(void);
int unrefPhyPage(paddr_t addr);
int refPhyPage(paddr_t addr);
unsigned long getNbAllocatedPage(void);