summaryrefslogtreecommitdiff
path: root/vm/vm_user.c
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2013-02-04 10:27:44 +0100
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2013-02-04 10:27:44 +0100
commitba1b3afd50913473f3036a63b4a82d7ba5c42009 (patch)
tree9dff0ddec4bf8b927a025b4bf9882cb1731170f3 /vm/vm_user.c
parentbfdb3be16e5a20eebc97b3ca613d9a4da4465533 (diff)
parent51e87d005139a435cd846ac5c224eed5042c4fa0 (diff)
Merge branch 'master' into master-gdb_stubs
Diffstat (limited to 'vm/vm_user.c')
-rw-r--r--vm/vm_user.c33
1 files changed, 28 insertions, 5 deletions
diff --git a/vm/vm_user.c b/vm/vm_user.c
index 672daab8..6fe398e0 100644
--- a/vm/vm_user.c
+++ b/vm/vm_user.c
@@ -38,12 +38,14 @@
#include <mach/vm_attributes.h>
#include <mach/vm_param.h>
#include <mach/vm_statistics.h>
+#include <mach/vm_cache_statistics.h>
#include <kern/host.h>
#include <kern/task.h>
#include <vm/vm_fault.h>
#include <vm/vm_kern.h>
#include <vm/vm_map.h>
#include <vm/vm_object.h>
+#include <vm/memory_object_proxy.h>
#include <vm/vm_page.h>
@@ -188,6 +190,29 @@ kern_return_t vm_statistics(map, stat)
return(KERN_SUCCESS);
}
+kern_return_t vm_cache_statistics(
+ vm_map_t map,
+ vm_cache_statistics_data_t *stats)
+{
+ if (map == VM_MAP_NULL)
+ return KERN_INVALID_ARGUMENT;
+
+ stats->cache_object_count = vm_object_cached_count;
+ stats->cache_count = vm_object_cached_pages;
+
+ /* XXX Not implemented yet */
+ stats->active_tmp_count = 0;
+ stats->inactive_tmp_count = 0;
+ stats->active_perm_count = 0;
+ stats->inactive_perm_count = 0;
+ stats->dirty_count = 0;
+ stats->laundry_count = 0;
+ stats->writeback_count = 0;
+ stats->slab_count = 0;
+ stats->slab_reclaim_count = 0;
+ return KERN_SUCCESS;
+}
+
/*
* Handle machine-specific attributes for a mapping, such
* as cachability, migrability, etc.
@@ -277,11 +302,6 @@ kern_return_t vm_copy(map, source_address, size, dest_address)
}
-/* XXX From memory_object_proxy.c */
-kern_return_t
-memory_object_proxy_lookup (ipc_port_t proxy_object, ipc_port_t *object,
- vm_prot_t *max_protection);
-
/*
* Routine: vm_map
*/
@@ -322,6 +342,9 @@ kern_return_t vm_map(
return(KERN_INVALID_ARGUMENT);
}
+ if (size == 0)
+ return KERN_INVALID_ARGUMENT;
+
*address = trunc_page(*address);
size = round_page(size);