enum {
kMemoryStatusLevelNote = 1,
- kMemoryStatusSnapshotNote = 2
+ kMemoryStatusSnapshotNote = 2,
+ kMemoryStatusHibernationNote = 3
};
enum {
jetsam_snapshot_entry_t entries[1];
} jetsam_snapshot_t;
+typedef struct jetsam_hibernation_entry {
+ uint32_t pid;
+ uint32_t flags;
+ uint32_t pages;
+} jetsam_hibernation_entry_t;
+
+#endif /* !MACH_KERNEL_PRIVATE */
+
enum {
- kJetsamFlagsFrontmost = (1 << 0),
- kJetsamFlagsKilled = (1 << 1),
- kJetsamFlagsKilledHiwat = (1 << 2)
+ kJetsamFlagsFrontmost = (1 << 0),
+ kJetsamFlagsKilled = (1 << 1),
+ kJetsamFlagsKilledHiwat = (1 << 2),
+ kJetsamFlagsHibernated = (1 << 3),
+ kJetsamFlagsKilledVnodes = (1 << 4),
+ kJetsamFlagsKilledSwap = (1 << 5),
+ kJetsamFlagsThawed = (1 << 6),
+ kJetsamFlagsKilledVM = (1 << 7),
+ kJetsamFlagsSuspForDiagnosis = (1 << 8)
};
-#endif /* !MACH_KERNEL_PRIVATE */
#ifdef KERNEL
extern void kern_memorystatus_init(void) __attribute__((section("__TEXT, initcode")));
-extern int jetsam_kill_top_proc(void);
+extern int jetsam_kill_top_proc(boolean_t any, uint32_t reason);
extern int kern_memorystatus_wakeup;
extern int kern_memorystatus_level;
+extern unsigned int kern_memorystatus_delta;
+
+#ifdef CONFIG_FREEZE
+extern void kern_hibernation_init(void) __attribute__((section("__TEXT, initcode")));
+extern int kern_hibernation_wakeup;
+
+void kern_hibernation_on_pid_suspend(int pid);
+void kern_hibernation_on_pid_resume(int pid, task_t task);
+void kern_hibernation_on_pid_hibernate(int pid);
+#endif
+
+#if CONFIG_EMBEDDED
+#define VM_CHECK_MEMORYSTATUS do { vm_check_memorystatus(); } while(0)
+#else /*CONFIG_EMBEDDED*/
+#define VM_CHECK_MEMORYSTATUS do {} while(0)
+#endif
#endif /* KERNEL */
#endif /* SYS_KERN_MEMORYSTATUS_H */