]> git.saurik.com Git - apple/xnu.git/blobdiff - osfmk/default_pager/default_pager_internal.h
xnu-2782.1.97.tar.gz
[apple/xnu.git] / osfmk / default_pager / default_pager_internal.h
index d1c4883e10e249cabe11aef6cc673840c8c6d8ad..7ae7452a6e820edfbd78589bbd9a281b4bd8f667 100644 (file)
@@ -68,7 +68,7 @@
 #include <ipc/ipc_port.h>
 #include <ipc/ipc_types.h>
 #include <ipc/ipc_space.h>
-#include <kern/lock.h>
+#include <kern/locks.h>
 #include <kern/kalloc.h>
 #include <kern/thread.h>
 #include <vm/vm_kern.h>
 
 #define MACH_PORT_FACE mach_port_t
 
-#if 0
-#ifndef        USE_PRECIOUS
-#define        USE_PRECIOUS    TRUE
-#endif
+#if CONFIG_FREEZE
+#define        RECLAIM_SWAP    1
+#else
+#define        RECLAIM_SWAP    0
 #endif
 
+#define        USE_PRECIOUS    0
+
 #ifdef USER_PAGER
 #define UP(stuff)      stuff
 #else  /* USER_PAGER */
 /*
  * Debug.
  */
-__private_extern__ char        my_name[];
+extern char    my_name[];
 
 #define DEFAULT_PAGER_DEBUG    0
 
@@ -295,6 +297,7 @@ typedef struct backing_store        *backing_store_t;
 
 #ifdef MACH_KERNEL
 #define BS_LOCK_INIT(bs)       lck_mtx_init(&(bs)->bs_lock, &default_pager_lck_grp, &default_pager_lck_attr)
+#define BS_LOCK_DESTROY(bs)    lck_mtx_destroy(&(bs)->bs_lock, &default_pager_lck_grp)
 #define BS_LOCK(bs)                    lck_mtx_lock(&(bs)->bs_lock)
 #define BS_UNLOCK(bs)          lck_mtx_unlock(&(bs)->bs_lock)
 
@@ -307,6 +310,7 @@ extern struct backing_store_list_head       backing_store_list;
 extern int     backing_store_release_trigger_disable;
 
 #define        BSL_LOCK_INIT()         lck_mtx_init(&backing_store_list.bsl_lock, &default_pager_lck_grp, &default_pager_lck_attr)
+#define        BSL_LOCK_DESTROY()      lck_mtx_destroy(&backing_store_list.bsl_lock, &default_pager_lck_grp)
 #define BSL_LOCK()                     lck_mtx_lock(&backing_store_list.bsl_lock)
 #define BSL_UNLOCK()           lck_mtx_unlock(&backing_store_list.bsl_lock)
 
@@ -363,6 +367,7 @@ typedef struct paging_segment *paging_segment_t;
 #define PAGING_SEGMENT_NULL    ((paging_segment_t) 0)
 
 #define PS_LOCK_INIT(ps)       lck_mtx_init(&(ps)->ps_lock, &default_pager_lck_grp, &default_pager_lck_attr)
+#define PS_LOCK_DESTROY(ps)    lck_mtx_destroy(&(ps)->ps_lock, &default_pager_lck_grp)
 #define PS_LOCK(ps)                    lck_mtx_lock(&(ps)->ps_lock)
 #define PS_UNLOCK(ps)          lck_mtx_unlock(&(ps)->ps_lock)
 
@@ -384,7 +389,8 @@ extern int  paging_segment_count;   /* number of active paging segments */
 extern int     paging_segment_max;     /* highest used paging segment index */
 extern int ps_select_array[DEFAULT_PAGER_BACKING_STORE_MAXPRI+1];
 
-#define        PSL_LOCK_INIT() lck_mtx_init(&paging_segments_lock, &default_pager_lck_grp, &default_pager_lck_attr)
+#define        PSL_LOCK_INIT()         lck_mtx_init(&paging_segments_lock, &default_pager_lck_grp, &default_pager_lck_attr)
+#define        PSL_LOCK_DESTROY()      lck_mtx_destroy(&paging_segments_lock, &default_pager_lck_grp)
 #define PSL_LOCK()             lck_mtx_lock(&paging_segments_lock)
 #define PSL_UNLOCK()   lck_mtx_unlock(&paging_segments_lock)
 
