1/* 2 * Copyright (c) 2000-2005 Apple Computer, Inc. All rights reserved. 3 * 4 * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ 5 * 6 * This file contains Original Code and/or Modifications of Original Code 7 * as defined in and that are subject to the Apple Public Source License 8 * Version 2.0 (the 'License'). You may not use this file except in 9 * compliance with the License. The rights granted to you under the License 10 * may not be used to create, or enable the creation or redistribution of, 11 * unlawful or unlicensed copies of an Apple operating system, or to 12 * circumvent, violate, or enable the circumvention or violation of, any 13 * terms of an Apple operating system software license agreement. 14 * 15 * Please obtain a copy of the License at 16 * http://www.opensource.apple.com/apsl/ and read it before using this file. 17 * 18 * The Original Code and all software distributed under the License are 19 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 20 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 21 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 22 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 23 * Please see the License for the specific language governing rights and 24 * limitations under the License. 25 * 26 * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ 27 */ 28/* 29 * @OSF_COPYRIGHT@ 30 */ 31/* 32 * Mach Operating System 33 * Copyright (c) 1991,1990,1989,1988,1987 Carnegie Mellon University 34 * All Rights Reserved. 35 * 36 * Permission to use, copy, modify and distribute this software and its 37 * documentation is hereby granted, provided that both the copyright 38 * notice and this permission notice appear in all copies of the 39 * software, derivative works or modified versions, and any portions 40 * thereof, and that both notices appear in supporting documentation. 41 * 42 * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" 43 * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR 44 * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. 45 * 46 * Carnegie Mellon requests users of this software to return to 47 * 48 * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU 49 * School of Computer Science 50 * Carnegie Mellon University 51 * Pittsburgh PA 15213-3890 52 * 53 * any improvements or extensions that they make and grant Carnegie Mellon 54 * the rights to redistribute these changes. 55 */ 56/* 57 */ 58/* 59 * File: mach/thread_info 60 * 61 * Thread information structure and definitions. 62 * 63 * The defintions in this file are exported to the user. The kernel 64 * will translate its internal data structures to these structures 65 * as appropriate. 66 * 67 */ 68 69#ifndef _MACH_THREAD_INFO_H_ 70#define _MACH_THREAD_INFO_H_ 71 72#include <mach/boolean.h> 73#include <mach/policy.h> 74#include <mach/time_value.h> 75#include <mach/message.h> 76#include <mach/machine/vm_types.h> 77 78/* 79 * Generic information structure to allow for expansion. 80 */ 81typedef natural_t thread_flavor_t; 82typedef integer_t *thread_info_t; /* varying array of int */ 83 84#define THREAD_INFO_MAX (1024) /* maximum array size */ 85typedef integer_t thread_info_data_t[THREAD_INFO_MAX]; 86 87/* 88 * Currently defined information. 89 */ 90#define THREAD_BASIC_INFO 3 /* basic information */ 91 92struct thread_basic_info { 93 time_value_t user_time; /* user run time */ 94 time_value_t system_time; /* system run time */ 95 integer_t cpu_usage; /* scaled cpu usage percentage */ 96 policy_t policy; /* scheduling policy in effect */ 97 integer_t run_state; /* run state (see below) */ 98 integer_t flags; /* various flags (see below) */ 99 integer_t suspend_count; /* suspend count for thread */ 100 integer_t sleep_time; /* number of seconds that thread 101 has been sleeping */ 102}; 103 104typedef struct thread_basic_info thread_basic_info_data_t; 105typedef struct thread_basic_info *thread_basic_info_t; 106#define THREAD_BASIC_INFO_COUNT ((mach_msg_type_number_t) \ 107 (sizeof(thread_basic_info_data_t) / sizeof(natural_t))) 108 109/* 110 * Scale factor for usage field. 111 */ 112 113#define TH_USAGE_SCALE 1000 114 115/* 116 * Thread run states (state field). 117 */ 118 119#define TH_STATE_RUNNING 1 /* thread is running normally */ 120#define TH_STATE_STOPPED 2 /* thread is stopped */ 121#define TH_STATE_WAITING 3 /* thread is waiting normally */ 122#define TH_STATE_UNINTERRUPTIBLE 4 /* thread is in an uninterruptible 123 wait */ 124#define TH_STATE_HALTED 5 /* thread is halted at a 125 clean point */ 126 127/* 128 * Thread flags (flags field). 129 */ 130#define TH_FLAGS_SWAPPED 0x1 /* thread is swapped out */ 131#define TH_FLAGS_IDLE 0x2 /* thread is an idle thread */ 132 133/* 134 * Obsolete interfaces. 135 */ 136 137#define THREAD_SCHED_TIMESHARE_INFO 10 138#define THREAD_SCHED_RR_INFO 11 139#define THREAD_SCHED_FIFO_INFO 12 140 141#endif /* _MACH_THREAD_INFO_H_ */ 142