summaryrefslogtreecommitdiff
path: root/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/procfs.h
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/procfs.h')
-rw-r--r--sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/procfs.h487
1 files changed, 487 insertions, 0 deletions
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/procfs.h b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/procfs.h
new file mode 100644
index 0000000000..7344015938
--- /dev/null
+++ b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/procfs.h
@@ -0,0 +1,487 @@
+/* Declarations of procfs structures.
+ Copyright (C) 2008 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#ifndef _SYS_PROCFS_H
+#define _SYS_PROCFS_H 1
+
+#ifndef _STRUCTURED_PROC
+# define _STRUCTURED_PROC 0
+#endif
+
+#if _STRUCTURED_PROC == 0
+
+# include <sys/old_procfs.h>
+
+#else
+
+#include <sys/types.h>
+#include <sys/signal.h>
+#include <sys/fault.h>
+#include <sys/syscall.h>
+#include <sys/processor.h>
+#include <sys/pset.h>
+#include <sys/priv.h>
+#include <bits/regset.h>
+#include <time.h>
+#include <bits/wordsize.h>
+#include <sys/procfs_isa.h>
+
+/* control codes for ctl and lwpctl */
+#define PCNULL 0
+#define PCSTOP 1
+#define PCDSTOP 2
+#define PCWSTOP 3
+#define PCTWSTOP 4
+#define PCRUN 5
+#define PCCSIG 6
+#define PCCFAULT 7
+#define PCSSIG 8
+#define PCKILL 9
+#define PCUNKILL 10
+#define PCSHOLD 11
+#define PCSTRACE 12
+#define PCSFAULT 13
+#define PCSENTRY 14
+#define PCSEXIT 15
+#define PCSET 16
+#define PCUNSET 17
+#define PCSREG 18
+#define PCSFPREG 19
+#define PCSXREG 20
+#define PCNICE 21
+#define PCSVADDR 22
+#define PCWATCH 23
+#define PCAGENT 24
+#define PCREAD 25
+#define PCWRITE 26
+#define PCSCRED 27
+#define PCSASRS 28
+#define PCSPRIV 29
+#define PCSZONE 30
+#define PCSCREDX 31
+
+/* PCRUN codes */
+#define PRCSIG 0x01
+#define PRCFAULT 0x02
+#define PRSTEP 0x04
+#define PRSABORT 0x08
+#define PRSTOP 0x10
+
+/* /proc/<pid>/lwp/<lwpid>/lwpstatus */
+typedef struct lwpstatus
+{
+ int pr_flags;
+ id_t pr_lwpid;
+ short pr_why;
+ short pr_what;
+ short pr_cursig;
+ short pr_pad1;
+ siginfo_t pr_info;
+ sigset_t pr_lwppend;
+ sigset_t pr_lwphold;
+ struct sigaction pr_action;
+ stack_t pr_altstack;
+ uintptr_t pr_oldcontext;
+ short pr_syscall;
+ short pr_nsysarg;
+ int pr_errno;
+#define PRSYSARGS 8
+ long pr_sysarg[PRSYSARGS];
+ long pr_rval1;
+ long pr_rval2;
+#define PRCLSZ 8
+ char pr_clname[PRCLSZ];
+ struct timespec pr_tstamp;
+ struct timespec pr_utime;
+ struct timespec pr_stime;
+ int pr_filler[11 - 2 * sizeof (struct timespec) / sizeof (int)];
+ int pr_errpriv;
+ uintptr_t pr_ustack;
+ unsigned long pr_instr;
+ prgregset_t pr_reg;
+ prfpregset_t pr_fpreg;
+} lwpstatus_t;
+
+/* /proc/<pid>/status */
+typedef struct pstatus
+{
+ int pr_flags;
+ int pr_nlwp;
+ pid_t pr_pid;
+ pid_t pr_ppid;
+ pid_t pr_pgid;
+ pid_t pr_sid;
+ id_t pr_aslwpid;
+ id_t pr_agentid;
+ sigset_t pr_sigpend;
+ uintptr_t pr_brkbase;
+ size_t pr_brksize;
+ uintptr_t pr_stkbase;
+ size_t pr_stksize;
+ struct timespec pr_utime;
+ struct timespec pr_stime;
+ struct timespec pr_cutime;
+ struct timespec pr_cstime;
+ sigset_t pr_sigtrace;
+ fltset_t pr_flttrace;
+ sysset_t pr_sysentry;
+ sysset_t pr_sysexit;
+ char pr_dmodel;
+ char pr_pad[3];
+ taskid_t pr_taskid;
+ projid_t pr_projid;
+ int pr_nzomb;
+ zoneid_t pr_zoneid;
+ int pr_filler[15];
+ lwpstatus_t pr_lwp;
+} pstatus_t;
+
+/* pr_flags */
+#define PR_STOPPED 0x00000001
+#define PR_ISTOP 0x00000002
+#define PR_DSTOP 0x00000004
+#define PR_STEP 0x00000008
+#define PR_ASLEEP 0x00000010
+#define PR_PCINVAL 0x00000020
+#define PR_ASLWP 0x00000040
+#define PR_AGENT 0x00000080
+#define PR_DETACH 0x00000100
+#define PR_DAEMON 0x00000200
+#define PR_IDLE 0x00000400
+#define PR_ISSYS 0x00001000
+#define PR_VFORKP 0x00002000
+#define PR_ORPHAN 0x00004000
+#define PR_NOSIGCHLD 0x00008000
+#define PR_WAITPID 0x00010000
+#define PR_FORK 0x00100000
+#define PR_RLC 0x00200000
+#define PR_KLC 0x00400000
+#define PR_ASYNC 0x00800000
+#define PR_MSACCT 0x01000000
+#define PR_BPTADJ 0x02000000
+#define PR_PTRACE 0x04000000
+#define PR_MSFORK 0x08000000
+
+/* pr_why */
+enum
+{
+ PR_REQUESTED = 1,
+#define PR_REQUESTED PR_REQUESTED
+ PR_SIGNALLED = 2,
+#define PR_SIGNALLED PR_SIGNALLED
+ PR_SYSENTRY = 3,
+#define PR_SYSENTRY PR_SYSENTRY
+ PR_SYSEXIT = 4,
+#define PR_SYSEXIT PR_SYSEXIT
+ PR_JOBCONTROL = 5,
+#define PR_JOBCONTROL PR_JOBCONTROL
+ PR_FAULTED = 6,
+#define PR_FAULTED PR_FAULTED
+ PR_SUSPENDED = 7,
+#define PR_SUSPENDED PR_SUSPENDED
+ PR_CHECKPOINT = 8
+#define PR_CHECKPOINT PR_CHECKPOINT
+};
+
+/* /proc/<pid>/lwp/<lwpid>/lwpsinfo */
+typedef struct lwpsinfo
+{
+ int pr_flag;
+ id_t pr_lwpid;
+ uintptr_t pr_addr;
+ uintptr_t pr_wchan;
+ char pr_stype;
+ char pr_state;
+ char pr_sname;
+ char pr_nice;
+ short pr_syscall;
+ char pr_oldpri;
+ char pr_cpu;
+ int pr_pri;
+ unsigned short pr_pctcpu;
+ unsigned short pr_pad;
+ struct timespec pr_start;
+ struct timespec pr_time;
+#define PRFNSZ 16
+ char pr_clname[PRCLSZ];
+ char pr_name[PRFNSZ];
+ processorid_t pr_onpro;
+ processorid_t pr_bindpro;
+ psetid_t pr_bindpset;
+ int pr_lgrp;
+ int pr_filler[4];
+} lwpsinfo_t;
+
+/* pr_ttydev: non-existent device */
+#define PRNODEV (dev_t)(-1)
+
+/* /proc/<pid>/psinfo */
+typedef struct psinfo
+{
+ int pr_flag;
+ int pr_nlwp;
+ pid_t pr_pid;
+ pid_t pr_ppid;
+ pid_t pr_pgid;
+ pid_t pr_sid;
+ uid_t pr_uid;
+ uid_t pr_euid;
+ gid_t pr_gid;
+ gid_t pr_egid;
+ uintptr_t pr_addr;
+ size_t pr_size;
+ size_t pr_rssize;
+ size_t pr_pad1;
+ dev_t pr_ttydev;
+ unsigned short pr_pctcpu;
+ unsigned short pr_pctmem;
+ struct timespec pr_start;
+ struct timespec pr_time;
+ struct timespec pr_ctime;
+ char pr_fname[PRFNSZ];
+#define PRARGSZ 80
+ char pr_psargs[PRARGSZ];
+ int pr_wstat;
+ int pr_argc;
+ uintptr_t pr_argv;
+ uintptr_t pr_envp;
+ char pr_dmodel;
+ char pr_pad2[3];
+ taskid_t pr_taskid;
+ projid_t pr_projid;
+ int pr_nzomb;
+ poolid_t pr_poolid;
+ zoneid_t pr_zoneid;
+ id_t pr_contract;
+ int pr_filler[1];
+ lwpsinfo_t pr_lwp;
+} psinfo_t;
+
+/* /proc/<pid>/map, /proc/<pid>/rmap */
+typedef struct prmap
+{
+ uintptr_t pr_vaddr;
+ size_t pr_size;
+#define PRMAPSZ 64
+ char pr_mapname[PRMAPSZ];
+ offset_t pr_offset;
+ int pr_mflags;
+ int pr_pagesize;
+ int pr_shmid;
+ int pr_filler[1];
+} prmap_t;
+
+/* pr_mflags values */
+#define MA_EXEC 0x0001
+#define MA_WRITE 0x0002
+#define MA_READ 0x0004
+#define MA_SHARED 0x0008
+#define MA_BREAK 0x0010
+#define MA_STACK 0x0020
+#define MA_ANON 0x0040
+#define MA_ISM 0x0080
+#define MA_NORESERVE 0x0100
+#define MA_SHM 0x0200
+#define MA_RESERVED1 0x0400
+
+/* /proc/<pid>/xmap */
+typedef struct prxmap
+{
+ uintptr_t pr_vaddr;
+ size_t pr_size;
+ char pr_mapname[PRMAPSZ];
+ offset_t pr_offset;
+ int pr_mflags;
+ int pr_pagesize;
+ int pr_shmid;
+ dev_t pr_dev;
+ uint64_t pr_ino;
+ size_t pr_rss;
+ size_t pr_anon;
+ size_t pr_locked;
+ size_t pr_pad;
+ uint64_t pr_hatpagesize;
+#if __WORDSIZE == 32
+ unsigned long pr_filler[6];
+#else
+ unsigned long pr_filler[7];
+#endif
+} prxmap_t;
+
+/* pr_mflags */
+#define MA_EXEC 0x0001
+#define MA_WRITE 0x0002
+#define MA_READ 0x0004
+#define MA_SHARED 0x0008
+#define MA_ANON 0x0040
+#define MA_ISM 0x0080
+#define MA_NORESERVE 0x0100
+#define MA_SHM 0x0200
+#define MA_RESERVED1 0x0400
+
+/* /proc/<pid>/cred */
+typedef struct prcred
+{
+ uid_t pr_euid;
+ uid_t pr_ruid;
+ uid_t pr_suid;
+ gid_t pr_egid;
+ gid_t pr_rgid;
+ gid_t pr_sgid;
+ int pr_ngroups;
+ gid_t pr_groups[1];
+} prcred_t;
+
+/* /proc/<pid>/priv */
+typedef struct prpriv
+{
+ uint32_t pr_nsets;
+ uint32_t pr_setsize;
+ uint32_t pr_infosize;
+ priv_chunk_t pr_sets[1];
+} prpriv_t;
+
+/* /proc/<pid>/watch */
+typedef struct prwatch
+{
+ uintptr_t pr_vaddr;
+ size_t pr_size;
+ int pr_wflags;
+ int pr_pad;
+} prwatch_t;
+
+/* pr_wflags */
+#define WA_EXEC 0x01
+#define WA_WRITE 0x02
+#define WA_READ 0x04
+#define WA_TRAPAFTER 0x08
+
+typedef struct priovec {
+ void *pio_base;
+ size_t pio_len;
+ off_t pio_offset;
+} priovec_t;
+
+/* /proc/<pid>/usage, /proc/<pid>/lwp/<lwpid>/lwpusage */
+typedef struct prusage
+{
+ id_t pr_lwpid;
+ int pr_count;
+ struct timespec pr_tstamp;
+ struct timespec pr_create;
+ struct timespec pr_term;
+ struct timespec pr_rtime;
+ struct timespec pr_utime;
+ struct timespec pr_stime;
+ struct timespec pr_ttime;
+ struct timespec pr_tftime;
+ struct timespec pr_dftime;
+ struct timespec pr_kftime;
+ struct timespec pr_ltime;
+ struct timespec pr_slptime;
+ struct timespec pr_wtime;
+ struct timespec pr_stoptime;
+ struct timespec filltime[6];
+ unsigned long pr_minf;
+ unsigned long pr_majf;
+ unsigned long pr_nswap;
+ unsigned long pr_inblk;
+ unsigned long pr_oublk;
+ unsigned long pr_msnd;
+ unsigned long pr_mrcv;
+ unsigned long pr_sigs;
+ unsigned long pr_vctx;
+ unsigned long pr_ictx;
+ unsigned long pr_sysc;
+ unsigned long pr_ioch;
+ unsigned long filler[10];
+} prusage_t;
+
+/* /proc/<pid>/pagedata file header */
+typedef struct prpageheader
+{
+ struct timespec pr_tstamp;
+ long pr_nmap;
+ long pr_npage;
+} prpageheader_t;
+
+/* /proc/<pid>/pagedata mapping header */
+typedef struct prasmap
+{
+ uintptr_t pr_vaddr;
+ size_t pr_npage;
+ char pr_mapname[PRMAPSZ];
+ offset_t pr_offset;
+ int pr_mflags;
+ int pr_pagesize;
+ int pr_shmid;
+ int pr_filler[1];
+} prasmap_t;
+
+/* pr_npage-long byte array (plus 8-byte alignment) of the following flags */
+#define PG_REFERENCED 0x02
+#define PG_MODIFIED 0x01
+#define PG_HWMAPPED 0x04
+
+/* /proc/<pid>/lstatus, /proc/<pid>/lpsinfo, /proc/<pid>/lusage header */
+typedef struct prheader
+{
+ long pr_nent;
+ long pr_entsize;
+} prheader_t;
+
+/* based on sig*set */
+
+#define prfillset(set) \
+ { int __cnt = sizeof (*set) / sizeof (uint32_t); \
+ while (--__cnt >= 0) ((uint32_t *)(set))[__cnt] = 0xFFFFFFFF; }
+
+#define premptyset(set) \
+ { int __cnt = sizeof (*set) / sizeof (uint32_t); \
+ while (--__cnt >= 0) ((uint32_t *)(set))[__cnt] = 0; }
+
+#define __prmask(flag) \
+ (((uint32_t) 1) << (((flag) - 1) % (8 * (int)sizeof (uint32_t))))
+
+# define __prword(flag) (((flag) - 1) / (8 * (int)sizeof (uint32_t)))
+
+#define praddset(set, flag) \
+ (((uint32_t *)(set))[__prword (flag)] |= __prmask (flag))
+
+#define prdelset(set, flag) \
+ (((uint32_t *)(set))[__prword (flag)] &= ~__prmask (flag))
+
+#define prismember(set, flag) \
+ ((((uint32_t *)(set))[__prword (flag)] & __prmask (flag)) ? 1 : 0)
+
+/* Data models. */
+#define PR_MODEL_UNKNOWN 0
+#define PR_MODEL_ILP32 1
+#define PR_MODEL_LP64 2
+#if defined(_LP64)
+# define PR_MODEL_NATIVE PR_MODEL_LP64
+#elif defined(_ILP32)
+# define PR_MODEL_NATIVE PR_MODEL_ILP32
+#else
+# error Unknown data model
+#endif
+
+#endif /* _STRUCTURED_PROC == 0 */
+
+#endif /* _SYS_PROCFS_H */