]> git.saurik.com Git - apple/xnu.git/blobdiff - osfmk/mach/task_info.h
xnu-4570.41.2.tar.gz
[apple/xnu.git] / osfmk / mach / task_info.h
index c42cbd84fa5b3dcc3cbe11dd59d29033f9545bd7..b06cf4170eace79fec789c13b85a827f14f4be9b 100644 (file)
 /*
- * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 2000-2007, 2015 Apple Inc. All rights reserved.
  *
- * @APPLE_LICENSE_HEADER_START@
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
  * 
- * The contents of this file constitute Original Code as defined in and
- * are subject to the Apple Public Source License Version 1.1 (the
- * "License").  You may not use this file except in compliance with the
- * License.  Please obtain a copy of the License at
- * http://www.apple.com/publicsource and read it before using this file.
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
  * 
- * This Original Code and all software distributed under the License are
- * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ * 
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
- * License for the specific language governing rights and limitations
- * under the License.
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
  * 
- * @APPLE_LICENSE_HEADER_END@
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
  */
 /*
  * @OSF_COPYRIGHT@
  */
-/*
- * HISTORY
- * 
- * Revision 1.1.1.1  1998/09/22 21:05:30  wsanchez
- * Import of Mac OS X kernel (~semeria)
- *
- * Revision 1.2  1998/04/29 17:36:54  mburg
- * MK7.3 merger
- *
- * Revision 1.2.31.1  1998/02/03  09:33:56  gdt
- *     Merge up to MK7.3
- *     [1998/02/03  09:17:49  gdt]
- *
- * Revision 1.2.29.1  1997/06/17  03:01:26  devrcs
- *     Added `TASK_SCHED_INFO.'
- *     [1996/03/18  15:24:59  rkc]
- * 
- * Revision 1.2.21.3  1995/01/06  19:51:51  devrcs
- *     mk6 CR668 - 1.3b26 merge
- *     64bit cleanup, ledgers, security, flavors.
- *     [1994/10/14  03:43:10  dwm]
- * 
- * Revision 1.2.21.2  1994/09/23  02:42:46  ezf
- *     change marker to not FREE
- *     [1994/09/22  21:42:56  ezf]
- * 
- * Revision 1.2.21.1  1994/08/07  20:50:07  bolinger
- *     Merge up to colo_b7.
- *     [1994/08/01  21:02:06  bolinger]
- * 
- * Revision 1.2.17.4  1994/06/25  03:47:20  dwm
- *     mk6 CR98 - add flavor interface typedefs (task_flavor_t).
- *     [1994/06/24  21:54:58  dwm]
- * 
- * Revision 1.2.17.3  1994/05/02  21:36:04  dwm
- *     Remove nmk15_compat support.
- *     [1994/05/02  21:09:10  dwm]
- * 
- * Revision 1.2.17.2  1994/01/14  18:42:23  bolinger
- *     Add TASK_USER_DATA flavor of task_info() (and task_set_info()).
- *     [1994/01/14  18:20:52  bolinger]
- * 
- * Revision 1.2.17.1  1994/01/12  17:57:26  dwm
- *     Fix "ifdef" NMK15_COMPAT to "if"
- *     [1994/01/12  17:31:13  dwm]
- * 
- * Revision 1.2.3.5  1993/08/03  18:29:52  gm
- *     CR9596: Change KERNEL to MACH_KERNEL.
- *     [1993/08/02  18:33:57  gm]
- * 
- * Revision 1.2.3.4  1993/07/08  19:04:52  watkins
- *     New version of task_basic_info structure; old version
- *     is now under nmk15_compat.
- *     [1993/07/07  21:04:11  watkins]
- * 
- * Revision 1.2.3.3  1993/06/29  21:55:50  watkins
- *     New definitions for scheduling control interfaces.
- *     [1993/06/29  20:50:59  watkins]
- * 
- * Revision 1.2.3.2  1993/06/09  02:43:32  gm
- *     Added to OSF/1 R1.3 from NMK15.0.
- *     [1993/06/02  21:18:18  jeffc]
- * 
- * Revision 1.2  1993/04/19  16:39:27  devrcs
- *     ansi C conformance changes
- *     [1993/02/02  18:54:59  david]
- * 
- * Revision 1.1  1992/09/30  02:32:09  robert
- *     Initial revision
- * 
- * $EndLog$
- */
-/* CMU_HIST */
-/*
- * Revision 2.4  91/05/14  17:00:41  mrt
- *     Correcting copyright
- * 
- * Revision 2.3  91/02/05  17:36:25  mrt
- *     Changed to new Mach copyright
- *     [91/02/01  17:21:17  mrt]
- * 
- * Revision 2.2  90/05/03  15:48:36  dbg
- *     Added TASK_THREAD_TIMES_INFO flavor.
- *     [90/04/03            dbg]
- * 
- * Revision 2.1  89/08/03  16:04:49  rwd
- * Created.
- * 
- * Revision 2.3  89/02/25  18:41:06  gm0w
- *     Changes for cleanup.
- * 
- * 15-Jan-88  David Golub (dbg) at Carnegie-Mellon University
- *     Created, based on old task_statistics.
- *
- */
-/* CMU_ENDHIST */
 /* 
  * Mach Operating System
  * Copyright (c) 1991,1990,1989,1988,1987 Carnegie Mellon University
  * any improvements or extensions that they make and grant Carnegie Mellon
  * the rights to redistribute these changes.
  */
