aboutsummaryrefslogtreecommitdiff
path: root/sys/include/vm
diff options
context:
space:
mode:
authorIan Moffett <ian@osmora.org>2024-04-20 16:23:59 -0400
committerIan Moffett <ian@osmora.org>2024-04-20 16:25:49 -0400
commit11976acd80c0c360de66a99647f58dbb8e5ecf3b (patch)
tree83491b21087b4078bc54d78c5f66edff09430863 /sys/include/vm
parent852b00cbc75b83390984a77048e443a43dd0ae48 (diff)
kernel: vm: Add initial demand paging support
Signed-off-by: Ian Moffett <ian@osmora.org>
Diffstat (limited to 'sys/include/vm')
-rw-r--r--sys/include/vm/fault.h38
-rw-r--r--sys/include/vm/map.h4
-rw-r--r--sys/include/vm/obj.h1
3 files changed, 43 insertions, 0 deletions
diff --git a/sys/include/vm/fault.h b/sys/include/vm/fault.h
new file mode 100644
index 0000000..f0e308c
--- /dev/null
+++ b/sys/include/vm/fault.h
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2023-2024 Ian Marco Moffett and the Osmora Team.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of Hyra nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef _VM_FAULT_H_
+#define _VM_FAULT_H_
+
+#include <sys/types.h>
+#include <vm/pmap.h>
+
+int vm_fault(vaddr_t va, vm_prot_t access_type);
+
+#endif /* !_VM_FAULT_H_ */
diff --git a/sys/include/vm/map.h b/sys/include/vm/map.h
index f482788..1da8240 100644
--- a/sys/include/vm/map.h
+++ b/sys/include/vm/map.h
@@ -46,10 +46,14 @@
/* Memory map table entry count */
#define MTAB_ENTRIES 32
+struct vm_object;
+
struct vm_mapping {
TAILQ_ENTRY(vm_mapping) link;
struct vm_range range;
+ struct vm_object *vmobj;
paddr_t physmem_base;
+ vm_prot_t prot;
/* Private */
size_t vhash; /* Virtual address hash */
diff --git a/sys/include/vm/obj.h b/sys/include/vm/obj.h
index c1c2f17..ef07a1e 100644
--- a/sys/include/vm/obj.h
+++ b/sys/include/vm/obj.h
@@ -42,6 +42,7 @@ struct vm_object {
struct vm_pagerops *pgops; /* Pager operations */
uint8_t is_anon : 1; /* Is an anonymous mapping */
+ uint8_t demand : 1; /* Only mapped upon access */
int ref; /* Ref count */
struct vnode *vnode; /* Only used if `is_anon` is 0 */
};