aboutsummaryrefslogtreecommitdiff
path: root/vm/vm_object.h
diff options
context:
space:
mode:
authorRichard Braun <rbraun@sceen.net>2016-03-11 21:47:03 +0100
committerRichard Braun <rbraun@sceen.net>2016-03-11 21:47:03 +0100
commit6cc11e068af0293a67ca855c8d33e6decdabf2b2 (patch)
treecc5ba82e619822c4ab51189150e364ec978d3f05 /vm/vm_object.h
parent844fb104f5c0c50b94cbf6ab8fb2e97caa4bc7b3 (diff)
parentc774e89387a43d737abbdd99781a294c1cceebb2 (diff)
downloadgnumach-6cc11e068af0293a67ca855c8d33e6decdabf2b2.tar.gz
gnumach-6cc11e068af0293a67ca855c8d33e6decdabf2b2.tar.bz2
gnumach-6cc11e068af0293a67ca855c8d33e6decdabf2b2.zip
Merge remote-tracking branch 'remotes/origin/rbraun/vm_cache_policy'
Finally ;-).
Diffstat (limited to 'vm/vm_object.h')
-rw-r--r--vm/vm_object.h10
1 files changed, 8 insertions, 2 deletions
diff --git a/vm/vm_object.h b/vm/vm_object.h
index 71c85459..eb8a0c28 100644
--- a/vm/vm_object.h
+++ b/vm/vm_object.h
@@ -72,7 +72,7 @@ struct vm_object {
*/
int ref_count; /* Number of references */
- int resident_page_count;
+ unsigned long resident_page_count;
/* number of resident pages */
struct vm_object *copy; /* Object that should receive
@@ -148,8 +148,9 @@ struct vm_object {
*/
/* boolean_t */ use_shared_copy : 1,/* Use shared (i.e.,
* delayed) copy on write */
- /* boolean_t */ shadowed: 1; /* Shadow may exist */
+ /* boolean_t */ shadowed: 1, /* Shadow may exist */
+ /* boolean_t */ cached: 1; /* Object is cached */
queue_chain_t cached_list; /* Attachment point for the list
* of objects cached as a result
* of their can_persist value
@@ -169,6 +170,7 @@ vm_object_t kernel_object; /* the single kernel object */
extern void vm_object_bootstrap(void);
extern void vm_object_init(void);
+extern void vm_object_collect(vm_object_t);
extern void vm_object_terminate(vm_object_t);
extern vm_object_t vm_object_allocate(vm_size_t);
extern void vm_object_reference(vm_object_t);
@@ -290,6 +292,10 @@ vm_object_t vm_object_copy_delayed(
* Routines implemented as macros
*/
+#define vm_object_collectable(object) \
+ (((object)->ref_count == 0) \
+ && ((object)->resident_page_count == 0))
+
#define vm_object_paging_begin(object) \
((object)->paging_in_progress++)