-/*
- */
 /*
  *     Machine-independent task information structures and definitions.
  *
  *
  */
 
-#ifndef        TASK_INFO_H_
-#define        TASK_INFO_H_
+#ifndef        _MACH_TASK_INFO_H_
+#define        _MACH_TASK_INFO_H_
 
+#include <mach/message.h>
 #include <mach/machine/vm_types.h>
 #include <mach/time_value.h>
 #include <mach/policy.h>
+#include <mach/vm_statistics.h> /* for vm_extmod_statistics_data_t */
+#include <Availability.h>
+
+#include <sys/cdefs.h>
 
 /*
  *     Generic information structure to allow for expansion.
 typedef        natural_t       task_flavor_t;
 typedef        integer_t       *task_info_t;           /* varying array of int */
 
+/* Deprecated, use per structure _data_t's instead */
 #define        TASK_INFO_MAX   (1024)          /* maximum array size */
 typedef        integer_t       task_info_data_t[TASK_INFO_MAX];
 
@@ -174,12 +88,93 @@ typedef    integer_t       task_info_data_t[TASK_INFO_MAX];
  *     Currently defined information structures.
  */
 
-#define TASK_BASIC_INFO         4       /* basic information */
+#pragma pack(4)
+
+/* Don't use this, use MACH_TASK_BASIC_INFO instead */
+#define TASK_BASIC_INFO_32      4       /* basic information */
+#define TASK_BASIC2_INFO_32      6
 
