summaryrefslogtreecommitdiff
path: root/libhurd-mm
diff options
context:
space:
mode:
authorNeal H. Walfield <neal@gnu.org>2008-11-18 14:20:05 +0100
committerNeal H. Walfield <neal@gnu.org>2008-11-18 14:20:05 +0100
commitdc775be53713be61471be073c6e55d1d7fe662ef (patch)
tree4933a2d83e4962ceb075db5f04274cbfc37f096a /libhurd-mm
parent3121ad44657b846dfa492483859bea068bc2873c (diff)
Add support for prefaulting pages.
viengoos/ 2008-11-18 Neal H. Walfield <neal@gnu.org> * rm.h (RM_fault): Define. (rm_method_id_string): Handle it. (fault): New RPC. * server.c (server_loop): Implement it. libhurd-mm/ 2008-11-18 Neal H. Walfield <neal@gnu.org> * anonymous.c (fault): Add code to prefault the pages. Leave disabled.
Diffstat (limited to 'libhurd-mm')
-rw-r--r--libhurd-mm/ChangeLog5
-rw-r--r--libhurd-mm/anonymous.c11
2 files changed, 16 insertions, 0 deletions
diff --git a/libhurd-mm/ChangeLog b/libhurd-mm/ChangeLog
index bd6a94e..b8e3068 100644
--- a/libhurd-mm/ChangeLog
+++ b/libhurd-mm/ChangeLog
@@ -1,5 +1,10 @@
2008-11-18 Neal H. Walfield <neal@gnu.org>
+ * anonymous.c (fault): Add code to prefault the pages. Leave
+ disabled.
+
+2008-11-18 Neal H. Walfield <neal@gnu.org>
+
* anonymous.c (advise): When ADVICE is pager_advice_normal, set
INFO.DISCARDED to ANON->POLICY.DISCARDABLE.
diff --git a/libhurd-mm/anonymous.c b/libhurd-mm/anonymous.c
index 52ea295..656711b 100644
--- a/libhurd-mm/anonymous.c
+++ b/libhurd-mm/anonymous.c
@@ -313,6 +313,17 @@ fault (struct pager *pager, uintptr_t offset, int count, bool read_only,
pages[i] = ADDR_TO_PTR (addr_extend (storage_desc->storage,
0, PAGESIZE_LOG2));
}
+
+#if 0
+ int faulted;
+ for (i = 0; i < count; i += faulted)
+ {
+ error_t err = rm_fault (ADDR_VOID, fault_addr + i * PAGESIZE,
+ count - i, &faulted);
+ if (err || faulted == 0)
+ break;
+ }
+#endif
}
ss_mutex_unlock (&anon->lock);