17c478bd9Sstevel@tonic-gate /* 27c478bd9Sstevel@tonic-gate * CDDL HEADER START 37c478bd9Sstevel@tonic-gate * 47c478bd9Sstevel@tonic-gate * The contents of this file are subject to the terms of the 58793b36bSNick Todd * Common Development and Distribution License (the "License"). 68793b36bSNick Todd * You may not use this file except in compliance with the License. 77c478bd9Sstevel@tonic-gate * 87c478bd9Sstevel@tonic-gate * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 97c478bd9Sstevel@tonic-gate * or http://www.opensolaris.org/os/licensing. 107c478bd9Sstevel@tonic-gate * See the License for the specific language governing permissions 117c478bd9Sstevel@tonic-gate * and limitations under the License. 127c478bd9Sstevel@tonic-gate * 137c478bd9Sstevel@tonic-gate * When distributing Covered Code, include this CDDL HEADER in each 147c478bd9Sstevel@tonic-gate * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 157c478bd9Sstevel@tonic-gate * If applicable, add the following below this CDDL HEADER, with the 167c478bd9Sstevel@tonic-gate * fields enclosed by brackets "[]" replaced with your own identifying 177c478bd9Sstevel@tonic-gate * information: Portions Copyright [yyyy] [name of copyright owner] 187c478bd9Sstevel@tonic-gate * 197c478bd9Sstevel@tonic-gate * CDDL HEADER END 207c478bd9Sstevel@tonic-gate */ 21*2c797a4eSRoger A. Faulkner 227c478bd9Sstevel@tonic-gate /* 23*2c797a4eSRoger A. Faulkner * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 247c478bd9Sstevel@tonic-gate * Use is subject to license terms. 257c478bd9Sstevel@tonic-gate */ 267c478bd9Sstevel@tonic-gate 277c478bd9Sstevel@tonic-gate /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ 287c478bd9Sstevel@tonic-gate /* All Rights Reserved */ 297c478bd9Sstevel@tonic-gate 307c478bd9Sstevel@tonic-gate #ifndef _SYS_OLD_PROCFS_H 317c478bd9Sstevel@tonic-gate #define _SYS_OLD_PROCFS_H 327c478bd9Sstevel@tonic-gate 337c478bd9Sstevel@tonic-gate /* 347c478bd9Sstevel@tonic-gate * This file contains the definitions for the old ioctl()-based 357c478bd9Sstevel@tonic-gate * version of the process file system. It is obsolete but will 367c478bd9Sstevel@tonic-gate * continue to be supported in SunOS until the next major release. 377c478bd9Sstevel@tonic-gate */ 387c478bd9Sstevel@tonic-gate 397c478bd9Sstevel@tonic-gate #include <sys/types.h> 407c478bd9Sstevel@tonic-gate #include <sys/time_impl.h> 417c478bd9Sstevel@tonic-gate #include <sys/signal.h> 427c478bd9Sstevel@tonic-gate #include <sys/siginfo.h> 437c478bd9Sstevel@tonic-gate #include <sys/fault.h> 447c478bd9Sstevel@tonic-gate #include <sys/syscall.h> 457c478bd9Sstevel@tonic-gate #include <sys/procfs_isa.h> 467c478bd9Sstevel@tonic-gate 477c478bd9Sstevel@tonic-gate #ifdef __cplusplus 487c478bd9Sstevel@tonic-gate extern "C" { 497c478bd9Sstevel@tonic-gate #endif 507c478bd9Sstevel@tonic-gate 517c478bd9Sstevel@tonic-gate #if !defined(_LP64) && _FILE_OFFSET_BITS == 64 527c478bd9Sstevel@tonic-gate #error "Cannot use procfs in the large file compilation environment" 537c478bd9Sstevel@tonic-gate #endif 547c478bd9Sstevel@tonic-gate 557c478bd9Sstevel@tonic-gate #if _STRUCTURED_PROC == 0 567c478bd9Sstevel@tonic-gate 577c478bd9Sstevel@tonic-gate /* 58*2c797a4eSRoger A. Faulkner * The old (ioctl-based) and new (structured) /proc interfaces define 59*2c797a4eSRoger A. Faulkner * related structures of the same name, but slightly diferent contents: 60*2c797a4eSRoger A. Faulkner * prmap_t 61*2c797a4eSRoger A. Faulkner * prcred_t 62*2c797a4eSRoger A. Faulkner * This doesn't hurt because you can't include both of these 63*2c797a4eSRoger A. Faulkner * in the same compilation unit: 64*2c797a4eSRoger A. Faulkner * <sys/procfs.h> 65*2c797a4eSRoger A. Faulkner * <sys/old_procfs.h> 66*2c797a4eSRoger A. Faulkner * unless _STRUCTURED_PROC is first defined to be 1. 67*2c797a4eSRoger A. Faulkner * (Including <procfs.h> defines it to be 1.) 68*2c797a4eSRoger A. Faulkner * 69*2c797a4eSRoger A. Faulkner * However, the latest version of lint goes overboard in hunting 70*2c797a4eSRoger A. Faulkner * down and reporting differences in functions and data of the 71*2c797a4eSRoger A. Faulkner * same name across multiple compilation units, even though there 72*2c797a4eSRoger A. Faulkner * is no real problem. To mitigate this, we redefine the old procfs 73*2c797a4eSRoger A. Faulkner * names when performing lint. 74*2c797a4eSRoger A. Faulkner */ 75*2c797a4eSRoger A. Faulkner #if defined(__lint) 76*2c797a4eSRoger A. Faulkner #define prmap Prmap 77*2c797a4eSRoger A. Faulkner #define prmap_t Prmap_t 78*2c797a4eSRoger A. Faulkner #define prcred Prcred 79*2c797a4eSRoger A. Faulkner #define prcred_t Prcred_t 80*2c797a4eSRoger A. Faulkner #endif /* __lint */ 81*2c797a4eSRoger A. Faulkner 82*2c797a4eSRoger A. Faulkner /* 837c478bd9Sstevel@tonic-gate * ioctl codes and system call interfaces for /proc. 847c478bd9Sstevel@tonic-gate */ 857c478bd9Sstevel@tonic-gate 867c478bd9Sstevel@tonic-gate #define PIOC ('q'<<8) 877c478bd9Sstevel@tonic-gate #define PIOCSTATUS (PIOC|1) /* get process status */ 887c478bd9Sstevel@tonic-gate #define PIOCSTOP (PIOC|2) /* post STOP request and... */ 897c478bd9Sstevel@tonic-gate #define PIOCWSTOP (PIOC|3) /* wait for process to STOP */ 907c478bd9Sstevel@tonic-gate #define PIOCRUN (PIOC|4) /* make process runnable */ 917c478bd9Sstevel@tonic-gate #define PIOCGTRACE (PIOC|5) /* get traced signal set */ 927c478bd9Sstevel@tonic-gate #define PIOCSTRACE (PIOC|6) /* set traced signal set */ 937c478bd9Sstevel@tonic-gate #define PIOCSSIG (PIOC|7) /* set current signal */ 947c478bd9Sstevel@tonic-gate #define PIOCKILL (PIOC|8) /* send signal */ 957c478bd9Sstevel@tonic-gate #define PIOCUNKILL (PIOC|9) /* delete a signal */ 967c478bd9Sstevel@tonic-gate #define PIOCGHOLD (PIOC|10) /* get held signal set */ 977c478bd9Sstevel@tonic-gate #define PIOCSHOLD (PIOC|11) /* set held signal set */ 987c478bd9Sstevel@tonic-gate #define PIOCMAXSIG (PIOC|12) /* get max signal number */ 997c478bd9Sstevel@tonic-gate #define PIOCACTION (PIOC|13) /* get signal action structs */ 1007c478bd9Sstevel@tonic-gate #define PIOCGFAULT (PIOC|14) /* get traced fault set */ 1017c478bd9Sstevel@tonic-gate #define PIOCSFAULT (PIOC|15) /* set traced fault set */ 1027c478bd9Sstevel@tonic-gate #define PIOCCFAULT (PIOC|16) /* clear current fault */ 1037c478bd9Sstevel@tonic-gate #define PIOCGENTRY (PIOC|17) /* get syscall entry set */ 1047c478bd9Sstevel@tonic-gate #define PIOCSENTRY (PIOC|18) /* set syscall entry set */ 1057c478bd9Sstevel@tonic-gate #define PIOCGEXIT (PIOC|19) /* get syscall exit set */ 1067c478bd9Sstevel@tonic-gate #define PIOCSEXIT (PIOC|20) /* set syscall exit set */ 1077c478bd9Sstevel@tonic-gate 1087c478bd9Sstevel@tonic-gate /* 1097c478bd9Sstevel@tonic-gate * These four are obsolete (replaced by PIOCSET/PIOCRESET). 1107c478bd9Sstevel@tonic-gate */ 1117c478bd9Sstevel@tonic-gate #define PIOCSFORK (PIOC|21) /* set inherit-on-fork flag */ 1127c478bd9Sstevel@tonic-gate #define PIOCRFORK (PIOC|22) /* reset inherit-on-fork flag */ 1137c478bd9Sstevel@tonic-gate #define PIOCSRLC (PIOC|23) /* set run-on-last-close flag */ 1147c478bd9Sstevel@tonic-gate #define PIOCRRLC (PIOC|24) /* reset run-on-last-close flag */ 1157c478bd9Sstevel@tonic-gate 1167c478bd9Sstevel@tonic-gate #define PIOCGREG (PIOC|25) /* get general registers */ 1177c478bd9Sstevel@tonic-gate #define PIOCSREG (PIOC|26) /* set general registers */ 1187c478bd9Sstevel@tonic-gate #define PIOCGFPREG (PIOC|27) /* get floating-point registers */ 1197c478bd9Sstevel@tonic-gate #define PIOCSFPREG (PIOC|28) /* set floating-point registers */ 1207c478bd9Sstevel@tonic-gate #define PIOCNICE (PIOC|29) /* set nice priority */ 1217c478bd9Sstevel@tonic-gate #define PIOCPSINFO (PIOC|30) /* get ps(1) information */ 1227c478bd9Sstevel@tonic-gate #define PIOCNMAP (PIOC|31) /* get number of memory mappings */ 1237c478bd9Sstevel@tonic-gate #define PIOCMAP (PIOC|32) /* get memory map information */ 1247c478bd9Sstevel@tonic-gate #define PIOCOPENM (PIOC|33) /* open mapped object for reading */ 1257c478bd9Sstevel@tonic-gate #define PIOCCRED (PIOC|34) /* get process credentials */ 1267c478bd9Sstevel@tonic-gate #define PIOCGROUPS (PIOC|35) /* get supplementary groups */ 1277c478bd9Sstevel@tonic-gate #define PIOCGETPR (PIOC|36) /* read struct proc */ 1287c478bd9Sstevel@tonic-gate #define PIOCGETU (PIOC|37) /* read user area */ 1297c478bd9Sstevel@tonic-gate 1307c478bd9Sstevel@tonic-gate /* 1317c478bd9Sstevel@tonic-gate * These are new with SunOS5.0. 1327c478bd9Sstevel@tonic-gate */ 1337c478bd9Sstevel@tonic-gate #define PIOCSET (PIOC|38) /* set process flags */ 1347c478bd9Sstevel@tonic-gate #define PIOCRESET (PIOC|39) /* reset process flags */ 1357c478bd9Sstevel@tonic-gate #define PIOCUSAGE (PIOC|43) /* get resource usage */ 1367c478bd9Sstevel@tonic-gate #define PIOCOPENPD (PIOC|44) /* get page data file descriptor */ 1377c478bd9Sstevel@tonic-gate 1387c478bd9Sstevel@tonic-gate /* 1397c478bd9Sstevel@tonic-gate * Lightweight process interfaces. 1407c478bd9Sstevel@tonic-gate */ 1417c478bd9Sstevel@tonic-gate #define PIOCLWPIDS (PIOC|45) /* get lwp identifiers */ 1427c478bd9Sstevel@tonic-gate #define PIOCOPENLWP (PIOC|46) /* get lwp file descriptor */ 1437c478bd9Sstevel@tonic-gate #define PIOCLSTATUS (PIOC|47) /* get status of all lwps */ 1447c478bd9Sstevel@tonic-gate #define PIOCLUSAGE (PIOC|48) /* get resource usage of all lwps */ 1457c478bd9Sstevel@tonic-gate 1467c478bd9Sstevel@tonic-gate /* 1477c478bd9Sstevel@tonic-gate * SVR4 run-time loader interfaces. 1487c478bd9Sstevel@tonic-gate */ 1497c478bd9Sstevel@tonic-gate #define PIOCNAUXV (PIOC|49) /* get number of aux vector entries */ 1507c478bd9Sstevel@tonic-gate #define PIOCAUXV (PIOC|50) /* get aux vector (see sys/auxv.h) */ 1517c478bd9Sstevel@tonic-gate 1527c478bd9Sstevel@tonic-gate /* 1537c478bd9Sstevel@tonic-gate * extra register state interfaces 1547c478bd9Sstevel@tonic-gate */ 1557c478bd9Sstevel@tonic-gate #define PIOCGXREGSIZE (PIOC|51) /* get extra register state size */ 1567c478bd9Sstevel@tonic-gate #define PIOCGXREG (PIOC|52) /* get extra register state */ 1577c478bd9Sstevel@tonic-gate #define PIOCSXREG (PIOC|53) /* set extra register state */ 1587c478bd9Sstevel@tonic-gate 1597c478bd9Sstevel@tonic-gate /* 1607c478bd9Sstevel@tonic-gate * SPARC-specific interfaces. 1617c478bd9Sstevel@tonic-gate */ 1627c478bd9Sstevel@tonic-gate #define PIOCGWIN (PIOC|101) /* get gwindows_t (see sys/reg.h) */ 1637c478bd9Sstevel@tonic-gate 1647c478bd9Sstevel@tonic-gate /* Process/lwp status structure */ 1657c478bd9Sstevel@tonic-gate 1667c478bd9Sstevel@tonic-gate #define PRCLSZ 8 /* maximum size of scheduling class name */ 1677c478bd9Sstevel@tonic-gate #define PRSYSARGS 8 /* maximum number of syscall arguments */ 1687c478bd9Sstevel@tonic-gate 1697c478bd9Sstevel@tonic-gate #endif /* _STRUCTURED_PROC == 0 */ 1707c478bd9Sstevel@tonic-gate 1717c478bd9Sstevel@tonic-gate typedef struct prstatus { 1727c478bd9Sstevel@tonic-gate int pr_flags; /* Flags (see below) */ 1737c478bd9Sstevel@tonic-gate short pr_why; /* Reason for process stop (if stopped) */ 1747c478bd9Sstevel@tonic-gate short pr_what; /* More detailed reason */ 1757c478bd9Sstevel@tonic-gate siginfo_t pr_info; /* Info associated with signal or fault */ 1767c478bd9Sstevel@tonic-gate short pr_cursig; /* Current signal */ 1777c478bd9Sstevel@tonic-gate ushort_t pr_nlwp; /* Number of lwps in the process */ 1787c478bd9Sstevel@tonic-gate sigset_t pr_sigpend; /* Set of signals pending to the process */ 1797c478bd9Sstevel@tonic-gate sigset_t pr_sighold; /* Set of signals held (blocked) by the lwp */ 1807c478bd9Sstevel@tonic-gate struct sigaltstack pr_altstack; /* Alternate signal stack info */ 1817c478bd9Sstevel@tonic-gate struct sigaction pr_action; /* Signal action for current signal */ 1827c478bd9Sstevel@tonic-gate pid_t pr_pid; /* Process id */ 1837c478bd9Sstevel@tonic-gate pid_t pr_ppid; /* Parent process id */ 1847c478bd9Sstevel@tonic-gate pid_t pr_pgrp; /* Process group id */ 1857c478bd9Sstevel@tonic-gate pid_t pr_sid; /* Session id */ 1867c478bd9Sstevel@tonic-gate timestruc_t pr_utime; /* Process user cpu time */ 1877c478bd9Sstevel@tonic-gate timestruc_t pr_stime; /* Process system cpu time */ 1887c478bd9Sstevel@tonic-gate timestruc_t pr_cutime; /* Sum of children's user times */ 1897c478bd9Sstevel@tonic-gate timestruc_t pr_cstime; /* Sum of children's system times */ 1907c478bd9Sstevel@tonic-gate char pr_clname[PRCLSZ]; /* Scheduling class name */ 1917c478bd9Sstevel@tonic-gate short pr_syscall; /* System call number (if in syscall) */ 1927c478bd9Sstevel@tonic-gate short pr_nsysarg; /* Number of arguments to this syscall */ 1937c478bd9Sstevel@tonic-gate long pr_sysarg[PRSYSARGS]; /* Arguments to this syscall */ 1947c478bd9Sstevel@tonic-gate id_t pr_who; /* Specific lwp identifier */ 1957c478bd9Sstevel@tonic-gate sigset_t pr_lwppend; /* Set of signals pending to the lwp */ 1967c478bd9Sstevel@tonic-gate struct ucontext *pr_oldcontext; /* Address of previous ucontext */ 1977c478bd9Sstevel@tonic-gate caddr_t pr_brkbase; /* Address of the process heap */ 1987c478bd9Sstevel@tonic-gate size_t pr_brksize; /* Size of the process heap, in bytes */ 1997c478bd9Sstevel@tonic-gate caddr_t pr_stkbase; /* Address of the process stack */ 2007c478bd9Sstevel@tonic-gate size_t pr_stksize; /* Size of the process stack, in bytes */ 2017c478bd9Sstevel@tonic-gate short pr_processor; /* processor which last ran this LWP */ 2027c478bd9Sstevel@tonic-gate short pr_bind; /* processor LWP bound to or PBIND_NONE */ 2037c478bd9Sstevel@tonic-gate long pr_instr; /* Current instruction */ 2047c478bd9Sstevel@tonic-gate prgregset_t pr_reg; /* General registers */ 2057c478bd9Sstevel@tonic-gate } prstatus_t; 2067c478bd9Sstevel@tonic-gate 2077c478bd9Sstevel@tonic-gate #if _STRUCTURED_PROC == 0 2087c478bd9Sstevel@tonic-gate 2097c478bd9Sstevel@tonic-gate /* pr_flags */ 2107c478bd9Sstevel@tonic-gate 2117c478bd9Sstevel@tonic-gate #define PR_STOPPED 0x0001 /* lwp is stopped */ 2127c478bd9Sstevel@tonic-gate #define PR_ISTOP 0x0002 /* lwp is stopped on an event of interest */ 2137c478bd9Sstevel@tonic-gate #define PR_DSTOP 0x0004 /* lwp has a stop directive in effect */ 2147c478bd9Sstevel@tonic-gate #define PR_ASLEEP 0x0008 /* lwp is sleeping in a system call */ 2157c478bd9Sstevel@tonic-gate #define PR_FORK 0x0010 /* inherit-on-fork is in effect */ 2167c478bd9Sstevel@tonic-gate #define PR_RLC 0x0020 /* run-on-last-close is in effect */ 2177c478bd9Sstevel@tonic-gate #define PR_PTRACE 0x0040 /* obsolete, never set in SunOS5.0 */ 2187c478bd9Sstevel@tonic-gate #define PR_PCINVAL 0x0080 /* contents of pr_instr undefined */ 2197c478bd9Sstevel@tonic-gate #define PR_ISSYS 0x0100 /* system process */ 2207c478bd9Sstevel@tonic-gate #define PR_STEP 0x0200 /* lwp has a single-step directive in effect */ 2217c478bd9Sstevel@tonic-gate #define PR_KLC 0x0400 /* kill-on-last-close is in effect */ 2227c478bd9Sstevel@tonic-gate #define PR_ASYNC 0x0800 /* asynchronous-stop is in effect */ 2237c478bd9Sstevel@tonic-gate #define PR_PCOMPAT 0x1000 /* ptrace-compatibility mode is in effect */ 2247c478bd9Sstevel@tonic-gate #define PR_MSACCT 0x2000 /* micro-state usage accounting is in effect */ 2257c478bd9Sstevel@tonic-gate #define PR_BPTADJ 0x4000 /* breakpoint trap pc adjustment is in effect */ 2267c478bd9Sstevel@tonic-gate #define PR_ASLWP 0x8000 /* obsolete flag; never set */ 2277c478bd9Sstevel@tonic-gate 2287c478bd9Sstevel@tonic-gate /* Reasons for stopping */ 2297c478bd9Sstevel@tonic-gate 2307c478bd9Sstevel@tonic-gate #define PR_REQUESTED 1 2317c478bd9Sstevel@tonic-gate #define PR_SIGNALLED 2 2327c478bd9Sstevel@tonic-gate #define PR_SYSENTRY 3 2337c478bd9Sstevel@tonic-gate #define PR_SYSEXIT 4 2347c478bd9Sstevel@tonic-gate #define PR_JOBCONTROL 5 2357c478bd9Sstevel@tonic-gate #define PR_FAULTED 6 2367c478bd9Sstevel@tonic-gate #define PR_SUSPENDED 7 2377c478bd9Sstevel@tonic-gate #define PR_CHECKPOINT 8 2387c478bd9Sstevel@tonic-gate 2397c478bd9Sstevel@tonic-gate /* Information for the ps(1) command */ 2407c478bd9Sstevel@tonic-gate 2417c478bd9Sstevel@tonic-gate #define PRFNSZ 16 /* max size of execed filename */ 2427c478bd9Sstevel@tonic-gate #define PRARGSZ 80 /* Number of chars of arguments */ 2437c478bd9Sstevel@tonic-gate 2447c478bd9Sstevel@tonic-gate #endif /* _STRUCTURED_PROC == 0 */ 2457c478bd9Sstevel@tonic-gate 2467c478bd9Sstevel@tonic-gate typedef struct prpsinfo { 2477c478bd9Sstevel@tonic-gate char pr_state; /* numeric process state (see pr_sname) */ 2487c478bd9Sstevel@tonic-gate char pr_sname; /* printable character representing pr_state */ 2497c478bd9Sstevel@tonic-gate char pr_zomb; /* !=0: process terminated but not waited for */ 2507c478bd9Sstevel@tonic-gate char pr_nice; /* nice for cpu usage */ 2517c478bd9Sstevel@tonic-gate uint_t pr_flag; /* process flags */ 2527c478bd9Sstevel@tonic-gate uid_t pr_uid; /* real user id */ 2537c478bd9Sstevel@tonic-gate gid_t pr_gid; /* real group id */ 2547c478bd9Sstevel@tonic-gate pid_t pr_pid; /* unique process id */ 2557c478bd9Sstevel@tonic-gate pid_t pr_ppid; /* process id of parent */ 2567c478bd9Sstevel@tonic-gate pid_t pr_pgrp; /* pid of process group leader */ 2577c478bd9Sstevel@tonic-gate pid_t pr_sid; /* session id */ 2587c478bd9Sstevel@tonic-gate caddr_t pr_addr; /* physical address of process */ 2597c478bd9Sstevel@tonic-gate size_t pr_size; /* size of process image in pages */ 2607c478bd9Sstevel@tonic-gate size_t pr_rssize; /* resident set size in pages */ 2617c478bd9Sstevel@tonic-gate caddr_t pr_wchan; /* wait addr for sleeping process */ 2627c478bd9Sstevel@tonic-gate timestruc_t pr_start; /* process start time, sec+nsec since epoch */ 2637c478bd9Sstevel@tonic-gate timestruc_t pr_time; /* usr+sys cpu time for this process */ 2647c478bd9Sstevel@tonic-gate int pr_pri; /* priority, high value is high priority */ 2657c478bd9Sstevel@tonic-gate char pr_oldpri; /* pre-SVR4, low value is high priority */ 2667c478bd9Sstevel@tonic-gate char pr_cpu; /* pre-SVR4, cpu usage for scheduling */ 2677c478bd9Sstevel@tonic-gate o_dev_t pr_ottydev; /* short tty device number */ 2687c478bd9Sstevel@tonic-gate dev_t pr_lttydev; /* controlling tty device (PRNODEV if none) */ 2697c478bd9Sstevel@tonic-gate char pr_clname[PRCLSZ]; /* scheduling class name */ 2707c478bd9Sstevel@tonic-gate char pr_fname[PRFNSZ]; /* last component of execed pathname */ 2717c478bd9Sstevel@tonic-gate char pr_psargs[PRARGSZ]; /* initial characters of arg list */ 2727c478bd9Sstevel@tonic-gate short pr_syscall; /* system call number (if in syscall) */ 2737c478bd9Sstevel@tonic-gate short pr_fill; 2747c478bd9Sstevel@tonic-gate timestruc_t pr_ctime; /* usr+sys cpu time for reaped children */ 2757c478bd9Sstevel@tonic-gate size_t pr_bysize; /* size of process image in bytes */ 2767c478bd9Sstevel@tonic-gate size_t pr_byrssize; /* resident set size in bytes */ 2777c478bd9Sstevel@tonic-gate int pr_argc; /* initial argument count */ 2787c478bd9Sstevel@tonic-gate char **pr_argv; /* initial argument vector */ 2797c478bd9Sstevel@tonic-gate char **pr_envp; /* initial environment vector */ 2807c478bd9Sstevel@tonic-gate int pr_wstat; /* if zombie, the wait() status */ 2817c478bd9Sstevel@tonic-gate /* The following percent numbers are 16-bit binary */ 2827c478bd9Sstevel@tonic-gate /* fractions [0 .. 1] with the binary point to the */ 2837c478bd9Sstevel@tonic-gate /* right of the high-order bit (one == 0x8000) */ 2847c478bd9Sstevel@tonic-gate ushort_t pr_pctcpu; /* % of recent cpu time, one or all lwps */ 2857c478bd9Sstevel@tonic-gate ushort_t pr_pctmem; /* % of of system memory used by the process */ 2867c478bd9Sstevel@tonic-gate uid_t pr_euid; /* effective user id */ 2877c478bd9Sstevel@tonic-gate gid_t pr_egid; /* effective group id */ 2887c478bd9Sstevel@tonic-gate id_t pr_aslwpid; /* historical; now always zero */ 2897c478bd9Sstevel@tonic-gate char pr_dmodel; /* data model of the process */ 2907c478bd9Sstevel@tonic-gate char pr_pad[3]; 2917c478bd9Sstevel@tonic-gate int pr_filler[6]; /* for future expansion */ 2927c478bd9Sstevel@tonic-gate } prpsinfo_t; 2937c478bd9Sstevel@tonic-gate 2947c478bd9Sstevel@tonic-gate #if _STRUCTURED_PROC == 0 2957c478bd9Sstevel@tonic-gate 2967c478bd9Sstevel@tonic-gate #if !defined(_STYPES) 2977c478bd9Sstevel@tonic-gate #define pr_ttydev pr_lttydev 2987c478bd9Sstevel@tonic-gate #else 2997c478bd9Sstevel@tonic-gate #define pr_ttydev pr_ottydev 3007c478bd9Sstevel@tonic-gate #endif 3017c478bd9Sstevel@tonic-gate 3027c478bd9Sstevel@tonic-gate #define PRNODEV (dev_t)(-1l) /* non-existent device */ 3037c478bd9Sstevel@tonic-gate 3047c478bd9Sstevel@tonic-gate /* 3057c478bd9Sstevel@tonic-gate * See <sys/procfs_isa.h> for possible values of pr_dmodel. 3067c478bd9Sstevel@tonic-gate */ 3077c478bd9Sstevel@tonic-gate 3087c478bd9Sstevel@tonic-gate /* Optional actions to take when process continues */ 3097c478bd9Sstevel@tonic-gate 3107c478bd9Sstevel@tonic-gate typedef struct prrun { 3117c478bd9Sstevel@tonic-gate int pr_flags; /* Flags */ 3127c478bd9Sstevel@tonic-gate sigset_t pr_trace; /* Set of signals to be traced */ 3137c478bd9Sstevel@tonic-gate sigset_t pr_sighold; /* Set of signals to be held */ 3147c478bd9Sstevel@tonic-gate fltset_t pr_fault; /* Set of faults to be traced */ 3157c478bd9Sstevel@tonic-gate caddr_t pr_vaddr; /* Virtual address at which to resume */ 3167c478bd9Sstevel@tonic-gate int pr_filler[8]; /* Filler area for future expansion */ 3177c478bd9Sstevel@tonic-gate } prrun_t; 3187c478bd9Sstevel@tonic-gate 3197c478bd9Sstevel@tonic-gate #define PRCSIG 0x001 /* Clear current signal */ 3207c478bd9Sstevel@tonic-gate #define PRCFAULT 0x002 /* Clear current fault */ 3217c478bd9Sstevel@tonic-gate #define PRSTRACE 0x004 /* Use traced-signal set in pr_trace */ 3227c478bd9Sstevel@tonic-gate #define PRSHOLD 0x008 /* Use held-signal set in pr_sighold */ 3237c478bd9Sstevel@tonic-gate #define PRSFAULT 0x010 /* Use traced-fault set in pr_fault */ 3247c478bd9Sstevel@tonic-gate #define PRSVADDR 0x020 /* Resume at virtual address in pr_vaddr */ 3257c478bd9Sstevel@tonic-gate #define PRSTEP 0x040 /* Direct the lwp to single-step */ 3267c478bd9Sstevel@tonic-gate #define PRSABORT 0x080 /* Abort syscall */ 3277c478bd9Sstevel@tonic-gate #define PRSTOP 0x100 /* Set directed stop request */ 3287c478bd9Sstevel@tonic-gate 3297c478bd9Sstevel@tonic-gate /* Memory-management interface */ 3307c478bd9Sstevel@tonic-gate 3317c478bd9Sstevel@tonic-gate typedef struct prmap { 3327c478bd9Sstevel@tonic-gate caddr_t pr_vaddr; /* Virtual address */ 3337c478bd9Sstevel@tonic-gate size_t pr_size; /* Size of mapping in bytes */ 3347c478bd9Sstevel@tonic-gate off_t pr_off; /* Offset into mapped object, if any */ 3357c478bd9Sstevel@tonic-gate uint_t pr_mflags; /* Protection and attribute flags */ 3367c478bd9Sstevel@tonic-gate uint_t pr_pagesize; /* pagesize (bytes) for this mapping */ 3377c478bd9Sstevel@tonic-gate long pr_filler[3]; /* Filler for future expansion */ 3387c478bd9Sstevel@tonic-gate } prmap_t; 3397c478bd9Sstevel@tonic-gate 3407c478bd9Sstevel@tonic-gate /* Protection and attribute flags */ 3417c478bd9Sstevel@tonic-gate 3427c478bd9Sstevel@tonic-gate #define MA_READ 0x04 /* Readable by the traced process */ 3437c478bd9Sstevel@tonic-gate #define MA_WRITE 0x02 /* Writable by the traced process */ 3447c478bd9Sstevel@tonic-gate #define MA_EXEC 0x01 /* Executable by the traced process */ 3457c478bd9Sstevel@tonic-gate #define MA_SHARED 0x08 /* Changes are shared by mapped object */ 3467c478bd9Sstevel@tonic-gate /* 3477c478bd9Sstevel@tonic-gate * These are obsolete and unreliable. 3487c478bd9Sstevel@tonic-gate * They are included here only for historical compatibility. 3497c478bd9Sstevel@tonic-gate */ 3507c478bd9Sstevel@tonic-gate #define MA_BREAK 0x10 /* Grown by brk(2) */ 3517c478bd9Sstevel@tonic-gate #define MA_STACK 0x20 /* Grown automatically on stack faults */ 3527c478bd9Sstevel@tonic-gate 3537c478bd9Sstevel@tonic-gate /* Process credentials */ 3547c478bd9Sstevel@tonic-gate 3557c478bd9Sstevel@tonic-gate typedef struct prcred { 3567c478bd9Sstevel@tonic-gate uid_t pr_euid; /* Effective user id */ 3577c478bd9Sstevel@tonic-gate uid_t pr_ruid; /* Real user id */ 3587c478bd9Sstevel@tonic-gate uid_t pr_suid; /* Saved user id (from exec) */ 3597c478bd9Sstevel@tonic-gate gid_t pr_egid; /* Effective group id */ 3607c478bd9Sstevel@tonic-gate gid_t pr_rgid; /* Real group id */ 3617c478bd9Sstevel@tonic-gate gid_t pr_sgid; /* Saved group id (from exec) */ 3627c478bd9Sstevel@tonic-gate uint_t pr_ngroups; /* Number of supplementary groups */ 3637c478bd9Sstevel@tonic-gate } prcred_t; 3647c478bd9Sstevel@tonic-gate 3657c478bd9Sstevel@tonic-gate /* Resource usage */ 3667c478bd9Sstevel@tonic-gate 3677c478bd9Sstevel@tonic-gate typedef struct prusage { 3687c478bd9Sstevel@tonic-gate id_t pr_lwpid; /* lwp id. 0: process or defunct */ 3697c478bd9Sstevel@tonic-gate int pr_count; /* number of contributing lwps */ 3707c478bd9Sstevel@tonic-gate timestruc_t pr_tstamp; /* current time stamp */ 3717c478bd9Sstevel@tonic-gate timestruc_t pr_create; /* process/lwp creation time stamp */ 3727c478bd9Sstevel@tonic-gate timestruc_t pr_term; /* process/lwp termination time stamp */ 3737c478bd9Sstevel@tonic-gate timestruc_t pr_rtime; /* total lwp real (elapsed) time */ 3747c478bd9Sstevel@tonic-gate timestruc_t pr_utime; /* user level CPU time */ 3757c478bd9Sstevel@tonic-gate timestruc_t pr_stime; /* system call CPU time */ 3767c478bd9Sstevel@tonic-gate timestruc_t pr_ttime; /* other system trap CPU time */ 3777c478bd9Sstevel@tonic-gate timestruc_t pr_tftime; /* text page fault sleep time */ 3787c478bd9Sstevel@tonic-gate timestruc_t pr_dftime; /* data page fault sleep time */ 3797c478bd9Sstevel@tonic-gate timestruc_t pr_kftime; /* kernel page fault sleep time */ 3807c478bd9Sstevel@tonic-gate timestruc_t pr_ltime; /* user lock wait sleep time */ 3817c478bd9Sstevel@tonic-gate timestruc_t pr_slptime; /* all other sleep time */ 3827c478bd9Sstevel@tonic-gate timestruc_t pr_wtime; /* wait-cpu (latency) time */ 3837c478bd9Sstevel@tonic-gate timestruc_t pr_stoptime; /* stopped time */ 3847c478bd9Sstevel@tonic-gate timestruc_t filltime[6]; /* filler for future expansion */ 3857c478bd9Sstevel@tonic-gate ulong_t pr_minf; /* minor page faults */ 3867c478bd9Sstevel@tonic-gate ulong_t pr_majf; /* major page faults */ 3877c478bd9Sstevel@tonic-gate ulong_t pr_nswap; /* swaps */ 3887c478bd9Sstevel@tonic-gate ulong_t pr_inblk; /* input blocks */ 3897c478bd9Sstevel@tonic-gate ulong_t pr_oublk; /* output blocks */ 3907c478bd9Sstevel@tonic-gate ulong_t pr_msnd; /* messages sent */ 3917c478bd9Sstevel@tonic-gate ulong_t pr_mrcv; /* messages received */ 3927c478bd9Sstevel@tonic-gate ulong_t pr_sigs; /* signals received */ 3937c478bd9Sstevel@tonic-gate ulong_t pr_vctx; /* voluntary context switches */ 3947c478bd9Sstevel@tonic-gate ulong_t pr_ictx; /* involuntary context switches */ 3957c478bd9Sstevel@tonic-gate ulong_t pr_sysc; /* system calls */ 3967c478bd9Sstevel@tonic-gate ulong_t pr_ioch; /* chars read and written */ 3977c478bd9Sstevel@tonic-gate ulong_t filler[10]; /* filler for future expansion */ 3987c478bd9Sstevel@tonic-gate } prusage_t; 3997c478bd9Sstevel@tonic-gate 4007c478bd9Sstevel@tonic-gate /* Page data */ 4017c478bd9Sstevel@tonic-gate 4027c478bd9Sstevel@tonic-gate /* page data file header */ 4037c478bd9Sstevel@tonic-gate typedef struct prpageheader { 4047c478bd9Sstevel@tonic-gate timestruc_t pr_tstamp; /* real time stamp */ 4057c478bd9Sstevel@tonic-gate ulong_t pr_nmap; /* number of address space mappings */ 4067c478bd9Sstevel@tonic-gate ulong_t pr_npage; /* total number of pages */ 4077c478bd9Sstevel@tonic-gate } prpageheader_t; 4087c478bd9Sstevel@tonic-gate 4097c478bd9Sstevel@tonic-gate /* page data mapping header */ 4107c478bd9Sstevel@tonic-gate typedef struct prasmap { 4117c478bd9Sstevel@tonic-gate caddr_t pr_vaddr; /* virtual address */ 4127c478bd9Sstevel@tonic-gate size_t pr_npage; /* number of pages in mapping */ 4137c478bd9Sstevel@tonic-gate off_t pr_off; /* offset into mapped object, if any */ 4147c478bd9Sstevel@tonic-gate uint_t pr_mflags; /* protection and attribute flags */ 4157c478bd9Sstevel@tonic-gate uint_t pr_pagesize; /* pagesize (bytes) for this mapping */ 4167c478bd9Sstevel@tonic-gate long pr_filler[3]; /* filler for future expansion */ 4177c478bd9Sstevel@tonic-gate } prasmap_t; 4187c478bd9Sstevel@tonic-gate 4197c478bd9Sstevel@tonic-gate /* 4207c478bd9Sstevel@tonic-gate * npage bytes (rounded up to a sizeof (long)-byte boundary) follow 4217c478bd9Sstevel@tonic-gate * each mapping header, containing zero or more of these flags. 4227c478bd9Sstevel@tonic-gate */ 4237c478bd9Sstevel@tonic-gate #define PG_REFERENCED 0x02 /* page referenced since last read */ 4247c478bd9Sstevel@tonic-gate #define PG_MODIFIED 0x01 /* page modified since last read */ 4257c478bd9Sstevel@tonic-gate #define PG_HWMAPPED 0x04 /* page is present and mapped */ 4267c478bd9Sstevel@tonic-gate 4277c478bd9Sstevel@tonic-gate /* 4287c478bd9Sstevel@tonic-gate * Macros for manipulating sets of flags. 4297c478bd9Sstevel@tonic-gate * sp must be a pointer to one of sigset_t, fltset_t, or sysset_t. 4307c478bd9Sstevel@tonic-gate * flag must be a member of the enumeration corresponding to *sp. 4317c478bd9Sstevel@tonic-gate */ 4327c478bd9Sstevel@tonic-gate 4337c478bd9Sstevel@tonic-gate /* turn on all flags in set */ 4347c478bd9Sstevel@tonic-gate #define prfillset(sp) \ 4357c478bd9Sstevel@tonic-gate { register int _i_ = sizeof (*(sp))/sizeof (uint32_t); \ 4367c478bd9Sstevel@tonic-gate while (_i_) ((uint32_t *)(sp))[--_i_] = (uint32_t)0xFFFFFFFF; } 4377c478bd9Sstevel@tonic-gate 4387c478bd9Sstevel@tonic-gate /* turn off all flags in set */ 4397c478bd9Sstevel@tonic-gate #define premptyset(sp) \ 4407c478bd9Sstevel@tonic-gate { register int _i_ = sizeof (*(sp))/sizeof (uint32_t); \ 4417c478bd9Sstevel@tonic-gate while (_i_) ((uint32_t *)(sp))[--_i_] = (uint32_t)0; } 4427c478bd9Sstevel@tonic-gate 4437c478bd9Sstevel@tonic-gate /* turn on specified flag in set */ 4447c478bd9Sstevel@tonic-gate #define praddset(sp, flag) \ 4457c478bd9Sstevel@tonic-gate ((void)(((unsigned)((flag)-1) < 32*sizeof (*(sp))/sizeof (uint32_t)) ? \ 4467c478bd9Sstevel@tonic-gate (((uint32_t *)(sp))[((flag)-1)/32] |= (1UL<<(((flag)-1)%32))) : 0)) 4477c478bd9Sstevel@tonic-gate 4487c478bd9Sstevel@tonic-gate /* turn off specified flag in set */ 4497c478bd9Sstevel@tonic-gate #define prdelset(sp, flag) \ 4507c478bd9Sstevel@tonic-gate ((void)(((unsigned)((flag)-1) < 32*sizeof (*(sp))/sizeof (uint32_t)) ? \ 4517c478bd9Sstevel@tonic-gate (((uint32_t *)(sp))[((flag)-1)/32] &= ~(1UL<<(((flag)-1)%32))) : 0)) 4527c478bd9Sstevel@tonic-gate 4537c478bd9Sstevel@tonic-gate /* query: != 0 iff flag is turned on in set */ 4547c478bd9Sstevel@tonic-gate #define prismember(sp, flag) \ 4557c478bd9Sstevel@tonic-gate (((unsigned)((flag)-1) < 32*sizeof (*(sp))/sizeof (uint32_t)) && \ 4567c478bd9Sstevel@tonic-gate (((uint32_t *)(sp))[((flag)-1)/32] & (1UL<<(((flag)-1)%32)))) 4577c478bd9Sstevel@tonic-gate 4587c478bd9Sstevel@tonic-gate #endif /* _STRUCTURED_PROC == 0 */ 4597c478bd9Sstevel@tonic-gate 4607c478bd9Sstevel@tonic-gate #ifdef _SYSCALL32 4617c478bd9Sstevel@tonic-gate 4627c478bd9Sstevel@tonic-gate #if _STRUCTURED_PROC == 0 4637c478bd9Sstevel@tonic-gate 4647c478bd9Sstevel@tonic-gate /* 4657c478bd9Sstevel@tonic-gate * dev32_t version of PRNODEV 4667c478bd9Sstevel@tonic-gate */ 4677c478bd9Sstevel@tonic-gate #define PRNODEV32 (dev32_t)(-1) 4687c478bd9Sstevel@tonic-gate 4697c478bd9Sstevel@tonic-gate /* 4707c478bd9Sstevel@tonic-gate * Kernel view of structures used by _ILP32 programs. 4717c478bd9Sstevel@tonic-gate */ 4727c478bd9Sstevel@tonic-gate 4737c478bd9Sstevel@tonic-gate #endif /* _STRUCTURED_PROC == 0 */ 4747c478bd9Sstevel@tonic-gate 4757c478bd9Sstevel@tonic-gate typedef struct prstatus32 { 4767c478bd9Sstevel@tonic-gate int32_t pr_flags; /* Flags */ 4777c478bd9Sstevel@tonic-gate short pr_why; /* Reason for process stop (if stopped) */ 4787c478bd9Sstevel@tonic-gate short pr_what; /* More detailed reason */ 4797c478bd9Sstevel@tonic-gate siginfo32_t pr_info; /* Info associated with signal or fault */ 4807c478bd9Sstevel@tonic-gate short pr_cursig; /* Current signal */ 4817c478bd9Sstevel@tonic-gate ushort_t pr_nlwp; /* Number of lwps in the process */ 4827c478bd9Sstevel@tonic-gate sigset_t pr_sigpend; /* Set of signals pending to the process */ 4837c478bd9Sstevel@tonic-gate sigset_t pr_sighold; /* Set of signals held (blocked) by the lwp */ 4847c478bd9Sstevel@tonic-gate struct sigaltstack32 pr_altstack; /* Alternate signal stack info */ 4857c478bd9Sstevel@tonic-gate struct sigaction32 pr_action; /* Signal action for current signal */ 4867c478bd9Sstevel@tonic-gate pid32_t pr_pid; /* Process id */ 4877c478bd9Sstevel@tonic-gate pid32_t pr_ppid; /* Parent process id */ 4887c478bd9Sstevel@tonic-gate pid32_t pr_pgrp; /* Process group id */ 4897c478bd9Sstevel@tonic-gate pid32_t pr_sid; /* Session id */ 4907c478bd9Sstevel@tonic-gate timestruc32_t pr_utime; /* Process user cpu time */ 4917c478bd9Sstevel@tonic-gate timestruc32_t pr_stime; /* Process system cpu time */ 4927c478bd9Sstevel@tonic-gate timestruc32_t pr_cutime; /* Sum of children's user times */ 4937c478bd9Sstevel@tonic-gate timestruc32_t pr_cstime; /* Sum of children's system times */ 4947c478bd9Sstevel@tonic-gate char pr_clname[PRCLSZ]; /* Scheduling class name */ 4957c478bd9Sstevel@tonic-gate short pr_syscall; /* System call number (if in syscall) */ 4967c478bd9Sstevel@tonic-gate short pr_nsysarg; /* Number of arguments to this syscall */ 4977c478bd9Sstevel@tonic-gate int32_t pr_sysarg[PRSYSARGS]; /* Arguments to this syscall */ 4987c478bd9Sstevel@tonic-gate id32_t pr_who; /* Specific lwp identifier */ 4997c478bd9Sstevel@tonic-gate sigset_t pr_lwppend; /* Set of signals pending to the lwp */ 5007c478bd9Sstevel@tonic-gate caddr32_t pr_oldcontext; /* Address of previous ucontext */ 5017c478bd9Sstevel@tonic-gate caddr32_t pr_brkbase; /* Address of the process heap */ 5027c478bd9Sstevel@tonic-gate size32_t pr_brksize; /* Size of the process heap, in bytes */ 5037c478bd9Sstevel@tonic-gate caddr32_t pr_stkbase; /* Address of the process stack */ 5047c478bd9Sstevel@tonic-gate size32_t pr_stksize; /* Size of the process stack, in bytes */ 5057c478bd9Sstevel@tonic-gate short pr_processor; /* processor which last ran this LWP */ 5067c478bd9Sstevel@tonic-gate short pr_bind; /* processor LWP bound to or PBIND_NONE */ 5077c478bd9Sstevel@tonic-gate int32_t pr_instr; /* Current instruction */ 5087c478bd9Sstevel@tonic-gate prgregset32_t pr_reg; /* General registers */ 5097c478bd9Sstevel@tonic-gate } prstatus32_t; 5107c478bd9Sstevel@tonic-gate 5117c478bd9Sstevel@tonic-gate typedef struct prpsinfo32 { 5127c478bd9Sstevel@tonic-gate char pr_state; /* numeric process state (see pr_sname) */ 5137c478bd9Sstevel@tonic-gate char pr_sname; /* printable character representing pr_state */ 5147c478bd9Sstevel@tonic-gate char pr_zomb; /* !=0: process terminated but not waited for */ 5157c478bd9Sstevel@tonic-gate char pr_nice; /* nice for cpu usage */ 5167c478bd9Sstevel@tonic-gate uint32_t pr_flag; /* process flags */ 5177c478bd9Sstevel@tonic-gate uid32_t pr_uid; /* real user id */ 5187c478bd9Sstevel@tonic-gate gid32_t pr_gid; /* real group id */ 5197c478bd9Sstevel@tonic-gate pid32_t pr_pid; /* unique process id */ 5207c478bd9Sstevel@tonic-gate pid32_t pr_ppid; /* process id of parent */ 5217c478bd9Sstevel@tonic-gate pid32_t pr_pgrp; /* pid of process group leader */ 5227c478bd9Sstevel@tonic-gate pid32_t pr_sid; /* session id */ 5237c478bd9Sstevel@tonic-gate caddr32_t pr_addr; /* physical address of process */ 5247c478bd9Sstevel@tonic-gate size32_t pr_size; /* size of process image in pages */ 5257c478bd9Sstevel@tonic-gate size32_t pr_rssize; /* resident set size in pages */ 5267c478bd9Sstevel@tonic-gate caddr32_t pr_wchan; /* wait addr for sleeping process */ 5277c478bd9Sstevel@tonic-gate timestruc32_t pr_start; /* process start time, sec+nsec since epoch */ 5287c478bd9Sstevel@tonic-gate timestruc32_t pr_time; /* usr+sys cpu time for this process */ 5297c478bd9Sstevel@tonic-gate int32_t pr_pri; /* priority, high value is high priority */ 5307c478bd9Sstevel@tonic-gate char pr_oldpri; /* pre-SVR4, low value is high priority */ 5317c478bd9Sstevel@tonic-gate char pr_cpu; /* pre-SVR4, cpu usage for scheduling */ 5327c478bd9Sstevel@tonic-gate o_dev_t pr_ottydev; /* short tty device number */ 5337c478bd9Sstevel@tonic-gate dev32_t pr_lttydev; /* controlling tty device (PRNODEV if none) */ 5347c478bd9Sstevel@tonic-gate char pr_clname[PRCLSZ]; /* scheduling class name */ 5357c478bd9Sstevel@tonic-gate char pr_fname[PRFNSZ]; /* last component of execed pathname */ 5367c478bd9Sstevel@tonic-gate char pr_psargs[PRARGSZ]; /* initial characters of arg list */ 5377c478bd9Sstevel@tonic-gate short pr_syscall; /* system call number (if in syscall) */ 5387c478bd9Sstevel@tonic-gate short pr_fill; 5397c478bd9Sstevel@tonic-gate timestruc32_t pr_ctime; /* usr+sys cpu time for reaped children */ 5407c478bd9Sstevel@tonic-gate size32_t pr_bysize; /* size of process image in bytes */ 5417c478bd9Sstevel@tonic-gate size32_t pr_byrssize; /* resident set size in bytes */ 5427c478bd9Sstevel@tonic-gate int pr_argc; /* initial argument count */ 5437c478bd9Sstevel@tonic-gate caddr32_t pr_argv; /* initial argument vector */ 5447c478bd9Sstevel@tonic-gate caddr32_t pr_envp; /* initial environment vector */ 5457c478bd9Sstevel@tonic-gate int pr_wstat; /* if zombie, the wait() status */ 5467c478bd9Sstevel@tonic-gate ushort_t pr_pctcpu; /* % of recent cpu time, one or all lwps */ 5477c478bd9Sstevel@tonic-gate ushort_t pr_pctmem; /* % of of system memory used by the process */ 5487c478bd9Sstevel@tonic-gate uid32_t pr_euid; /* effective user id */ 5497c478bd9Sstevel@tonic-gate gid32_t pr_egid; /* effective group id */ 5507c478bd9Sstevel@tonic-gate id32_t pr_aslwpid; /* historical; now always zero */ 5517c478bd9Sstevel@tonic-gate char pr_dmodel; /* data model of the process */ 5527c478bd9Sstevel@tonic-gate char pr_pad[3]; 5537c478bd9Sstevel@tonic-gate int32_t pr_filler[6]; /* for future expansion */ 5547c478bd9Sstevel@tonic-gate } prpsinfo32_t; 5557c478bd9Sstevel@tonic-gate 5567c478bd9Sstevel@tonic-gate #if _STRUCTURED_PROC == 0 5577c478bd9Sstevel@tonic-gate 5587c478bd9Sstevel@tonic-gate typedef struct prrun32 { 5597c478bd9Sstevel@tonic-gate int32_t pr_flags; /* Flags */ 5607c478bd9Sstevel@tonic-gate sigset_t pr_trace; /* Set of signals to be traced */ 5617c478bd9Sstevel@tonic-gate sigset_t pr_sighold; /* Set of signals to be held */ 5627c478bd9Sstevel@tonic-gate fltset_t pr_fault; /* Set of faults to be traced */ 5637c478bd9Sstevel@tonic-gate caddr32_t pr_vaddr; /* Virtual address at which to resume */ 5647c478bd9Sstevel@tonic-gate int32_t pr_filler[8]; /* Filler area for future expansion */ 5657c478bd9Sstevel@tonic-gate } prrun32_t; 5667c478bd9Sstevel@tonic-gate 5677c478bd9Sstevel@tonic-gate typedef struct ioc_prmap32 { 5687c478bd9Sstevel@tonic-gate caddr32_t pr_vaddr; /* Virtual address */ 5697c478bd9Sstevel@tonic-gate size32_t pr_size; /* Size of mapping in bytes */ 5707c478bd9Sstevel@tonic-gate off32_t pr_off; /* Offset into mapped object, if any */ 5717c478bd9Sstevel@tonic-gate uint32_t pr_mflags; /* Protection and attribute flags */ 5727c478bd9Sstevel@tonic-gate uint32_t pr_pagesize; /* pagesize (bytes) for this mapping */ 5737c478bd9Sstevel@tonic-gate int32_t pr_filler[3]; /* Filler for future expansion */ 5747c478bd9Sstevel@tonic-gate } ioc_prmap32_t; 5757c478bd9Sstevel@tonic-gate 5767c478bd9Sstevel@tonic-gate typedef struct prusage32 { 5777c478bd9Sstevel@tonic-gate id32_t pr_lwpid; /* lwp id. 0: process or defunct */ 5787c478bd9Sstevel@tonic-gate int32_t pr_count; /* number of contributing lwps */ 5797c478bd9Sstevel@tonic-gate timestruc32_t pr_tstamp; /* current time stamp */ 5807c478bd9Sstevel@tonic-gate timestruc32_t pr_create; /* process/lwp creation time stamp */ 5817c478bd9Sstevel@tonic-gate timestruc32_t pr_term; /* process/lwp termination time stamp */ 5827c478bd9Sstevel@tonic-gate timestruc32_t pr_rtime; /* total lwp real (elapsed) time */ 5837c478bd9Sstevel@tonic-gate timestruc32_t pr_utime; /* user level cpu time */ 5847c478bd9Sstevel@tonic-gate timestruc32_t pr_stime; /* system call cpu time */ 5857c478bd9Sstevel@tonic-gate timestruc32_t pr_ttime; /* other system trap cpu time */ 5867c478bd9Sstevel@tonic-gate timestruc32_t pr_tftime; /* text page fault sleep time */ 5877c478bd9Sstevel@tonic-gate timestruc32_t pr_dftime; /* data page fault sleep time */ 5887c478bd9Sstevel@tonic-gate timestruc32_t pr_kftime; /* kernel page fault sleep time */ 5897c478bd9Sstevel@tonic-gate timestruc32_t pr_ltime; /* user lock wait sleep time */ 5907c478bd9Sstevel@tonic-gate timestruc32_t pr_slptime; /* all other sleep time */ 5917c478bd9Sstevel@tonic-gate timestruc32_t pr_wtime; /* wait-cpu (latency) time */ 5927c478bd9Sstevel@tonic-gate timestruc32_t pr_stoptime; /* stopped time */ 5937c478bd9Sstevel@tonic-gate timestruc32_t filltime[6]; /* filler for future expansion */ 5947c478bd9Sstevel@tonic-gate uint32_t pr_minf; /* minor page faults */ 5957c478bd9Sstevel@tonic-gate uint32_t pr_majf; /* major page faults */ 5967c478bd9Sstevel@tonic-gate uint32_t pr_nswap; /* swaps */ 5977c478bd9Sstevel@tonic-gate uint32_t pr_inblk; /* input blocks */ 5987c478bd9Sstevel@tonic-gate uint32_t pr_oublk; /* output blocks */ 5997c478bd9Sstevel@tonic-gate uint32_t pr_msnd; /* messages sent */ 6007c478bd9Sstevel@tonic-gate uint32_t pr_mrcv; /* messages received */ 6017c478bd9Sstevel@tonic-gate uint32_t pr_sigs; /* signals received */ 6027c478bd9Sstevel@tonic-gate uint32_t pr_vctx; /* voluntary context switches */ 6037c478bd9Sstevel@tonic-gate uint32_t pr_ictx; /* involuntary context switches */ 6047c478bd9Sstevel@tonic-gate uint32_t pr_sysc; /* system calls */ 6057c478bd9Sstevel@tonic-gate uint32_t pr_ioch; /* chars read and written */ 6067c478bd9Sstevel@tonic-gate uint32_t filler[10]; /* filler for future expansion */ 6077c478bd9Sstevel@tonic-gate } prusage32_t; 6087c478bd9Sstevel@tonic-gate 6097c478bd9Sstevel@tonic-gate typedef struct ioc_prpageheader32 { 6107c478bd9Sstevel@tonic-gate timestruc32_t pr_tstamp; /* real time stamp */ 6117c478bd9Sstevel@tonic-gate uint32_t pr_nmap; /* number of address space mappings */ 6127c478bd9Sstevel@tonic-gate uint32_t pr_npage; /* total number of pages */ 6137c478bd9Sstevel@tonic-gate } ioc_prpageheader32_t; 6147c478bd9Sstevel@tonic-gate 6157c478bd9Sstevel@tonic-gate typedef struct ioc_prasmap32 { 6167c478bd9Sstevel@tonic-gate caddr32_t pr_vaddr; /* virtual address */ 6177c478bd9Sstevel@tonic-gate size32_t pr_npage; /* number of pages in mapping */ 6187c478bd9Sstevel@tonic-gate off32_t pr_off; /* offset into mapped object, if any */ 6197c478bd9Sstevel@tonic-gate uint32_t pr_mflags; /* protection and attribute flags */ 6207c478bd9Sstevel@tonic-gate uint32_t pr_pagesize; /* pagesize (bytes) for this mapping */ 6217c478bd9Sstevel@tonic-gate int32_t pr_filler[3]; /* filler for future expansion */ 6227c478bd9Sstevel@tonic-gate } ioc_prasmap32_t; 6237c478bd9Sstevel@tonic-gate 6247c478bd9Sstevel@tonic-gate #endif /* _STRUCTURED_PROC == 0 */ 6257c478bd9Sstevel@tonic-gate 6267c478bd9Sstevel@tonic-gate #endif /* _SYSCALL32 */ 6277c478bd9Sstevel@tonic-gate 6287c478bd9Sstevel@tonic-gate #ifdef __cplusplus 6297c478bd9Sstevel@tonic-gate } 6307c478bd9Sstevel@tonic-gate #endif 6317c478bd9Sstevel@tonic-gate 6327c478bd9Sstevel@tonic-gate #endif /* _SYS_OLD_PROCFS_H */ 633