+struct task_basic_info_32 {
+        integer_t       suspend_count;  /* suspend count for task */
+        natural_t       virtual_size;   /* virtual memory size (bytes) */
+        natural_t       resident_size;  /* resident memory size (bytes) */
+        time_value_t    user_time;      /* total user run time for
+                                           terminated threads */
+        time_value_t    system_time;    /* total system run time for
+                                           terminated threads */
+       policy_t        policy;         /* default policy for new threads */
+};
+typedef struct task_basic_info_32       task_basic_info_32_data_t;
+typedef struct task_basic_info_32       *task_basic_info_32_t;
+#define TASK_BASIC_INFO_32_COUNT   \
+                (sizeof(task_basic_info_32_data_t) / sizeof(natural_t))
+
+/* Don't use this, use MACH_TASK_BASIC_INFO instead */
+struct task_basic_info_64 {
+        integer_t       suspend_count;  /* suspend count for task */
+#if defined(__arm__) || defined(__arm64__)
+#if defined(KERNEL) 
+       /* Compatibility with old 32-bit mach_vm_size_t */
+        natural_t      virtual_size;   /* virtual memory size (bytes) */
+        natural_t      resident_size;  /* resident memory size (bytes) */
+#else 
+        mach_vm_size_t  virtual_size;   /* virtual memory size (bytes) */
+        mach_vm_size_t  resident_size;  /* resident memory size (bytes) */
+#endif 
+#else /* defined(__arm__) || defined(__arm64__) */
+        mach_vm_size_t  virtual_size;   /* virtual memory size (bytes) */
+        mach_vm_size_t  resident_size;  /* resident memory size (bytes) */
+#endif /* defined(__arm__) || defined(__arm64__) */
+        time_value_t    user_time;      /* total user run time for
+                                           terminated threads */
+        time_value_t    system_time;    /* total system run time for
+                                           terminated threads */
+       policy_t        policy;         /* default policy for new threads */
+};
+typedef struct task_basic_info_64       task_basic_info_64_data_t;
+typedef struct task_basic_info_64       *task_basic_info_64_t;
+
+#if defined(__arm__) || defined(__arm64__)
+       #if defined(KERNEL) 
+       /*
+        * Backwards-compatibility for old mach_vm*_t types.
+        * The kernel knows about old and new, and if you are compiled
+        * to run on an earlier iOS version, you interact with the old 
+        * (narrow) version.  If you are compiled for a newer OS 
+        * version, however, you are mapped to the wide version.
+        */
+
+       #define TASK_BASIC_INFO_64      5    
+       #define TASK_BASIC_INFO_64_COUNT   \
+                (sizeof(task_basic_info_64_data_t) / sizeof(natural_t))
+
+       #elif defined(__arm__) && defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && (__IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_5_0)
+       /* 
+        * Note: arm64 can't use the old flavor.  If you somehow manage to,
+        * you can cope with the nonsense data yourself.
+        */
+       #define TASK_BASIC_INFO_64      5    
+       #define TASK_BASIC_INFO_64_COUNT   \
+                (sizeof(task_basic_info_64_data_t) / sizeof(natural_t))
+       
+       #else 
+       
+       #define TASK_BASIC_INFO_64              TASK_BASIC_INFO_64_2    
+       #define TASK_BASIC_INFO_64_COUNT        TASK_BASIC_INFO_64_2_COUNT
+       #endif 
+#else /* defined(__arm__) || defined(__arm64__) */
+#define TASK_BASIC_INFO_64      5       /* 64-bit capable basic info */
+#define TASK_BASIC_INFO_64_COUNT   \
+                (sizeof(task_basic_info_64_data_t) / sizeof(natural_t))
+#endif
+
+
+/* localized structure - cannot be safely passed between tasks of differing sizes */
+/* Don't use this, use MACH_TASK_BASIC_INFO instead */
 struct task_basic_info {
         integer_t       suspend_count;  /* suspend count for task */
-        vm_size_t       virtual_size;   /* number of virtual pages */
-        vm_size_t       resident_size;  /* number of resident pages */
+        vm_size_t       virtual_size;   /* virtual memory size (bytes) */
+        vm_size_t       resident_size;  /* resident memory size (bytes) */
         time_value_t    user_time;      /* total user run time for
                                            terminated threads */
         time_value_t    system_time;    /* total system run time for
@@ -191,6 +186,12 @@ typedef struct task_basic_info          task_basic_info_data_t;
 typedef struct task_basic_info          *task_basic_info_t;
 #define TASK_BASIC_INFO_COUNT   \
                 (sizeof(task_basic_info_data_t) / sizeof(natural_t))
+#if !defined(__LP64__)
+#define TASK_BASIC_INFO TASK_BASIC_INFO_32
+#else
+#define TASK_BASIC_INFO TASK_BASIC_INFO_64
+#endif
+
 
 
 #define        TASK_EVENTS_INFO        2       /* various event counts */
@@ -207,8 +208,8 @@ struct task_events_info {
 };
 typedef struct task_events_info                task_events_info_data_t;
 typedef struct task_events_info                *task_events_info_t;
-#define        TASK_EVENTS_INFO_COUNT  \
-               (sizeof(task_events_info_data_t) / sizeof(natural_t))
+#define        TASK_EVENTS_INFO_COUNT          ((mach_msg_type_number_t) \
+               (sizeof(task_events_info_data_t) / sizeof(natural_t)))
 
 #define        TASK_THREAD_TIMES_INFO  3       /* total times for live threads -
                                           only accurate if suspended */
