matos/core/mem.h

30 lines
702 B
C
Raw Normal View History

2018-08-06 18:41:45 +02:00
#pragma once
#include "stdarg.h"
#include "types.h"
2018-08-06 18:41:45 +02:00
2021-04-10 21:53:03 +02:00
/** Physical Page related function
*/
2019-04-11 22:34:20 +02:00
#define PAGE_SHIFT 12U
#define PAGE_SIZE (1U << PAGE_SHIFT)
2021-10-26 22:08:36 +02:00
#define PAGE_MASK (PAGE_SIZE - 1)
2018-08-06 18:41:45 +02:00
// Defined in linker.ld script
extern char __ld_kernel_begin;
extern char __ld_kernel_end;
2018-08-06 18:41:45 +02:00
2021-04-10 21:53:03 +02:00
struct phyMemDesc {
paddr_t phy_addr;
2021-02-10 21:15:35 +01:00
unsigned long ref;
2021-04-10 21:53:03 +02:00
struct phyMemDesc *next, *prev;
2018-08-06 18:41:45 +02:00
};
2021-04-10 00:24:02 +02:00
int memSetup(paddr_t upperMem, paddr_t * firstUsed, paddr_t *lastUsed);
2021-01-23 00:42:09 +01:00
int memAddBank(paddr_t bottomMem, paddr_t topMem, int isFree);
2020-08-28 22:38:05 +02:00
paddr_t allocPhyPage(uint nbPage);
int unrefPhyPage(paddr_t addr);
int refPhyPage(paddr_t addr);
unsigned long getNbAllocatedPage(void);
2021-01-23 21:51:00 +01:00
void memGetStat(uint *free, uint *used);