]> git.ipfire.org Git - thirdparty/glibc.git/blame - sysdeps/unix/sysv/linux/sys/procfs.h
Update copyright dates with scripts/update-copyrights.
[thirdparty/glibc.git] / sysdeps / unix / sysv / linux / sys / procfs.h
CommitLineData
688903eb 1/* Copyright (C) 1996-2018 Free Software Foundation, Inc.
8a4b65b4 2 This file is part of the GNU C Library.
b33f91e9 3
8a4b65b4 4 The GNU C Library is free software; you can redistribute it and/or
41bdb6e2
AJ
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
b33f91e9 8
8a4b65b4
UD
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
41bdb6e2 12 Lesser General Public License for more details.
b33f91e9 13
41bdb6e2 14 You should have received a copy of the GNU Lesser General Public
59ba27a6
PE
15 License along with the GNU C Library; if not, see
16 <http://www.gnu.org/licenses/>. */
b33f91e9
UD
17
18#ifndef _SYS_PROCFS_H
b33f91e9 19#define _SYS_PROCFS_H 1
b33f91e9
UD
20
21/* This is somehow modelled after the file of the same name on SysVr4
22 systems. It provides a definition of the core file format for ELF
23 used on Linux. */
24
a680290a 25#include <features.h>
b33f91e9
UD
26#include <signal.h>
27#include <sys/time.h>
28#include <sys/types.h>
a680290a 29#include <sys/ucontext.h>
648c1337 30#include <sys/user.h>
b33f91e9
UD
31#include <asm/elf.h>
32
8a4b65b4
UD
33__BEGIN_DECLS
34
b33f91e9 35struct elf_siginfo
5290baf0
UD
36 {
37 int si_signo; /* Signal number. */
38 int si_code; /* Extra code. */
39 int si_errno; /* Errno. */
40 };
b33f91e9 41
b33f91e9
UD
42/* Definitions to generate Intel SVR4-like core files. These mostly
43 have the same names as the SVR4 types with "elf_" tacked on the
44 front to prevent clashes with linux definitions, and the typedef
45 forms have been avoided. This is mostly like the SVR4 structure,
46 but more Linuxy, with things that Linux does not support and which
47 gdb doesn't really use excluded. Fields present but not used are
48 marked with "XXX". */
49struct elf_prstatus
5290baf0 50 {
b33f91e9 51#if 0
5290baf0
UD
52 long int pr_flags; /* XXX Process flags. */
53 short int pr_why; /* XXX Reason for process halt. */
54 short int pr_what; /* XXX More detailed reason. */
b33f91e9 55#endif
5290baf0
UD
56 struct elf_siginfo pr_info; /* Info associated with signal. */
57 short int pr_cursig; /* Current signal. */
58 unsigned long int pr_sigpend; /* Set of pending signals. */
59 unsigned long int pr_sighold; /* Set of held signals. */
b33f91e9 60#if 0
75531318 61 stack_t pr_altstack; /* Alternate stack info. */
5290baf0 62 struct sigaction pr_action; /* Signal action for current sig. */
b33f91e9 63#endif
5290baf0
UD
64 __pid_t pr_pid;
65 __pid_t pr_ppid;
66 __pid_t pr_pgrp;
67 __pid_t pr_sid;
68 struct timeval pr_utime; /* User time. */
69 struct timeval pr_stime; /* System time. */
70 struct timeval pr_cutime; /* Cumulative user time. */
71 struct timeval pr_cstime; /* Cumulative system time. */
b33f91e9 72#if 0
5290baf0 73 long int pr_instr; /* Current instruction. */
b33f91e9 74#endif
5290baf0
UD
75 elf_gregset_t pr_reg; /* GP registers. */
76 int pr_fpvalid; /* True if math copro being used. */
77 };
b33f91e9
UD
78
79
80#define ELF_PRARGSZ (80) /* Number of chars for args */
81
82struct elf_prpsinfo
5290baf0
UD
83 {
84 char pr_state; /* Numeric process state. */
85 char pr_sname; /* Char for pr_state. */
86 char pr_zomb; /* Zombie. */
87 char pr_nice; /* Nice val. */
88 unsigned long int pr_flag; /* Flags. */
89 unsigned short int pr_uid;
90 unsigned short int pr_gid;
8d57beea 91 int pr_pid, pr_ppid, pr_pgrp, pr_sid;
5290baf0
UD
92 /* Lots missing */
93 char pr_fname[16]; /* Filename of executable. */
94 char pr_psargs[ELF_PRARGSZ]; /* Initial part of arg list. */
95 };
b33f91e9 96
a680290a
UD
97/* Addresses. */
98typedef void *psaddr_t;
99
100/* Register sets. Linux has different names. */
101typedef gregset_t prgregset_t;
102typedef fpregset_t prfpregset_t;
103
104/* We don't have any differences between processes and threads,
105 therefore habe only ine PID type. */
106typedef __pid_t lwpid_t;
107
b33f91e9
UD
108
109typedef struct elf_prstatus prstatus_t;
110typedef struct elf_prpsinfo prpsinfo_t;
111
8a4b65b4 112__END_DECLS
b33f91e9
UD
113
114#endif /* sys/procfs.h */