@@ -222,17 +223,287 @@ struct task_thread_times_info {
 
 typedef struct task_thread_times_info  task_thread_times_info_data_t;
 typedef struct task_thread_times_info  *task_thread_times_info_t;
-#define        TASK_THREAD_TIMES_INFO_COUNT    \
-               (sizeof(task_thread_times_info_data_t) / sizeof(natural_t))
+#define        TASK_THREAD_TIMES_INFO_COUNT    ((mach_msg_type_number_t) \
+               (sizeof(task_thread_times_info_data_t) / sizeof(natural_t)))
+
+#define TASK_ABSOLUTETIME_INFO 1
+
+struct task_absolutetime_info {
+       uint64_t                total_user;
+       uint64_t                total_system;
+       uint64_t                threads_user;   /* existing threads only */
+       uint64_t                threads_system;
+};
+
+typedef struct task_absolutetime_info  task_absolutetime_info_data_t;
+typedef struct task_absolutetime_info  *task_absolutetime_info_t;
+#define TASK_ABSOLUTETIME_INFO_COUNT   ((mach_msg_type_number_t) \
+               (sizeof (task_absolutetime_info_data_t) / sizeof (natural_t)))
+
+#define TASK_KERNELMEMORY_INFO 7
+
+struct task_kernelmemory_info {
+       uint64_t                total_palloc;   /* private kernel mem alloc'ed */
+       uint64_t                total_pfree;    /* private kernel mem freed */
+       uint64_t                total_salloc;   /* shared kernel mem alloc'ed */
+       uint64_t                total_sfree;    /* shared kernel mem freed */
+};
+
+typedef struct task_kernelmemory_info  task_kernelmemory_info_data_t;
+typedef struct task_kernelmemory_info  *task_kernelmemory_info_t;
+#define TASK_KERNELMEMORY_INFO_COUNT   ((mach_msg_type_number_t) \
+               (sizeof (task_kernelmemory_info_data_t) / sizeof (natural_t)))
+
+#define TASK_SECURITY_TOKEN            13
+#define TASK_SECURITY_TOKEN_COUNT      ((mach_msg_type_number_t) \
+               (sizeof(security_token_t) / sizeof(natural_t)))
+
+#define TASK_AUDIT_TOKEN               15
+#define TASK_AUDIT_TOKEN_COUNT \
+               (sizeof(audit_token_t) / sizeof(natural_t))
+
+
+#define TASK_AFFINITY_TAG_INFO         16      /* This is experimental. */
+
+struct task_affinity_tag_info {
+       integer_t               set_count;
+       integer_t               min;
+       integer_t               max;
+       integer_t               task_count;
+};
+typedef struct task_affinity_tag_info  task_affinity_tag_info_data_t;
+typedef struct task_affinity_tag_info  *task_affinity_tag_info_t;
+#define TASK_AFFINITY_TAG_INFO_COUNT   \
+               (sizeof(task_affinity_tag_info_data_t) / sizeof(natural_t))
+
+#define TASK_DYLD_INFO                 17
+
+struct task_dyld_info {
+       mach_vm_address_t       all_image_info_addr;
+       mach_vm_size_t          all_image_info_size;
+       integer_t               all_image_info_format;          
+};
+typedef struct task_dyld_info  task_dyld_info_data_t;
+typedef struct task_dyld_info  *task_dyld_info_t;
+#define TASK_DYLD_INFO_COUNT   \
+               (sizeof(task_dyld_info_data_t) / sizeof(natural_t))
+#define TASK_DYLD_ALL_IMAGE_INFO_32    0       /* format value */
+#define TASK_DYLD_ALL_IMAGE_INFO_64    1       /* format value */
+
+#if defined(__arm__) || defined(__arm64__)
+
+/* Don't use this, use MACH_TASK_BASIC_INFO instead */
+/* Compatibility for old 32-bit mach_vm_*_t */
+#define TASK_BASIC_INFO_64_2     18       /* 64-bit capable basic info */
+
+struct task_basic_info_64_2 {
+        integer_t       suspend_count;  /* suspend count for task */
+        mach_vm_size_t  virtual_size;   /* virtual memory size (bytes) */
+        mach_vm_size_t  resident_size;  /* resident memory size (bytes) */
+        time_value_t    user_time;      /* total user run time for
+                                           terminated threads */
+        time_value_t    system_time;    /* total system run time for
+                                           terminated threads */
+       policy_t        policy;         /* default policy for new threads */
+};
+typedef struct task_basic_info_64_2       task_basic_info_64_2_data_t;
+typedef struct task_basic_info_64_2       *task_basic_info_64_2_t;
+#define TASK_BASIC_INFO_64_2_COUNT   \
+                (sizeof(task_basic_info_64_2_data_t) / sizeof(natural_t))
+#endif
+
+#define TASK_EXTMOD_INFO                       19
+
+struct task_extmod_info {
+       unsigned char   task_uuid[16];
+       vm_extmod_statistics_data_t             extmod_statistics;
+};
+typedef struct task_extmod_info        task_extmod_info_data_t;
+typedef struct task_extmod_info        *task_extmod_info_t;
+#define TASK_EXTMOD_INFO_COUNT \
+               (sizeof(task_extmod_info_data_t) / sizeof(natural_t))
+
+
+#define MACH_TASK_BASIC_INFO     20         /* always 64-bit basic info */
+struct mach_task_basic_info {
+        mach_vm_size_t  virtual_size;       /* virtual memory size (bytes) */
+        mach_vm_size_t  resident_size;      /* resident memory size (bytes) */
+        mach_vm_size_t  resident_size_max;  /* maximum resident memory size (bytes) */
+        time_value_t    user_time;          /* total user run time for
+                                               terminated threads */
+        time_value_t    system_time;        /* total system run time for
+                                               terminated threads */
+        policy_t        policy;             /* default policy for new threads */
+        integer_t       suspend_count;      /* suspend count for task */
+};
+typedef struct mach_task_basic_info       mach_task_basic_info_data_t;
+typedef struct mach_task_basic_info       *mach_task_basic_info_t;
+#define MACH_TASK_BASIC_INFO_COUNT   \
+                (sizeof(mach_task_basic_info_data_t) / sizeof(natural_t))
+
+
+#define TASK_POWER_INFO        21
+
+struct task_power_info {
+       uint64_t                total_user;
+       uint64_t                total_system;
+       uint64_t                task_interrupt_wakeups;
+       uint64_t                task_platform_idle_wakeups;
+       uint64_t                task_timer_wakeups_bin_1;
+       uint64_t                task_timer_wakeups_bin_2;
+};
+
+typedef struct task_power_info task_power_info_data_t;
+typedef struct task_power_info *task_power_info_t;
+#define TASK_POWER_INFO_COUNT  ((mach_msg_type_number_t) \
+               (sizeof (task_power_info_data_t) / sizeof (natural_t)))
+
+
+
+#define TASK_VM_INFO           22
+#define TASK_VM_INFO_PURGEABLE 23
+struct task_vm_info {
+        mach_vm_size_t  virtual_size;      /* virtual memory size (bytes) */
+       integer_t       region_count;       /* number of memory regions */
+       integer_t       page_size;
+        mach_vm_size_t  resident_size;     /* resident memory size (bytes) */
+        mach_vm_size_t  resident_size_peak; /* peak resident size (bytes) */
+
+       mach_vm_size_t  device;
+       mach_vm_size_t  device_peak;
+       mach_vm_size_t  internal;
+       mach_vm_size_t  internal_peak;
+       mach_vm_size_t  external;
+       mach_vm_size_t  external_peak;
+       mach_vm_size_t  reusable;
+       mach_vm_size_t  reusable_peak;
+       mach_vm_size_t  purgeable_volatile_pmap;
+       mach_vm_size_t  purgeable_volatile_resident;
+       mach_vm_size_t  purgeable_volatile_virtual;
+       mach_vm_size_t  compressed;
+       mach_vm_size_t  compressed_peak;
+       mach_vm_size_t  compressed_lifetime;
+
+       /* added for rev1 */
+       mach_vm_size_t  phys_footprint;
+
+       /* added for rev2 */
+       mach_vm_address_t       min_address;
+       mach_vm_address_t       max_address;
+};
+typedef struct task_vm_info    task_vm_info_data_t;
+typedef struct task_vm_info    *task_vm_info_t;
+#define TASK_VM_INFO_COUNT     ((mach_msg_type_number_t) \
+               (sizeof (task_vm_info_data_t) / sizeof (natural_t)))
+#define TASK_VM_INFO_REV2_COUNT TASK_VM_INFO_COUNT
+#define TASK_VM_INFO_REV1_COUNT /* doesn't include min and max address */ \
+       ((mach_msg_type_number_t) (TASK_VM_INFO_REV2_COUNT - 4))
+#define TASK_VM_INFO_REV0_COUNT /* doesn't include phys_footprint */ \
+       ((mach_msg_type_number_t) (TASK_VM_INFO_REV1_COUNT - 2))
+
+typedef struct vm_purgeable_info       task_purgable_info_t;
+
+
+#define TASK_TRACE_MEMORY_INFO  24
+struct task_trace_memory_info {
+       uint64_t  user_memory_address;  /* address of start of trace memory buffer */
+       uint64_t  buffer_size;                  /* size of buffer in bytes */
+       uint64_t  mailbox_array_size;   /* size of mailbox area in bytes */
+};
+typedef struct task_trace_memory_info task_trace_memory_info_data_t;
+typedef struct task_trace_memory_info * task_trace_memory_info_t;
+#define TASK_TRACE_MEMORY_INFO_COUNT  ((mach_msg_type_number_t) \
+               (sizeof(task_trace_memory_info_data_t) / sizeof(natural_t)))
+
+#define TASK_WAIT_STATE_INFO  25    /* deprecated. */
+struct task_wait_state_info {
+       uint64_t  total_wait_state_time;        /* Time that all threads past and present have been in a wait state */
+       uint64_t  total_wait_sfi_state_time;    /* Time that threads have been in SFI wait (should be a subset of total wait state time */
+       uint32_t  _reserved[4];
+};
+typedef struct task_wait_state_info task_wait_state_info_data_t;
+typedef struct task_wait_state_info * task_wait_state_info_t;
+#define TASK_WAIT_STATE_INFO_COUNT  ((mach_msg_type_number_t) \
+               (sizeof(task_wait_state_info_data_t) / sizeof(natural_t)))
+
+#define TASK_POWER_INFO_V2     26
+
+typedef struct {
+       uint64_t                task_gpu_utilisation;
+       uint64_t                task_gpu_stat_reserved0;
+       uint64_t                task_gpu_stat_reserved1;
+       uint64_t                task_gpu_stat_reserved2;
+} gpu_energy_data;
+
+typedef gpu_energy_data *gpu_energy_data_t;
+struct task_power_info_v2 {
+       task_power_info_data_t  cpu_energy;
+       gpu_energy_data gpu_energy;
+#if defined(__arm__) || defined(__arm64__)
+       uint64_t                task_energy;
+#endif
+       uint64_t                task_ptime;
+       uint64_t                task_pset_switches;
+};
+
+typedef struct task_power_info_v2      task_power_info_v2_data_t;
+typedef struct task_power_info_v2      *task_power_info_v2_t;
+#define TASK_POWER_INFO_V2_COUNT_OLD   \
+               ((mach_msg_type_number_t) (sizeof (task_power_info_v2_data_t) - sizeof(uint64_t)*2) / sizeof (natural_t))
+#define TASK_POWER_INFO_V2_COUNT       \
+               ((mach_msg_type_number_t) (sizeof (task_power_info_v2_data_t) / sizeof (natural_t)))
+
+#define TASK_VM_INFO_PURGEABLE_ACCOUNT 27 /* Used for xnu purgeable vm unit tests */
+
+#ifdef PRIVATE
+struct pvm_account_info {
+       uint64_t pvm_volatile_count; /* Number of volatile bytes associated with a task */
+       uint64_t pvm_volatile_compressed_count; /* Number of volatile compressed bytes associated with a task */
+       uint64_t pvm_nonvolatile_count; /* Number of nonvolatile bytes associated with a task */
+       uint64_t pvm_nonvolatile_compressed_count; /* Number of nonvolatile compressed bytes associated with a task */
+};
+
+typedef struct pvm_account_info *pvm_account_info_t;
+typedef struct pvm_account_info pvm_account_info_data_t;
+
+#define PVM_ACCOUNT_INFO_COUNT ((mach_msg_type_number_t) \
+               (sizeof (pvm_account_info_data_t) / sizeof (natural_t)))
+#endif /* PRIVATE */
+
+#define TASK_FLAGS_INFO  28                    /* return t_flags field */
+struct task_flags_info {
+       uint32_t        flags;                          /* task flags */
+};
+typedef struct task_flags_info task_flags_info_data_t;
+typedef struct task_flags_info * task_flags_info_t;
+#define TASK_FLAGS_INFO_COUNT  ((mach_msg_type_number_t) \
+               (sizeof(task_flags_info_data_t) / sizeof (natural_t)))
+
+#define TF_LP64                 0x00000001                              /* task has 64-bit addressing */
+
+#define TASK_DEBUG_INFO_INTERNAL    29 /* Used for kernel internal development tests. */
+
+#ifdef PRIVATE
+struct task_debug_info_internal {
+       uint64_t ipc_space_size;
+};
+typedef struct task_debug_info_internal *task_debug_info_internal_t;
+typedef struct task_debug_info_internal task_debug_info_internal_data_t;
+#define TASK_DEBUG_INFO_INTERNAL_COUNT  ((mach_msg_type_number_t) \
+               (sizeof (task_debug_info_internal_data_t) / sizeof(natural_t)))
+
+#endif /* PRIVATE */
+
+/*
+ * Obsolete interfaces.
+ */
 
 #define TASK_SCHED_TIMESHARE_INFO      10
 #define TASK_SCHED_RR_INFO             11
 #define TASK_SCHED_FIFO_INFO           12
 
-#define TASK_SECURITY_TOKEN            13
-#define TASK_SECURITY_TOKEN_COUNT      \
-               (sizeof(security_token_t) / sizeof(natural_t))
-
 #define TASK_SCHED_INFO                        14
 
-#endif /* TASK_INFO_H_ */
+#pragma pack()
+
+#endif /* _MACH_TASK_INFO_H_ */