+/*
+ * p_memstat_relaunch_flags holds
+ * - relaunch behavior when jetsammed
+ */
+#define P_MEMSTAT_RELAUNCH_UNKNOWN 0x0
+#define P_MEMSTAT_RELAUNCH_LOW 0x1
+#define P_MEMSTAT_RELAUNCH_MED 0x2
+#define P_MEMSTAT_RELAUNCH_HIGH 0x4
+
+/*
+ * Checking the p_memstat_state almost always requires the proc_list_lock
+ * because the jetsam thread could be on the other core changing the state.
+ *
+ * App -- almost always managed by a system process. Always have dirty tracking OFF. Can include extensions too.
+ * System Processes -- not managed by anybody. Always have dirty tracking ON. Can include extensions (here) too.
+ */
+#define isApp(p) ((p->p_memstat_state & P_MEMSTAT_MANAGED) || ! (p->p_memstat_dirty & P_DIRTY_TRACK))
+#define isSysProc(p) ( ! (p->p_memstat_state & P_MEMSTAT_MANAGED) || (p->p_memstat_dirty & P_DIRTY_TRACK))
+
+#define MEMSTAT_BUCKET_COUNT (JETSAM_PRIORITY_MAX + 1)
+
+typedef struct memstat_bucket {
+ TAILQ_HEAD(, proc) list;
+ int count;
+ int relaunch_high_count;
+} memstat_bucket_t;
+
+extern memstat_bucket_t memstat_bucket[MEMSTAT_BUCKET_COUNT];
+
+/*
+ * Table that expresses the probability of a process
+ * being used in the next hour.
+ */
+typedef struct memorystatus_internal_probabilities {
+ char proc_name[MAXCOMLEN + 1];
+ int use_probability;
+} memorystatus_internal_probabilities_t;
+
+extern memorystatus_internal_probabilities_t *memorystatus_global_probabilities_table;
+extern size_t memorystatus_global_probabilities_size;
+
+
+extern void memorystatus_init(void);