Source to osfmk/mach/task_info.h
/*
* Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
*
* @APPLE_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 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.
*
* @APPLE_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
* All Rights Reserved.
*
* Permission to use, copy, modify and distribute this software and its
* documentation is hereby granted, provided that both the copyright
* notice and this permission notice appear in all copies of the
* software, derivative works or modified versions, and any portions
* thereof, and that both notices appear in supporting documentation.
*
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
*
* Carnegie Mellon requests users of this software to return to
*
* Software Distribution Coordinator or [email protected]
* School of Computer Science
* Carnegie Mellon University
* Pittsburgh PA 15213-3890
*
* any improvements or extensions that they make and grant Carnegie Mellon
* the rights to redistribute these changes.
*/
/*
*/
/*
* Machine-independent task information structures and definitions.
*
* The definitions in this file are exported to the user. The kernel
* will translate its internal data structures to these structures
* as appropriate.
*
*/
#ifndef TASK_INFO_H_
#define TASK_INFO_H_
#include <mach/machine/vm_types.h>
#include <mach/time_value.h>
#include <mach/policy.h>
/*
* Generic information structure to allow for expansion.
*/
typedef natural_t task_flavor_t;
typedef integer_t *task_info_t; /* varying array of int */
#define TASK_INFO_MAX (1024) /* maximum array size */
typedef integer_t task_info_data_t[TASK_INFO_MAX];
/*
* Currently defined information structures.
*/
#define TASK_BASIC_INFO 4 /* basic information */
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 */
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 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))
#define TASK_EVENTS_INFO 2 /* various event counts */
struct task_events_info {
integer_t faults; /* number of page faults */
integer_t pageins; /* number of actual pageins */
integer_t cow_faults; /* number of copy-on-write faults */
integer_t messages_sent; /* number of messages sent */
integer_t messages_received; /* number of messages received */
integer_t syscalls_mach; /* number of mach system calls */
integer_t syscalls_unix; /* number of unix system calls */
integer_t csw; /* number of context switches */
};
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_THREAD_TIMES_INFO 3 /* total times for live threads -
only accurate if suspended */
struct task_thread_times_info {
time_value_t user_time; /* total user run time for
live threads */
time_value_t system_time; /* total system run time for
live threads */
};
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_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_ */