xnu-7195.50.7.100.1.tar.gz
[apple/xnu.git] / bsd / sys / kern_memorystatus_freeze.h
index c3894b39494239c806ca953553140acbafe854a0..c56ba0b4e114d0cf8adaeb9f3f1f7ce014fe8607 100644 (file)
@@ -34,6 +34,7 @@
 #include <sys/proc.h>
 #include <sys/param.h>
 #include <sys/kern_memorystatus.h>
+#include <mach/resource_monitors.h>     // command/proc_name_t
 
 typedef struct memorystatus_freeze_entry {
        int32_t pid;
@@ -41,6 +42,10 @@ typedef struct memorystatus_freeze_entry {
        uint32_t pages;
 } memorystatus_freeze_entry_t;
 
+#ifdef PRIVATE
+#define FREEZE_PROCESSES_MAX 20
+#endif /* PRIVATE */
+
 #ifdef XNU_KERNEL_PRIVATE
 
 extern unsigned long freeze_threshold_percentage;
@@ -63,7 +68,6 @@ extern int  memorystatus_freeze_process_sync(proc_t p);
 #define FREEZE_PAGES_MAX   (max_task_footprint_mb == 0 ? INT_MAX : (max_task_footprint_mb << (20 - PAGE_SHIFT)))
 
 #define FREEZE_SUSPENDED_THRESHOLD_DEFAULT 4
-#define FREEZE_PROCESSES_MAX               20
 
 #define FREEZE_DAILY_MB_MAX_DEFAULT       1024
 #define FREEZE_DEGRADATION_BUDGET_THRESHOLD     25 //degraded perf. when the daily budget left falls below this threshold percentage
@@ -113,4 +117,20 @@ int memorystatus_freezer_control(int32_t flags, user_addr_t buffer, size_t buffe
 
 #endif /* XNU_KERNEL_PRIVATE */
 
+#ifdef PRIVATE
+/* Lists all the processes that are currently in the freezer. */
+#define FREEZER_CONTROL_GET_PROCS        (2)
+
+#define FREEZER_CONTROL_GET_PROCS_MAX_COUNT (FREEZE_PROCESSES_MAX * 2)
+
+typedef struct _global_frozen_procs {
+       size_t gfp_num_frozen;
+       struct {
+               pid_t fp_pid;
+               proc_name_t fp_name;
+       } gfp_procs[FREEZER_CONTROL_GET_PROCS_MAX_COUNT];
+} global_frozen_procs_t;
+
+#endif /* PRIVATE */
+
 #endif /* SYS_MEMORYSTATUS_FREEZE_H */