diff options
author | stevel@tonic-gate <none@none> | 2005-06-14 00:00:00 -0700 |
---|---|---|
committer | stevel@tonic-gate <none@none> | 2005-06-14 00:00:00 -0700 |
commit | 7c478bd95313f5f23a4c958a745db2134aa03244 (patch) | |
tree | c871e58545497667cbb4b0a4f2daf204743e1fe7 /usr/src/uts/sparc/sys/old_procfs.h | |
download | illumos-joyent-7c478bd95313f5f23a4c958a745db2134aa03244.tar.gz |
OpenSolaris Launch
Diffstat (limited to 'usr/src/uts/sparc/sys/old_procfs.h')
-rw-r--r-- | usr/src/uts/sparc/sys/old_procfs.h | 612 |
1 files changed, 612 insertions, 0 deletions
diff --git a/usr/src/uts/sparc/sys/old_procfs.h b/usr/src/uts/sparc/sys/old_procfs.h new file mode 100644 index 0000000000..7bb34e9393 --- /dev/null +++ b/usr/src/uts/sparc/sys/old_procfs.h @@ -0,0 +1,612 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License, Version 1.0 only + * (the "License"). You may not use this file except in compliance + * with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 1992-2003 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ +/* All Rights Reserved */ + + +#ifndef _SYS_OLD_PROCFS_H +#define _SYS_OLD_PROCFS_H + +#pragma ident "%Z%%M% %I% %E% SMI" + +/* + * This file contains the definitions for the old ioctl()-based + * version of the process file system. It is obsolete but will + * continue to be supported in SunOS until the next major release. + * Note that <sys/procfs.h> and <sys/old_procfs.h> contain conflicting + * definitions and cannot be included together in the same source file. + */ + +#include <sys/types.h> +#include <sys/time_impl.h> +#include <sys/signal.h> +#include <sys/siginfo.h> +#include <sys/fault.h> +#include <sys/syscall.h> +#include <sys/procfs_isa.h> + +#ifdef __cplusplus +extern "C" { +#endif + +#if !defined(_LP64) && _FILE_OFFSET_BITS == 64 +#error "Cannot use procfs in the large file compilation environment" +#endif + +#if _STRUCTURED_PROC == 0 + +/* + * ioctl codes and system call interfaces for /proc. + */ + +#define PIOC ('q'<<8) +#define PIOCSTATUS (PIOC|1) /* get process status */ +#define PIOCSTOP (PIOC|2) /* post STOP request and... */ +#define PIOCWSTOP (PIOC|3) /* wait for process to STOP */ +#define PIOCRUN (PIOC|4) /* make process runnable */ +#define PIOCGTRACE (PIOC|5) /* get traced signal set */ +#define PIOCSTRACE (PIOC|6) /* set traced signal set */ +#define PIOCSSIG (PIOC|7) /* set current signal */ +#define PIOCKILL (PIOC|8) /* send signal */ +#define PIOCUNKILL (PIOC|9) /* delete a signal */ +#define PIOCGHOLD (PIOC|10) /* get held signal set */ +#define PIOCSHOLD (PIOC|11) /* set held signal set */ +#define PIOCMAXSIG (PIOC|12) /* get max signal number */ +#define PIOCACTION (PIOC|13) /* get signal action structs */ +#define PIOCGFAULT (PIOC|14) /* get traced fault set */ +#define PIOCSFAULT (PIOC|15) /* set traced fault set */ +#define PIOCCFAULT (PIOC|16) /* clear current fault */ +#define PIOCGENTRY (PIOC|17) /* get syscall entry set */ +#define PIOCSENTRY (PIOC|18) /* set syscall entry set */ +#define PIOCGEXIT (PIOC|19) /* get syscall exit set */ +#define PIOCSEXIT (PIOC|20) /* set syscall exit set */ + +/* + * These four are obsolete (replaced by PIOCSET/PIOCRESET). + */ +#define PIOCSFORK (PIOC|21) /* set inherit-on-fork flag */ +#define PIOCRFORK (PIOC|22) /* reset inherit-on-fork flag */ +#define PIOCSRLC (PIOC|23) /* set run-on-last-close flag */ +#define PIOCRRLC (PIOC|24) /* reset run-on-last-close flag */ + +#define PIOCGREG (PIOC|25) /* get general registers */ +#define PIOCSREG (PIOC|26) /* set general registers */ +#define PIOCGFPREG (PIOC|27) /* get floating-point registers */ +#define PIOCSFPREG (PIOC|28) /* set floating-point registers */ +#define PIOCNICE (PIOC|29) /* set nice priority */ +#define PIOCPSINFO (PIOC|30) /* get ps(1) information */ +#define PIOCNMAP (PIOC|31) /* get number of memory mappings */ +#define PIOCMAP (PIOC|32) /* get memory map information */ +#define PIOCOPENM (PIOC|33) /* open mapped object for reading */ +#define PIOCCRED (PIOC|34) /* get process credentials */ +#define PIOCGROUPS (PIOC|35) /* get supplementary groups */ +#define PIOCGETPR (PIOC|36) /* read struct proc */ +#define PIOCGETU (PIOC|37) /* read user area */ + +/* + * These are new with SunOS5.0. + */ +#define PIOCSET (PIOC|38) /* set process flags */ +#define PIOCRESET (PIOC|39) /* reset process flags */ +#define PIOCUSAGE (PIOC|43) /* get resource usage */ +#define PIOCOPENPD (PIOC|44) /* get page data file descriptor */ + +/* + * Lightweight process interfaces. + */ +#define PIOCLWPIDS (PIOC|45) /* get lwp identifiers */ +#define PIOCOPENLWP (PIOC|46) /* get lwp file descriptor */ +#define PIOCLSTATUS (PIOC|47) /* get status of all lwps */ +#define PIOCLUSAGE (PIOC|48) /* get resource usage of all lwps */ + +/* + * SVR4 run-time loader interfaces. + */ +#define PIOCNAUXV (PIOC|49) /* get number of aux vector entries */ +#define PIOCAUXV (PIOC|50) /* get aux vector (see sys/auxv.h) */ + +/* + * extra register state interfaces + */ +#define PIOCGXREGSIZE (PIOC|51) /* get extra register state size */ +#define PIOCGXREG (PIOC|52) /* get extra register state */ +#define PIOCSXREG (PIOC|53) /* set extra register state */ + +/* + * SPARC-specific interfaces. + */ +#define PIOCGWIN (PIOC|101) /* get gwindows_t (see sys/reg.h) */ + +/* Process/lwp status structure */ + +#define PRCLSZ 8 /* maximum size of scheduling class name */ +#define PRSYSARGS 8 /* maximum number of syscall arguments */ + +#endif /* _STRUCTURED_PROC == 0 */ + +typedef struct prstatus { + int pr_flags; /* Flags (see below) */ + short pr_why; /* Reason for process stop (if stopped) */ + short pr_what; /* More detailed reason */ + siginfo_t pr_info; /* Info associated with signal or fault */ + short pr_cursig; /* Current signal */ + ushort_t pr_nlwp; /* Number of lwps in the process */ + sigset_t pr_sigpend; /* Set of signals pending to the process */ + sigset_t pr_sighold; /* Set of signals held (blocked) by the lwp */ + struct sigaltstack pr_altstack; /* Alternate signal stack info */ + struct sigaction pr_action; /* Signal action for current signal */ + pid_t pr_pid; /* Process id */ + pid_t pr_ppid; /* Parent process id */ + pid_t pr_pgrp; /* Process group id */ + pid_t pr_sid; /* Session id */ + timestruc_t pr_utime; /* Process user cpu time */ + timestruc_t pr_stime; /* Process system cpu time */ + timestruc_t pr_cutime; /* Sum of children's user times */ + timestruc_t pr_cstime; /* Sum of children's system times */ + char pr_clname[PRCLSZ]; /* Scheduling class name */ + short pr_syscall; /* System call number (if in syscall) */ + short pr_nsysarg; /* Number of arguments to this syscall */ + long pr_sysarg[PRSYSARGS]; /* Arguments to this syscall */ + id_t pr_who; /* Specific lwp identifier */ + sigset_t pr_lwppend; /* Set of signals pending to the lwp */ + struct ucontext *pr_oldcontext; /* Address of previous ucontext */ + caddr_t pr_brkbase; /* Address of the process heap */ + size_t pr_brksize; /* Size of the process heap, in bytes */ + caddr_t pr_stkbase; /* Address of the process stack */ + size_t pr_stksize; /* Size of the process stack, in bytes */ + short pr_processor; /* processor which last ran this LWP */ + short pr_bind; /* processor LWP bound to or PBIND_NONE */ + long pr_instr; /* Current instruction */ + prgregset_t pr_reg; /* General registers */ +} prstatus_t; + +#if _STRUCTURED_PROC == 0 + +/* pr_flags */ + +#define PR_STOPPED 0x0001 /* lwp is stopped */ +#define PR_ISTOP 0x0002 /* lwp is stopped on an event of interest */ +#define PR_DSTOP 0x0004 /* lwp has a stop directive in effect */ +#define PR_ASLEEP 0x0008 /* lwp is sleeping in a system call */ +#define PR_FORK 0x0010 /* inherit-on-fork is in effect */ +#define PR_RLC 0x0020 /* run-on-last-close is in effect */ +#define PR_PTRACE 0x0040 /* obsolete, never set in SunOS5.0 */ +#define PR_PCINVAL 0x0080 /* contents of pr_instr undefined */ +#define PR_ISSYS 0x0100 /* system process */ +#define PR_STEP 0x0200 /* lwp has a single-step directive in effect */ +#define PR_KLC 0x0400 /* kill-on-last-close is in effect */ +#define PR_ASYNC 0x0800 /* asynchronous-stop is in effect */ +#define PR_PCOMPAT 0x1000 /* ptrace-compatibility mode is in effect */ +#define PR_MSACCT 0x2000 /* micro-state usage accounting is in effect */ +#define PR_BPTADJ 0x4000 /* breakpoint trap pc adjustment is in effect */ +#define PR_ASLWP 0x8000 /* obsolete flag; never set */ + +/* Reasons for stopping */ + +#define PR_REQUESTED 1 +#define PR_SIGNALLED 2 +#define PR_SYSENTRY 3 +#define PR_SYSEXIT 4 +#define PR_JOBCONTROL 5 +#define PR_FAULTED 6 +#define PR_SUSPENDED 7 +#define PR_CHECKPOINT 8 + +/* Information for the ps(1) command */ + +#define PRFNSZ 16 /* max size of execed filename */ +#define PRARGSZ 80 /* Number of chars of arguments */ + +#endif /* _STRUCTURED_PROC == 0 */ + +typedef struct prpsinfo { + char pr_state; /* numeric process state (see pr_sname) */ + char pr_sname; /* printable character representing pr_state */ + char pr_zomb; /* !=0: process terminated but not waited for */ + char pr_nice; /* nice for cpu usage */ + uint_t pr_flag; /* process flags */ + uid_t pr_uid; /* real user id */ + gid_t pr_gid; /* real group id */ + pid_t pr_pid; /* unique process id */ + pid_t pr_ppid; /* process id of parent */ + pid_t pr_pgrp; /* pid of process group leader */ + pid_t pr_sid; /* session id */ + caddr_t pr_addr; /* physical address of process */ + size_t pr_size; /* size of process image in pages */ + size_t pr_rssize; /* resident set size in pages */ + caddr_t pr_wchan; /* wait addr for sleeping process */ + timestruc_t pr_start; /* process start time, sec+nsec since epoch */ + timestruc_t pr_time; /* usr+sys cpu time for this process */ + int pr_pri; /* priority, high value is high priority */ + char pr_oldpri; /* pre-SVR4, low value is high priority */ + char pr_cpu; /* pre-SVR4, cpu usage for scheduling */ + o_dev_t pr_ottydev; /* short tty device number */ + dev_t pr_lttydev; /* controlling tty device (PRNODEV if none) */ + char pr_clname[PRCLSZ]; /* scheduling class name */ + char pr_fname[PRFNSZ]; /* last component of execed pathname */ + char pr_psargs[PRARGSZ]; /* initial characters of arg list */ + short pr_syscall; /* system call number (if in syscall) */ + short pr_fill; + timestruc_t pr_ctime; /* usr+sys cpu time for reaped children */ + size_t pr_bysize; /* size of process image in bytes */ + size_t pr_byrssize; /* resident set size in bytes */ + int pr_argc; /* initial argument count */ + char **pr_argv; /* initial argument vector */ + char **pr_envp; /* initial environment vector */ + int pr_wstat; /* if zombie, the wait() status */ + /* The following percent numbers are 16-bit binary */ + /* fractions [0 .. 1] with the binary point to the */ + /* right of the high-order bit (one == 0x8000) */ + ushort_t pr_pctcpu; /* % of recent cpu time, one or all lwps */ + ushort_t pr_pctmem; /* % of of system memory used by the process */ + uid_t pr_euid; /* effective user id */ + gid_t pr_egid; /* effective group id */ + id_t pr_aslwpid; /* historical; now always zero */ + char pr_dmodel; /* data model of the process */ + char pr_pad[3]; + int pr_filler[6]; /* for future expansion */ +} prpsinfo_t; + +#if _STRUCTURED_PROC == 0 + +#if !defined(_STYPES) +#define pr_ttydev pr_lttydev +#else +#define pr_ttydev pr_ottydev +#endif + +#define PRNODEV (dev_t)(-1l) /* non-existent device */ + +/* + * See <sys/procfs_isa.h> for possible values of pr_dmodel. + */ + +/* Optional actions to take when process continues */ + +typedef struct prrun { + int pr_flags; /* Flags */ + sigset_t pr_trace; /* Set of signals to be traced */ + sigset_t pr_sighold; /* Set of signals to be held */ + fltset_t pr_fault; /* Set of faults to be traced */ + caddr_t pr_vaddr; /* Virtual address at which to resume */ + int pr_filler[8]; /* Filler area for future expansion */ +} prrun_t; + +#define PRCSIG 0x001 /* Clear current signal */ +#define PRCFAULT 0x002 /* Clear current fault */ +#define PRSTRACE 0x004 /* Use traced-signal set in pr_trace */ +#define PRSHOLD 0x008 /* Use held-signal set in pr_sighold */ +#define PRSFAULT 0x010 /* Use traced-fault set in pr_fault */ +#define PRSVADDR 0x020 /* Resume at virtual address in pr_vaddr */ +#define PRSTEP 0x040 /* Direct the lwp to single-step */ +#define PRSABORT 0x080 /* Abort syscall */ +#define PRSTOP 0x100 /* Set directed stop request */ + +/* Memory-management interface */ + +typedef struct prmap { + caddr_t pr_vaddr; /* Virtual address */ + size_t pr_size; /* Size of mapping in bytes */ + off_t pr_off; /* Offset into mapped object, if any */ + uint_t pr_mflags; /* Protection and attribute flags */ + uint_t pr_pagesize; /* pagesize (bytes) for this mapping */ + long pr_filler[3]; /* Filler for future expansion */ +} prmap_t; + +/* Protection and attribute flags */ + +#define MA_READ 0x04 /* Readable by the traced process */ +#define MA_WRITE 0x02 /* Writable by the traced process */ +#define MA_EXEC 0x01 /* Executable by the traced process */ +#define MA_SHARED 0x08 /* Changes are shared by mapped object */ +/* + * These are obsolete and unreliable. + * They are included here only for historical compatibility. + */ +#define MA_BREAK 0x10 /* Grown by brk(2) */ +#define MA_STACK 0x20 /* Grown automatically on stack faults */ + +/* Process credentials */ + +typedef struct prcred { + uid_t pr_euid; /* Effective user id */ + uid_t pr_ruid; /* Real user id */ + uid_t pr_suid; /* Saved user id (from exec) */ + gid_t pr_egid; /* Effective group id */ + gid_t pr_rgid; /* Real group id */ + gid_t pr_sgid; /* Saved group id (from exec) */ + uint_t pr_ngroups; /* Number of supplementary groups */ +} prcred_t; + +/* Resource usage */ + +typedef struct prusage { + id_t pr_lwpid; /* lwp id. 0: process or defunct */ + int pr_count; /* number of contributing lwps */ + timestruc_t pr_tstamp; /* current time stamp */ + timestruc_t pr_create; /* process/lwp creation time stamp */ + timestruc_t pr_term; /* process/lwp termination time stamp */ + timestruc_t pr_rtime; /* total lwp real (elapsed) time */ + timestruc_t pr_utime; /* user level CPU time */ + timestruc_t pr_stime; /* system call CPU time */ + timestruc_t pr_ttime; /* other system trap CPU time */ + timestruc_t pr_tftime; /* text page fault sleep time */ + timestruc_t pr_dftime; /* data page fault sleep time */ + timestruc_t pr_kftime; /* kernel page fault sleep time */ + timestruc_t pr_ltime; /* user lock wait sleep time */ + timestruc_t pr_slptime; /* all other sleep time */ + timestruc_t pr_wtime; /* wait-cpu (latency) time */ + timestruc_t pr_stoptime; /* stopped time */ + timestruc_t filltime[6]; /* filler for future expansion */ + ulong_t pr_minf; /* minor page faults */ + ulong_t pr_majf; /* major page faults */ + ulong_t pr_nswap; /* swaps */ + ulong_t pr_inblk; /* input blocks */ + ulong_t pr_oublk; /* output blocks */ + ulong_t pr_msnd; /* messages sent */ + ulong_t pr_mrcv; /* messages received */ + ulong_t pr_sigs; /* signals received */ + ulong_t pr_vctx; /* voluntary context switches */ + ulong_t pr_ictx; /* involuntary context switches */ + ulong_t pr_sysc; /* system calls */ + ulong_t pr_ioch; /* chars read and written */ + ulong_t filler[10]; /* filler for future expansion */ +} prusage_t; + +/* Page data */ + +/* page data file header */ +typedef struct prpageheader { + timestruc_t pr_tstamp; /* real time stamp */ + ulong_t pr_nmap; /* number of address space mappings */ + ulong_t pr_npage; /* total number of pages */ +} prpageheader_t; + +/* page data mapping header */ +typedef struct prasmap { + caddr_t pr_vaddr; /* virtual address */ + size_t pr_npage; /* number of pages in mapping */ + off_t pr_off; /* offset into mapped object, if any */ + uint_t pr_mflags; /* protection and attribute flags */ + uint_t pr_pagesize; /* pagesize (bytes) for this mapping */ + long pr_filler[3]; /* filler for future expansion */ +} prasmap_t; + +/* + * npage bytes (rounded up to a sizeof (long)-byte boundary) follow + * each mapping header, containing zero or more of these flags. + */ +#define PG_REFERENCED 0x02 /* page referenced since last read */ +#define PG_MODIFIED 0x01 /* page modified since last read */ +#define PG_HWMAPPED 0x04 /* page is present and mapped */ + +/* + * Macros for manipulating sets of flags. + * sp must be a pointer to one of sigset_t, fltset_t, or sysset_t. + * flag must be a member of the enumeration corresponding to *sp. + */ + +/* turn on all flags in set */ +#define prfillset(sp) \ + { register int _i_ = sizeof (*(sp))/sizeof (uint32_t); \ + while (_i_) ((uint32_t *)(sp))[--_i_] = (uint32_t)0xFFFFFFFF; } + +/* turn off all flags in set */ +#define premptyset(sp) \ + { register int _i_ = sizeof (*(sp))/sizeof (uint32_t); \ + while (_i_) ((uint32_t *)(sp))[--_i_] = (uint32_t)0; } + +/* turn on specified flag in set */ +#define praddset(sp, flag) \ + ((void)(((unsigned)((flag)-1) < 32*sizeof (*(sp))/sizeof (uint32_t)) ? \ + (((uint32_t *)(sp))[((flag)-1)/32] |= (1UL<<(((flag)-1)%32))) : 0)) + +/* turn off specified flag in set */ +#define prdelset(sp, flag) \ + ((void)(((unsigned)((flag)-1) < 32*sizeof (*(sp))/sizeof (uint32_t)) ? \ + (((uint32_t *)(sp))[((flag)-1)/32] &= ~(1UL<<(((flag)-1)%32))) : 0)) + +/* query: != 0 iff flag is turned on in set */ +#define prismember(sp, flag) \ + (((unsigned)((flag)-1) < 32*sizeof (*(sp))/sizeof (uint32_t)) && \ + (((uint32_t *)(sp))[((flag)-1)/32] & (1UL<<(((flag)-1)%32)))) + +#endif /* _STRUCTURED_PROC == 0 */ + +#ifdef _SYSCALL32 + +#if _STRUCTURED_PROC == 0 + +/* + * dev32_t version of PRNODEV + */ +#define PRNODEV32 (dev32_t)(-1) + +/* + * Kernel view of structures used by _ILP32 programs. + */ + +#endif /* _STRUCTURED_PROC == 0 */ + +typedef struct prstatus32 { + int32_t pr_flags; /* Flags */ + short pr_why; /* Reason for process stop (if stopped) */ + short pr_what; /* More detailed reason */ + siginfo32_t pr_info; /* Info associated with signal or fault */ + short pr_cursig; /* Current signal */ + ushort_t pr_nlwp; /* Number of lwps in the process */ + sigset_t pr_sigpend; /* Set of signals pending to the process */ + sigset_t pr_sighold; /* Set of signals held (blocked) by the lwp */ + struct sigaltstack32 pr_altstack; /* Alternate signal stack info */ + struct sigaction32 pr_action; /* Signal action for current signal */ + pid32_t pr_pid; /* Process id */ + pid32_t pr_ppid; /* Parent process id */ + pid32_t pr_pgrp; /* Process group id */ + pid32_t pr_sid; /* Session id */ + timestruc32_t pr_utime; /* Process user cpu time */ + timestruc32_t pr_stime; /* Process system cpu time */ + timestruc32_t pr_cutime; /* Sum of children's user times */ + timestruc32_t pr_cstime; /* Sum of children's system times */ + char pr_clname[PRCLSZ]; /* Scheduling class name */ + short pr_syscall; /* System call number (if in syscall) */ + short pr_nsysarg; /* Number of arguments to this syscall */ + int32_t pr_sysarg[PRSYSARGS]; /* Arguments to this syscall */ + id32_t pr_who; /* Specific lwp identifier */ + sigset_t pr_lwppend; /* Set of signals pending to the lwp */ + caddr32_t pr_oldcontext; /* Address of previous ucontext */ + caddr32_t pr_brkbase; /* Address of the process heap */ + size32_t pr_brksize; /* Size of the process heap, in bytes */ + caddr32_t pr_stkbase; /* Address of the process stack */ + size32_t pr_stksize; /* Size of the process stack, in bytes */ + short pr_processor; /* processor which last ran this LWP */ + short pr_bind; /* processor LWP bound to or PBIND_NONE */ + int32_t pr_instr; /* Current instruction */ + prgregset32_t pr_reg; /* General registers */ +} prstatus32_t; + +typedef struct prpsinfo32 { + char pr_state; /* numeric process state (see pr_sname) */ + char pr_sname; /* printable character representing pr_state */ + char pr_zomb; /* !=0: process terminated but not waited for */ + char pr_nice; /* nice for cpu usage */ + uint32_t pr_flag; /* process flags */ + uid32_t pr_uid; /* real user id */ + gid32_t pr_gid; /* real group id */ + pid32_t pr_pid; /* unique process id */ + pid32_t pr_ppid; /* process id of parent */ + pid32_t pr_pgrp; /* pid of process group leader */ + pid32_t pr_sid; /* session id */ + caddr32_t pr_addr; /* physical address of process */ + size32_t pr_size; /* size of process image in pages */ + size32_t pr_rssize; /* resident set size in pages */ + caddr32_t pr_wchan; /* wait addr for sleeping process */ + timestruc32_t pr_start; /* process start time, sec+nsec since epoch */ + timestruc32_t pr_time; /* usr+sys cpu time for this process */ + int32_t pr_pri; /* priority, high value is high priority */ + char pr_oldpri; /* pre-SVR4, low value is high priority */ + char pr_cpu; /* pre-SVR4, cpu usage for scheduling */ + o_dev_t pr_ottydev; /* short tty device number */ + dev32_t pr_lttydev; /* controlling tty device (PRNODEV if none) */ + char pr_clname[PRCLSZ]; /* scheduling class name */ + char pr_fname[PRFNSZ]; /* last component of execed pathname */ + char pr_psargs[PRARGSZ]; /* initial characters of arg list */ + short pr_syscall; /* system call number (if in syscall) */ + short pr_fill; + timestruc32_t pr_ctime; /* usr+sys cpu time for reaped children */ + size32_t pr_bysize; /* size of process image in bytes */ + size32_t pr_byrssize; /* resident set size in bytes */ + int pr_argc; /* initial argument count */ + caddr32_t pr_argv; /* initial argument vector */ + caddr32_t pr_envp; /* initial environment vector */ + int pr_wstat; /* if zombie, the wait() status */ + ushort_t pr_pctcpu; /* % of recent cpu time, one or all lwps */ + ushort_t pr_pctmem; /* % of of system memory used by the process */ + uid32_t pr_euid; /* effective user id */ + gid32_t pr_egid; /* effective group id */ + id32_t pr_aslwpid; /* historical; now always zero */ + char pr_dmodel; /* data model of the process */ + char pr_pad[3]; + int32_t pr_filler[6]; /* for future expansion */ +} prpsinfo32_t; + +#if _STRUCTURED_PROC == 0 + +typedef struct prrun32 { + int32_t pr_flags; /* Flags */ + sigset_t pr_trace; /* Set of signals to be traced */ + sigset_t pr_sighold; /* Set of signals to be held */ + fltset_t pr_fault; /* Set of faults to be traced */ + caddr32_t pr_vaddr; /* Virtual address at which to resume */ + int32_t pr_filler[8]; /* Filler area for future expansion */ +} prrun32_t; + +typedef struct ioc_prmap32 { + caddr32_t pr_vaddr; /* Virtual address */ + size32_t pr_size; /* Size of mapping in bytes */ + off32_t pr_off; /* Offset into mapped object, if any */ + uint32_t pr_mflags; /* Protection and attribute flags */ + uint32_t pr_pagesize; /* pagesize (bytes) for this mapping */ + int32_t pr_filler[3]; /* Filler for future expansion */ +} ioc_prmap32_t; + +typedef struct prusage32 { + id32_t pr_lwpid; /* lwp id. 0: process or defunct */ + int32_t pr_count; /* number of contributing lwps */ + timestruc32_t pr_tstamp; /* current time stamp */ + timestruc32_t pr_create; /* process/lwp creation time stamp */ + timestruc32_t pr_term; /* process/lwp termination time stamp */ + timestruc32_t pr_rtime; /* total lwp real (elapsed) time */ + timestruc32_t pr_utime; /* user level cpu time */ + timestruc32_t pr_stime; /* system call cpu time */ + timestruc32_t pr_ttime; /* other system trap cpu time */ + timestruc32_t pr_tftime; /* text page fault sleep time */ + timestruc32_t pr_dftime; /* data page fault sleep time */ + timestruc32_t pr_kftime; /* kernel page fault sleep time */ + timestruc32_t pr_ltime; /* user lock wait sleep time */ + timestruc32_t pr_slptime; /* all other sleep time */ + timestruc32_t pr_wtime; /* wait-cpu (latency) time */ + timestruc32_t pr_stoptime; /* stopped time */ + timestruc32_t filltime[6]; /* filler for future expansion */ + uint32_t pr_minf; /* minor page faults */ + uint32_t pr_majf; /* major page faults */ + uint32_t pr_nswap; /* swaps */ + uint32_t pr_inblk; /* input blocks */ + uint32_t pr_oublk; /* output blocks */ + uint32_t pr_msnd; /* messages sent */ + uint32_t pr_mrcv; /* messages received */ + uint32_t pr_sigs; /* signals received */ + uint32_t pr_vctx; /* voluntary context switches */ + uint32_t pr_ictx; /* involuntary context switches */ + uint32_t pr_sysc; /* system calls */ + uint32_t pr_ioch; /* chars read and written */ + uint32_t filler[10]; /* filler for future expansion */ +} prusage32_t; + +typedef struct ioc_prpageheader32 { + timestruc32_t pr_tstamp; /* real time stamp */ + uint32_t pr_nmap; /* number of address space mappings */ + uint32_t pr_npage; /* total number of pages */ +} ioc_prpageheader32_t; + +typedef struct ioc_prasmap32 { + caddr32_t pr_vaddr; /* virtual address */ + size32_t pr_npage; /* number of pages in mapping */ + off32_t pr_off; /* offset into mapped object, if any */ + uint32_t pr_mflags; /* protection and attribute flags */ + uint32_t pr_pagesize; /* pagesize (bytes) for this mapping */ + int32_t pr_filler[3]; /* filler for future expansion */ +} ioc_prasmap32_t; + +#endif /* _STRUCTURED_PROC == 0 */ + +#endif /* _SYSCALL32 */ + +#ifdef __cplusplus +} +#endif + +#endif /* _SYS_OLD_PROCFS_H */ |