/*
- * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 2000-2004 Apple Computer, Inc. All rights reserved.
*
- * @APPLE_LICENSE_HEADER_START@
- *
- * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
*
* 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. Please obtain a copy of the License at
- * http://www.opensource.apple.com/apsl/ and read it before using this
- * file.
+ * 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.
+ *
+ * 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
* 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@
#include <mach/port.h>
#include <kern/task.h>
#include <kern/thread.h>
-#include <kern/thread_swap.h>
#include <kern/queue.h>
#include <kern/processor.h>
#include <ipc/ipc_port.h>
*/
char *db_act_stat(
- register thread_act_t thr_act,
+ register thread_t thr_act,
char *status);
char *db_act_swap_stat(
- register thread_act_t thr_act,
+ register thread_t thr_act,
char *status);
void db_print_task(
ipc_space_t space);
int db_port_iterate(
- thread_act_t thr_act,
+ thread_t thr_act,
boolean_t is_pset,
boolean_t do_output);
ipc_port_t db_lookup_port(
- thread_act_t thr_act,
+ thread_t thr_act,
int id);
static void db_print_port_id(
int n);
void db_print_act(
- thread_act_t thr_act,
+ thread_t thr_act,
int act_id,
int flag);
task_t task = TASK_NULL;
aux_param.modif = modif;
- aux_param.thr_act = THR_ACT_NULL;
+ aux_param.thr_act = THREAD_NULL;
if (db_option(modif, 't')) {
if (have_addr) {
- if (!db_check_act_address_valid((thread_act_t)addr))
+ if (!db_check_act_address_valid((thread_t)addr))
return;
- aux_param.thr_act = (thread_act_t)addr;
+ aux_param.thr_act = (thread_t)addr;
} else
aux_param.thr_act = db_default_act;
- if (aux_param.thr_act != THR_ACT_NULL)
+ if (aux_param.thr_act != THREAD_NULL)
task = aux_param.thr_act->task;
}
for (regp = db_regs; regp < db_eregs; regp++) {
12-strlen(regp->name)-((i<10)?1:2), "");
else
db_printf("%-12s", regp->name);
- db_printf("%#*N", 2+2*sizeof(vm_offset_t), value);
+ db_printf("%#*llN", 2+2*sizeof(db_expr_t), (unsigned long long)value);
db_find_xtrn_task_sym_and_offset((db_addr_t)value, &name,
&offset, task);
if (name != 0 && offset <= db_maxoff && offset != value) {
db_printf("\t%s", name);
if (offset != 0)
- db_printf("+%#r", offset);
+ db_printf("+%#llr", (unsigned long long)offset);
}
db_printf("\n");
}
char *
db_act_stat(
- register thread_act_t thr_act,
+ register thread_t thr_act,
char *status)
{
register char *p = status;
*p++ = 'n',
*p++ = 'g';
*p++ = ' ';
- } else if (!thr_act->thread) {
- *p++ = 'E',
- *p++ = 'm',
- *p++ = 'p',
- *p++ = 't',
- *p++ = 'y';
- *p++ = ' ';
} else {
- thread_t athread = thr_act->thread;
+ thread_t athread = thr_act;
*p++ = (athread->state & TH_RUN) ? 'R' : '.';
*p++ = (athread->state & TH_WAIT) ? 'W' : '.';
*p++ = (athread->state & TH_SUSP) ? 'S' : '.';
- *p++ = (athread->state & TH_STACK_HANDOFF) ? 'O' : '.';
+ *p++ = (!athread->kernel_stack) ? 'O' : '.';
*p++ = (athread->state & TH_UNINT) ? 'N' : '.';
/* show if the FPU has been used */
*p++ = db_act_fp_used(thr_act) ? 'F' : '.';
char *
db_act_swap_stat(
- register thread_act_t thr_act,
+ register thread_t thr_act,
char *status)
{
register char *p = status;
-
-#if THREAD_SWAPPER
- switch (thr_act->swap_state & TH_SW_STATE) {
- case TH_SW_UNSWAPPABLE:
- *p++ = 'U';
- break;
- case TH_SW_IN:
- *p++ = 'I';
- break;
- case TH_SW_GOING_OUT:
- *p++ = 'G';
- break;
- case TH_SW_WANT_IN:
- *p++ = 'W';
- break;
- case TH_SW_OUT:
- *p++ = 'O';
- break;
- case TH_SW_COMING_IN:
- *p++ = 'C';
- break;
- default:
- *p++ = '?';
- break;
- }
- *p++ = (thr_act->swap_state & TH_SW_TASK_SWAPPING) ? 'T' : '.';
-#endif /* THREAD_SWAPPER */
*p++ = 0;
return status;
void
db_print_act(
- thread_act_t thr_act,
+ thread_t thr_act,
int act_id,
int flag)
{
return;
}
- athread = thr_act->thread;
+ athread = thr_act;
if (flag & OPTION_USER) {
if (flag & OPTION_LONG) {
policy = ((athread && (athread->sched_mode&TH_MODE_TIMESHARE))? 1: 2);
db_printf("%s%3d%c %0*X %s %s %0*X %0*X %3d %3d/%s ",
indent, act_id,
- (thr_act == current_act())? '#': ':',
+ (thr_act == current_thread())? '#': ':',
2*sizeof(vm_offset_t), thr_act,
db_act_stat(thr_act, status),
db_act_swap_stat(thr_act, swap_status),
} else
db_printf(" ");
db_printf("%3d%c(%0*X,%s)", act_id,
- (thr_act == current_act())? '#': ':',
+ (thr_act == current_thread())? '#': ':',
2*sizeof(vm_offset_t), thr_act,
db_act_stat(thr_act, status));
}
(athread->state & TH_SUSP) ? 'S' : ' ',
(athread->state & TH_UNINT)? 'N' : ' ',
db_act_fp_used(thr_act) ? 'F' : ' ');
- /* Obsolete TH_STACK_HANDOFF code, left for now; might enhance
- * to print out safe_points instead */
- if (athread->state & TH_STACK_HANDOFF) {
+ if (!athread->kernel_stack) {
if (athread->continuation) {
db_printf("(");
db_task_printsym((db_addr_t)athread->continuation,
int task_id,
int flag)
{
- thread_act_t thr_act;
+ thread_t thr_act;
int act_id;
char sstate;
if (flag & OPTION_USER) {
if (flag & OPTION_TASK_TITLE) {
- db_printf(" ID: TASK MAP THD RES SUS PR SW %s",
+ db_printf(" ID: TASK MAP THD SUS PR SW %s",
DB_TASK_NAME_TITLE);
if ((flag & OPTION_LONG) == 0)
db_printf(" ACTS");
sstate = 'I';
#endif /* TASK_SWAPPER */
/*** ??? fix me ***/
- db_printf("%3d: %0*X %0*X %3d %3d %3d %2d %c ",
+ db_printf("%3d: %0*X %0*X %3d %3d %2d %c ",
task_id, 2*sizeof(vm_offset_t), task,
2*sizeof(vm_offset_t), task->map,
- task->thr_act_count, task->res_act_count,
+ task->thread_count,
task->suspend_count,
task->priority,
sstate);
if (flag & OPTION_TASK_TITLE)
flag |= OPTION_THREAD_TITLE;
db_printf("\n");
- } else if (task->thr_act_count <= 1)
+ } else if (task->thread_count <= 1)
flag &= ~OPTION_INDENT;
act_id = 0;
- queue_iterate(&task->thr_acts, thr_act, thread_act_t, thr_acts) {
+ queue_iterate(&task->threads, thr_act, thread_t, task_threads) {
db_print_act(thr_act, act_id, flag);
flag &= ~OPTION_THREAD_TITLE;
act_id++;
if (flag & OPTION_LONG) {
if (flag & OPTION_TASK_TITLE) {
db_printf(" TASK ACT\n");
- if (task->thr_act_count > 1)
+ if (task->thread_count > 1)
flag |= OPTION_THREAD_TITLE;
}
}
db_printf("%3d (%0*X): ", task_id, 2*sizeof(vm_offset_t), task);
- if (task->thr_act_count == 0) {
+ if (task->thread_count == 0) {
db_printf("no threads\n");
} else {
- if (task->thr_act_count > 1) {
- db_printf("%d threads: \n", task->thr_act_count);
+ if (task->thread_count > 1) {
+ db_printf("%d threads: \n", task->thread_count);
flag |= OPTION_INDENT;
} else
flag &= ~OPTION_INDENT;
act_id = 0;
- queue_iterate(&task->thr_acts, thr_act,
- thread_act_t, thr_acts) {
+ queue_iterate(&task->threads, thr_act,
+ thread_t, task_threads) {
db_print_act(thr_act, act_id++, flag);
flag &= ~OPTION_THREAD_TITLE;
}
int flag)
{
ipc_space_t space;
- thread_act_t act = (thread_act_t)queue_first(&task->thr_acts);
+ thread_t act = (thread_t)queue_first(&task->threads);
int count;
count = 0;
db_expr_t count,
char *modif)
{
- thread_act_t thread;
+ thread_t thread;
task_t task;
int task_id;
if (have_addr == FALSE) {
- if ((thread = db_default_act) == THR_ACT_NULL) {
- if ((thread = current_act()) == THR_ACT_NULL) {
+ if ((thread = db_default_act) == THREAD_NULL) {
+ if ((thread = current_thread()) == THREAD_NULL) {
db_printf("no thread.\n");
return;
}
task = (task_t) addr;
if ((task_id = db_lookup_task(task)) < 0) {
- db_printf("bad task address 0x%x\n", addr);
+ db_printf("bad task address 0x%llx\n", (unsigned long long)addr);
db_error(0);
/*NOTREACHED*/
}
{
int flag;
int act_id;
- thread_act_t thr_act;
+ thread_t thr_act;
flag = OPTION_THREAD_TITLE;
if (db_option(modif, 'u'))
flag |= OPTION_LONG;
if (!have_addr) {
- thr_act = current_act();
- if (thr_act == THR_ACT_NULL) {
+ thr_act = current_thread();
+ if (thr_act == THREAD_NULL) {
db_error("No thr_act\n");
/*NOTREACHED*/
}
} else
- thr_act = (thread_act_t) addr;
+ thr_act = (thread_t) addr;
if ((act_id = db_lookup_act(thr_act)) < 0) {
- db_printf("bad thr_act address %#x\n", addr);
+ db_printf("bad thr_act address %#llX\n", (unsigned long long)addr);
db_error(0);
/*NOTREACHED*/
}
2*sizeof(vm_offset_t), thr_act->task, act_id);
db_print_act(thr_act, act_id, flag);
}
- if (db_option(modif, 'i') && thr_act->thread &&
- (thr_act->thread->state & TH_WAIT) &&
- thr_act->thread->kernel_stack == 0) {
+ if (db_option(modif, 'i') &&
+ (thr_act->state & TH_WAIT) &&
+ thr_act->kernel_stack == 0) {
db_printf("Wait State: option 0x%x\n",
- thr_act->thread->ith_option);
+ thr_act->ith_option);
}
}
task = (task_t) addr;
if ((task_id = db_lookup_task(task)) < 0) {
- db_printf("bad task address 0x%x\n", addr);
+ db_printf("bad task address 0x%llX\n", (unsigned long long)addr);
db_error(0);
/*NOTREACHED*/
}
db_expr_t count,
char * modif)
{
- thread_shuttle_t shuttle;
- thread_act_t thr_act;
+ thread_t thread;
if (have_addr)
- shuttle = (thread_shuttle_t) addr;
+ thread = (thread_t) addr;
else {
- thr_act = current_act();
- if (thr_act == THR_ACT_NULL) {
- db_error("No thr_act\n");
+ thread = current_thread();
+ if (thread == THREAD_NULL) {
+ db_error("No thread\n");
/*NOTREACHED*/
}
- shuttle = thr_act->thread;
- if (shuttle == THREAD_NULL) {
- db_error("No shuttle associated with current thr_act\n");
- /*NOTREACHED*/
- }
- }
- db_printf("shuttle %x:\n", shuttle);
- if (shuttle->top_act == THR_ACT_NULL)
- db_printf(" no activations\n");
- else {
- db_printf(" activations:");
- for (thr_act = shuttle->top_act; thr_act != THR_ACT_NULL;
- thr_act = thr_act->lower) {
- if (thr_act != shuttle->top_act)
- printf(" from");
- printf(" $task%d.%d(%x)", db_lookup_task(thr_act->task),
- db_lookup_act(thr_act), thr_act);
- }
- db_printf("\n");
}
+ db_printf("thread %x:\n", thread);
+ printf(" $task%d.%d(%x)", db_lookup_task(thread->task),
+ db_lookup_act(thread), thread);
+ db_printf("\n");
}
int
int
db_port_iterate(
- thread_act_t thr_act,
+ thread_t thr_act,
boolean_t is_pset,
boolean_t do_output)
{
ipc_port_t
db_lookup_port(
- thread_act_t thr_act,
+ thread_t thr_act,
int id)
{
register ipc_space_t space;
register ipc_entry_t entry;
- if (thr_act == THR_ACT_NULL)
+ if (thr_act == THREAD_NULL)
return(0);
space = thr_act->task->itk_space;
if (id < 0 || id >= space->is_table_size)
db_expr_t count,
char * modif)
{
- thread_act_t thr_act;
+ thread_t thr_act;
if (!have_addr) {
- thr_act = current_act();
- if (thr_act == THR_ACT_NULL) {
+ thr_act = current_thread();
+ if (thr_act == THREAD_NULL) {
db_error("No thr_act\n");
/*NOTREACHED*/
}
} else
- thr_act = (thread_act_t) addr;
+ thr_act = (thread_t) addr;
if (db_lookup_act(thr_act) < 0) {
- db_printf("Bad thr_act address 0x%x\n", addr);
+ db_printf("Bad thr_act address 0x%llX\n", addr);
db_error(0);
/*NOTREACHED*/
}
run_queue_t runq;
boolean_t showedany = FALSE;
-#if NCPUS > 1 /* This code has not been tested. */
queue_iterate(&pset->processors, proc, processor_t, processors) {
runq = &proc->runq;
if (runq->count > 0) {
showedany = TRUE;
}
}
-#endif /* NCPUS > 1 */
-#ifndef NCPUS
-#error NCPUS undefined
-#endif
runq = &pset->runq;
if (runq->count > 0) {
db_printf("PROCESSOR SET %x\n", pset);
db_show_one_runq(
run_queue_t runq)
{
- int i, task_id, thr_act_id;
+ int i, task_id, thread_id;
queue_t q;
- thread_act_t thr_act;
thread_t thread;
task_t task;
if (!queue_empty(q)) {
db_printf("%3d:", i);
queue_iterate(q, thread, thread_t, links) {
- thr_act = thread->top_act;
- task = thr_act->task;
+ task = thread->task;
task_id = db_lookup_task(task);
- thr_act_id = db_lookup_task_act(task, thr_act);
- db_printf(" %d.%d", task_id, thr_act_id);
+ thread_id = db_lookup_task_act(task, thread);
+ db_printf(" %d.%d", task_id, thread_id);
}
db_printf("\n");
}