diff options
author | Richard Braun <rbraun@sceen.net> | 2016-03-11 21:47:03 +0100 |
---|---|---|
committer | Richard Braun <rbraun@sceen.net> | 2016-03-11 21:47:03 +0100 |
commit | 6cc11e068af0293a67ca855c8d33e6decdabf2b2 (patch) | |
tree | cc5ba82e619822c4ab51189150e364ec978d3f05 /vm/vm_object.h | |
parent | 844fb104f5c0c50b94cbf6ab8fb2e97caa4bc7b3 (diff) | |
parent | c774e89387a43d737abbdd99781a294c1cceebb2 (diff) | |
download | gnumach-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.h | 10 |
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++) |