x86_64: implement bootstrap function for pmap interface
This commit is contained in:
32
include/socks/pmap.h
Normal file
32
include/socks/pmap.h
Normal file
@@ -0,0 +1,32 @@
|
||||
#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)
|
||||
|
||||
typedef ml_pmap_t pmap_t;
|
||||
typedef ml_pfn_t pfn_t;
|
||||
|
||||
typedef enum pmap_flags {
|
||||
PMAP_HUGEPAGE = 0x01u,
|
||||
} pmap_flags_t;
|
||||
|
||||
extern void pmap_bootstrap(void);
|
||||
|
||||
extern pmap_t pmap_create(void);
|
||||
extern void pmap_destroy(pmap_t pmap);
|
||||
extern void pmap_switch(pmap_t pmap);
|
||||
|
||||
extern kern_status_t pmap_add(pmap_t pmap, void *p, pfn_t pfn, vm_prot_t prot, pmap_flags_t flags);
|
||||
extern kern_status_t pmap_add_block(pmap_t pmap, void *p, pfn_t pfn, size_t len, vm_prot_t prot, pmap_flags_t flags);
|
||||
|
||||
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);
|
||||
|
||||
#endif
|
||||
@@ -3,8 +3,10 @@
|
||||
|
||||
typedef unsigned int kern_status_t;
|
||||
|
||||
#define KERN_OK (0)
|
||||
#define KERN_UNIMPLEMENTED (1)
|
||||
#define KERN_NAME_EXISTS (2)
|
||||
#define KERN_OK (0)
|
||||
#define KERN_UNIMPLEMENTED (1)
|
||||
#define KERN_NAME_EXISTS (2)
|
||||
#define KERN_INVALID_ARGUMENT (3)
|
||||
#define KERN_UNSUPPORTED (4)
|
||||
|
||||
#endif
|
||||
|
||||
@@ -30,6 +30,14 @@ typedef struct vm_object {
|
||||
unsigned int reserved;
|
||||
} vm_object_t;
|
||||
|
||||
typedef enum vm_prot {
|
||||
VM_PROT_READ = 0x01u,
|
||||
VM_PROT_WRITE = 0x02u,
|
||||
VM_PROT_EXEC = 0x04u,
|
||||
VM_PROT_USER = 0x08u,
|
||||
VM_PROT_SVR = 0x10u,
|
||||
} vm_prot_t;
|
||||
|
||||
typedef enum vm_flags {
|
||||
VM_GET_DMA = 0x01u,
|
||||
} vm_flags_t;
|
||||
|
||||
Reference in New Issue
Block a user