diff options
author | Neal H. Walfield <neal@gnu.org> | 2008-11-18 14:20:05 +0100 |
---|---|---|
committer | Neal H. Walfield <neal@gnu.org> | 2008-11-18 14:20:05 +0100 |
commit | dc775be53713be61471be073c6e55d1d7fe662ef (patch) | |
tree | 4933a2d83e4962ceb075db5f04274cbfc37f096a /libhurd-mm | |
parent | 3121ad44657b846dfa492483859bea068bc2873c (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/ChangeLog | 5 | ||||
-rw-r--r-- | libhurd-mm/anonymous.c | 11 |
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); |