@@ -521,6 +527,7 @@ typedef struct vstruct_alias {
 } vstruct_alias_t;
 
 #define DPT_LOCK_INIT(lock)            lck_mtx_init(&(lock), &default_pager_lck_grp, &default_pager_lck_attr)
+#define DPT_LOCK_DESTROY(lock)         lck_mtx_destroy(&(lock), &default_pager_lck_grp)
 #define DPT_LOCK(lock)                 lck_mtx_lock(&(lock))
 #define DPT_UNLOCK(lock)               lck_mtx_unlock(&(lock))
 #define DPT_SLEEP(lock, e, i)  lck_mtx_sleep(&(lock), LCK_SLEEP_DEFAULT, (event_t)(e), i)
@@ -531,6 +538,7 @@ typedef struct vstruct_alias {
 #define VS_UNLOCK(vs)                  hw_lock_unlock(&(vs)->vs_lock)
 #define VS_MAP_LOCK_TYPE               lck_mtx_t
 #define VS_MAP_LOCK_INIT(vs)   lck_mtx_init(&(vs)->vs_map_lock, &default_pager_lck_grp, &default_pager_lck_attr)
+#define VS_MAP_LOCK_DESTROY(vs)        lck_mtx_destroy(&(vs)->vs_map_lock, &default_pager_lck_grp)
 #define VS_MAP_LOCK(vs)                        lck_mtx_lock(&(vs)->vs_map_lock)
 #define VS_MAP_TRY_LOCK(vs)            lck_mtx_try_lock(&(vs)->vs_map_lock)
 #define VS_MAP_UNLOCK(vs)              lck_mtx_unlock(&(vs)->vs_map_lock)
@@ -648,7 +656,7 @@ struct vstruct_list_head {
        int             vsl_count;      /* saves code */
 };
 
-__private_extern__ struct vstruct_list_head    vstruct_list;
+extern struct vstruct_list_head        vstruct_list;
 
 __private_extern__ void vstruct_list_insert(vstruct_t vs);
 __private_extern__ void vstruct_list_delete(vstruct_t vs);
@@ -658,13 +666,14 @@ extern lck_grp_t          default_pager_lck_grp;
 extern lck_attr_t              default_pager_lck_attr;
 
 #define VSL_LOCK_INIT()                lck_mtx_init(&vstruct_list.vsl_lock, &default_pager_lck_grp, &default_pager_lck_attr)
+#define VSL_LOCK_DESTROY()     lck_mtx_destroy(&vstruct_list.vsl_lock, &default_pager_lck_grp)
 #define VSL_LOCK()                     lck_mtx_lock(&vstruct_list.vsl_lock)
 #define VSL_LOCK_TRY()         lck_mtx_try_lock(&vstruct_list.vsl_lock)
 #define VSL_UNLOCK()           lck_mtx_unlock(&vstruct_list.vsl_lock)
 #define VSL_SLEEP(e,i)         lck_mtx_sleep(&vstruct_list.vsl_lock, LCK_SLEEP_DEFAULT, (e), (i))
 
 #ifdef MACH_KERNEL
-__private_extern__ zone_t      vstruct_zone;
+extern zone_t  vstruct_zone;
 #endif
 
 /*
@@ -737,6 +746,9 @@ extern boolean_t    bs_add_device(char *,
                                      MACH_PORT_FACE);
 extern vstruct_t       ps_vstruct_create(dp_size_t);
 extern void            ps_vstruct_dealloc(vstruct_t);
+extern kern_return_t   ps_vstruct_reclaim(vstruct_t,
+                                          boolean_t,
+                                          boolean_t);
 extern kern_return_t   pvs_cluster_read(vstruct_t,
                                         dp_offset_t,
                                         dp_size_t,
@@ -773,4 +785,6 @@ extern boolean_t    dp_encryption_inited;
 /* Should we encrypt data before writing to swap ? */
 extern boolean_t       dp_encryption;
 
+extern boolean_t       dp_isssd;
+
 #endif /* _DEFAULT_PAGER_INTERNAL_H_ */