2023-02-06 20:50:28 +00:00
|
|
|
#ifndef SOCKS_PMAP_H_
|
|
|
|
|
#define SOCKS_PMAP_H_
|
|
|
|
|
|
|
|
|
|
/* all the functions declared in this file are defined in arch/xyz/pmap.c */
|
|
|
|
|
|
|
|
|
|
#include <socks/vm.h>
|
|
|
|
|
#include <socks/status.h>
|
|
|
|
|
#include <socks/machine/pmap.h>
|
|
|
|
|
#include <stddef.h>
|
|
|
|
|
|
|
|
|
|
#define PFN(x) ((x) >> VM_PAGE_SHIFT)
|
|
|
|
|
|
2023-03-20 20:41:39 +00:00
|
|
|
#ifdef __cplusplus
|
|
|
|
|
extern "C" {
|
|
|
|
|
#endif
|
|
|
|
|
|
2023-02-06 20:50:28 +00:00
|
|
|
typedef ml_pmap_t pmap_t;
|
|
|
|
|
typedef ml_pfn_t pfn_t;
|
|
|
|
|
|
2023-04-12 20:17:11 +01:00
|
|
|
enum pmap_flags {
|
2023-02-06 20:50:28 +00:00
|
|
|
PMAP_HUGEPAGE = 0x01u,
|
2023-04-12 20:17:11 +01:00
|
|
|
};
|
2023-02-06 20:50:28 +00:00
|
|
|
|
|
|
|
|
extern void pmap_bootstrap(void);
|
2023-03-09 19:50:22 +00:00
|
|
|
extern pmap_t get_kernel_pmap(void);
|
2023-02-06 20:50:28 +00:00
|
|
|
|
|
|
|
|
extern pmap_t pmap_create(void);
|
|
|
|
|
extern void pmap_destroy(pmap_t pmap);
|
|
|
|
|
extern void pmap_switch(pmap_t pmap);
|
|
|
|
|
|
2023-04-12 20:17:11 +01:00
|
|
|
extern kern_status_t pmap_add(pmap_t pmap, void *p, pfn_t pfn, enum vm_prot prot, enum pmap_flags flags);
|
|
|
|
|
extern kern_status_t pmap_add_block(pmap_t pmap, void *p, pfn_t pfn, size_t len, enum vm_prot prot, enum pmap_flags flags);
|
2023-02-06 20:50:28 +00:00
|
|
|
|
|
|
|
|
extern kern_status_t pmap_remove(pmap_t pmap, void *p);
|
|
|
|
|
extern kern_status_t pmap_remove_range(pmap_t pmap, void *p, size_t len);
|
|
|
|
|
|
2023-03-20 20:41:39 +00:00
|
|
|
#ifdef __cplusplus
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
2023-02-06 20:50:28 +00:00
|
|
|
#endif
|