69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden/*
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden * This file and its contents are supplied under the terms of the
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden * Common Development and Distribution License ("CDDL"), version 1.0.
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden * You may only use this file in accordance with the terms of version
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden * 1.0 of the CDDL.
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden *
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden * A full copy of the text of the CDDL should have accompanied this
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden * source. A copy of the CDDL is also available via the Internet at
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden * http://www.illumos.org/license/CDDL.
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden */
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden/*
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden * Copyright (c) 2013 by Delphix. All rights reserved.
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden */
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden#ifndef _MDB_GCORE_H
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden#define _MDB_GCORE_H
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden/*
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden * The kernel has its own definition of exit which has a different signature
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden * than the user space definition. This seems to be the standard way to deal
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden * with this.
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden */
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden#define exit kern_exit
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden#include <sys/cpuvar.h>
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden#include <sys/cred_impl.h>
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden#include <sys/procfs.h>
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden#include <vm/anon.h>
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden#undef exit
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden/* mdb versions of kernel structures used for ctf read calls */
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Sidentypedef struct mdb_proc {
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uintptr_t p_as;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uintptr_t p_brkbase;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden size_t p_brksize;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uintptr_t p_usrstack;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden size_t p_stksize;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden user_t p_user;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uintptr_t p_agenttp;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uintptr_t p_tlist;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uintptr_t p_zone;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uintptr_t p_ldt;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden kcondvar_t p_holdlwps;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden int p_lwpcnt;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uintptr_t p_lwpdir;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uint_t p_lwpdir_sz;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uintptr_t p_cred;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uint_t p_flag;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden int p_zombcnt;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uintptr_t p_pidp;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden pid_t p_ppid;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uintptr_t p_pgidp;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uintptr_t p_sessp;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uintptr_t p_task;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uintptr_t p_pool;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden model_t p_model;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden char p_wcode;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden ushort_t p_ldtlimit;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uintptr_t p_exec;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uint_t p_proc_flag;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden ushort_t p_pidflag;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden k_sigset_t p_ignore;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden k_sigset_t p_siginfo;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden k_sigset_t p_sig;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden k_sigset_t p_sigmask;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden k_fltset_t p_fltmask;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden int p_wdata;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden} mdb_proc_t;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Sidentypedef struct mdb_kthread {
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden ushort_t t_proc_flag;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uint_t t_state;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden lwpchan_t t_lwpchan;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden ushort_t t_whystop;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uint8_t t_dtrace_stop;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uintptr_t t_forw;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uintptr_t t_lwp;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden id_t t_tid;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden short t_sysnum;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden pri_t t_pri;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden time_t t_start;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden id_t t_cid;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uintptr_t t_cpu;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden int t_bind_pset;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden short t_bind_cpu;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uintptr_t t_lpl;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden ushort_t t_schedflag;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden ushort_t t_whatstop;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden k_sigset_t t_sig;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uintptr_t t_schedctl;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden k_sigset_t t_hold;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden hrtime_t t_stoptime;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden} mdb_kthread_t;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Sidentypedef struct mdb_seg {
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uintptr_t s_base;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden size_t s_size;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uintptr_t s_ops;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uintptr_t s_data;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uintptr_t s_as;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden} mdb_seg_t;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Sidentypedef struct mdb_as {
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uintptr_t a_proc;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden} mdb_as_t;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Sidentypedef struct mdb_segvn_data {
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uintptr_t vp;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uint64_t offset;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uint16_t flags;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uint8_t pageprot;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uint8_t prot;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uintptr_t amp;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden struct vpage *vpage;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uint64_t anon_index;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uint8_t type;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden} mdb_segvn_data_t;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Sidentypedef struct mdb_vnode {
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden enum vtype v_type;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uintptr_t v_data;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uintptr_t v_op;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uintptr_t v_path;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden} mdb_vnode_t;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Sidentypedef struct mdb_znode {
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uint64_t z_size;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden} mdb_znode_t;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Sidentypedef struct mdb_tmpnode {
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden vattr_t tn_attr;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden} mdb_tmpnode_t;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Sidentypedef struct mdb_vnodeops {
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uintptr_t vnop_name;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden} mdb_vnodeops_t;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Sidentypedef struct mdb_shm_data {
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uintptr_t shm_sptseg;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden} mdb_shm_data_t;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Sidentypedef struct mdb_watched_page {
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uintptr_t wp_vaddr;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uint8_t wp_oprot;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden} mdb_watched_page_t;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Sidentypedef struct mdb_pid {
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden pid_t pid_id;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden} mdb_pid_t;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Sidentypedef struct mdb_sess {
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uintptr_t s_sidp;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden} mdb_sess_t;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Sidentypedef struct mdb_task {
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden taskid_t tk_tkid;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uintptr_t tk_proj;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden} mdb_task_t;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Sidentypedef struct mdb_kproject {
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden projid_t kpj_id;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden} mdb_kproject_t;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Sidentypedef struct mdb_zone {
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden zoneid_t zone_id;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uintptr_t zone_name;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden} mdb_zone_t;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Sidentypedef struct mdb_sc_shared {
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden char sc_sigblock;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden} mdb_sc_shared_t;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Sidentypedef struct mdb_klwp {
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uintptr_t lwp_regs;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden struct pcb lwp_pcb;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uchar_t lwp_asleep;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uchar_t lwp_cursig;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uintptr_t lwp_curinfo;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden k_siginfo_t lwp_siginfo;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden stack_t lwp_sigaltstack;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uintptr_t lwp_oldcontext;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden short lwp_badpriv;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uintptr_t lwp_ustack;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden char lwp_eosys;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden} mdb_klwp_t;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Sidentypedef struct mdb_cpu {
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden processorid_t cpu_id;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden} mdb_cpu_t;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Sidentypedef struct mdb_lpl {
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden lgrp_id_t lpl_lgrpid;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden} mdb_lpl_t;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Sidentypedef struct mdb_sigqueue {
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden k_siginfo_t sq_info;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden} mdb_sigqueue_t;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Sidentypedef struct mdb_pool {
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden poolid_t pool_id;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden} mdb_pool_t;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Sidentypedef struct mdb_amp {
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uintptr_t ahp;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden} mdb_amp_t;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Sidentypedef struct mdb_anon_hdr {
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden pgcnt_t size;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uintptr_t array_chunk;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden int flags;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden} mdb_anon_hdr_t;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Sidentypedef struct mdb_anon {
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uintptr_t an_vp;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden anoff_t an_off;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden} mdb_anon_t;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden/* Used to construct a linked list of prmap_ts */
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Sidentypedef struct prmap_node {
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden struct prmap_node *next;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden prmap_t m;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden} prmap_node_t;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden/* Fields common to psinfo_t and pstatus_t */
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Sidentypedef struct pcommon {
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden int pc_nlwp;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden int pc_nzomb;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden pid_t pc_pid;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden pid_t pc_ppid;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden pid_t pc_pgid;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden pid_t pc_sid;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden taskid_t pc_taskid;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden projid_t pc_projid;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden zoneid_t pc_zoneid;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden char pc_dmodel;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden} pcommon_t;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden/* AVL walk callback structures */
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Sidentypedef struct read_maps_cbarg {
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden mdb_proc_t *p;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uintptr_t brkseg;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uintptr_t stkseg;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden prmap_node_t *map_head;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden prmap_node_t *map_tail;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden int map_len;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden} read_maps_cbarg_t;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Sidentypedef struct as_segat_cbarg {
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uintptr_t addr;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uintptr_t res;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden} as_segat_cbarg_t;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Sidentypedef struct getwatchprot_cbarg {
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden uintptr_t wp_vaddr;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden mdb_watched_page_t wp;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden boolean_t found;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden} getwatchprot_cbarg_t;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Sidenstruct gcore_segops;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Sidentypedef struct gcore_seg {
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden mdb_seg_t *gs_seg;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden void *gs_data;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden struct gcore_segops *gs_ops;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden} gcore_seg_t;
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden/*
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden * These are the ISA-dependent functions that need to be
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden * implemented for ::gcore.
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden */
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Sidenextern uintptr_t gcore_prgetstackbase(mdb_proc_t *);
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Sidenextern int gcore_prfetchinstr(mdb_klwp_t *, ulong_t *);
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Sidenextern int gcore_prisstep(mdb_klwp_t *);
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Sidenextern void gcore_getgregs(mdb_klwp_t *, gregset_t);
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Sidenextern int gcore_prgetrvals(mdb_klwp_t *, long *, long *);
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden
69a119caa6570c7077699161b7c28b6ee9f8b0f4Christopher Siden#endif /* _MDB_GCORE_H */