diff options
Diffstat (limited to 'lume-legacy/include/kernel/mm.h')
| -rw-r--r-- | lume-legacy/include/kernel/mm.h | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/lume-legacy/include/kernel/mm.h b/lume-legacy/include/kernel/mm.h new file mode 100644 index 0000000..e3de09a --- /dev/null +++ b/lume-legacy/include/kernel/mm.h @@ -0,0 +1,32 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Copyright (C) 2026 Richard QIn + */ + +#pragma once +#include "common/types.h" + +namespace VM +{ + extern uint64 *kernel_pagetable; + + void kvminit(); + void kvminithart(); + + uint64 *uvmcreate(); + void uvminit(uint64 *pagetable, uchar *src, uint64 sz); + uint64 uvmalloc(uint64 *pagetable, uint64 oldsz, uint64 newsz, int xperm); + uint64 uvmdealloc(uint64 *pagetable, uint64 oldsz, uint64 newsz); + void uvmfree(uint64 *pagetable, uint64 sz); + int uvmcopy(uint64 *oldpt, uint64 *newpt, uint64 sz); + void uvmunmap(uint64 *pagetable, uint64 va, uint64 npages, int do_free); + + int copyout(uint64 *pagetable, uint64 dstva, char *src, uint64 len); + int copyin(uint64 *pagetable, char *dst, uint64 srcva, uint64 len); + int copyinstr(uint64 *pagetable, char *dst, uint64 srcva, uint64 max); + + int handle_cow_fault(uint64 *pagetable, uint64 va); + int mappages(uint64 *pagetable, uint64 va, uint64 size, uint64 pa, int perm); + + uint64 walkaddr(uint64 *pagetable, uint64 va); +}
\ No newline at end of file |
