Blame view

kernel/linux-rt-4.4.41/include/uapi/linux/elfcore.h 2.93 KB
5113f6f70   김현기   kernel add
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
  #ifndef _UAPI_LINUX_ELFCORE_H
  #define _UAPI_LINUX_ELFCORE_H
  
  #include <linux/types.h>
  #include <linux/signal.h>
  #include <linux/time.h>
  #include <linux/ptrace.h>
  #include <linux/elf.h>
  #include <linux/fs.h>
  
  struct elf_siginfo
  {
  	int	si_signo;			/* signal number */
  	int	si_code;			/* extra code */
  	int	si_errno;			/* errno */
  };
  
  
  #ifndef __KERNEL__
  typedef elf_greg_t greg_t;
  typedef elf_gregset_t gregset_t;
  typedef elf_fpregset_t fpregset_t;
  typedef elf_fpxregset_t fpxregset_t;
  #define NGREG ELF_NGREG
  #endif
  
  /*
   * Definitions to generate Intel SVR4-like core files.
   * These mostly have the same names as the SVR4 types with "elf_"
   * tacked on the front to prevent clashes with linux definitions,
   * and the typedef forms have been avoided.  This is mostly like
   * the SVR4 structure, but more Linuxy, with things that Linux does
   * not support and which gdb doesn't really use excluded.
   * Fields present but not used are marked with "XXX".
   */
  struct elf_prstatus
  {
  #if 0
  	long	pr_flags;	/* XXX Process flags */
  	short	pr_why;		/* XXX Reason for process halt */
  	short	pr_what;	/* XXX More detailed reason */
  #endif
  	struct elf_siginfo pr_info;	/* Info associated with signal */
  	short	pr_cursig;		/* Current signal */
  	unsigned long pr_sigpend;	/* Set of pending signals */
  	unsigned long pr_sighold;	/* Set of held signals */
  #if 0
  	struct sigaltstack pr_altstack;	/* Alternate stack info */
  	struct sigaction pr_action;	/* Signal action for current sig */
  #endif
  	pid_t	pr_pid;
  	pid_t	pr_ppid;
  	pid_t	pr_pgrp;
  	pid_t	pr_sid;
  	struct timeval pr_utime;	/* User time */
  	struct timeval pr_stime;	/* System time */
  	struct timeval pr_cutime;	/* Cumulative user time */
  	struct timeval pr_cstime;	/* Cumulative system time */
  #if 0
  	long	pr_instr;		/* Current instruction */
  #endif
  	elf_gregset_t pr_reg;	/* GP registers */
  #ifdef CONFIG_BINFMT_ELF_FDPIC
  	/* When using FDPIC, the loadmap addresses need to be communicated
  	 * to GDB in order for GDB to do the necessary relocations.  The
  	 * fields (below) used to communicate this information are placed
  	 * immediately after ``pr_reg'', so that the loadmap addresses may
  	 * be viewed as part of the register set if so desired.
  	 */
  	unsigned long pr_exec_fdpic_loadmap;
  	unsigned long pr_interp_fdpic_loadmap;
  #endif
  	int pr_fpvalid;		/* True if math co-processor being used.  */
  };
  
  #define ELF_PRARGSZ	(80)	/* Number of chars for args */
  
  struct elf_prpsinfo
  {
  	char	pr_state;	/* numeric process state */
  	char	pr_sname;	/* char for pr_state */
  	char	pr_zomb;	/* zombie */
  	char	pr_nice;	/* nice val */
  	unsigned long pr_flag;	/* flags */
  	__kernel_uid_t	pr_uid;
  	__kernel_gid_t	pr_gid;
  	pid_t	pr_pid, pr_ppid, pr_pgrp, pr_sid;
  	/* Lots missing */
  	char	pr_fname[16];	/* filename of executable */
  	char	pr_psargs[ELF_PRARGSZ];	/* initial part of arg list */
  };
  
  #ifndef __KERNEL__
  typedef struct elf_prstatus prstatus_t;
  typedef struct elf_prpsinfo prpsinfo_t;
  #define PRARGSZ ELF_PRARGSZ 
  #endif
  
  
  #endif /* _UAPI_LINUX_ELFCORE_H */