Branch data Line data Source code
1 : : #ifndef __CR_PROC_PARSE_H__
2 : : #define __CR_PROC_PARSE_H__
3 : :
4 : : #include <sys/types.h>
5 : : #include "types.h"
6 : : #include "image.h"
7 : : #include "list.h"
8 : :
9 : : #include "../protobuf/eventfd.pb-c.h"
10 : : #include "../protobuf/eventpoll.pb-c.h"
11 : : #include "../protobuf/signalfd.pb-c.h"
12 : : #include "../protobuf/inotify.pb-c.h"
13 : :
14 : : #define PROC_TASK_COMM_LEN 32
15 : : #define PROC_TASK_COMM_LEN_FMT "(%31s"
16 : :
17 : : struct proc_pid_stat_small {
18 : : int pid;
19 : : char comm[PROC_TASK_COMM_LEN];
20 : : char state;
21 : : int ppid;
22 : : int pgid;
23 : : int sid;
24 : : };
25 : :
26 : : struct proc_pid_stat {
27 : : int pid;
28 : : char comm[PROC_TASK_COMM_LEN];
29 : : char state;
30 : : int ppid;
31 : : int pgid;
32 : : int sid;
33 : : int tty_nr;
34 : : int tty_pgrp;
35 : : unsigned int flags;
36 : : unsigned long min_flt;
37 : : unsigned long cmin_flt;
38 : : unsigned long maj_flt;
39 : : unsigned long cmaj_flt;
40 : : unsigned long utime;
41 : : unsigned long stime;
42 : : long cutime;
43 : : long cstime;
44 : : long priority;
45 : : long nice;
46 : : int num_threads;
47 : : int zero0;
48 : : unsigned long long start_time;
49 : : unsigned long vsize;
50 : : long mm_rss;
51 : : unsigned long rsslim;
52 : : unsigned long start_code;
53 : : unsigned long end_code;
54 : : unsigned long start_stack;
55 : : unsigned long esp;
56 : : unsigned long eip;
57 : : unsigned long sig_pending;
58 : : unsigned long sig_blocked;
59 : : unsigned long sig_ignored;
60 : : unsigned long sig_handled;
61 : : unsigned long wchan;
62 : : unsigned long zero1;
63 : : unsigned long zero2;
64 : : int exit_signal;
65 : : int task_cpu;
66 : : unsigned int rt_priority;
67 : : unsigned int policy;
68 : : unsigned long long delayacct_blkio_ticks;
69 : : unsigned long gtime;
70 : : long cgtime;
71 : : unsigned long start_data;
72 : : unsigned long end_data;
73 : : unsigned long start_brk;
74 : : unsigned long arg_start;
75 : : unsigned long arg_end;
76 : : unsigned long env_start;
77 : : unsigned long env_end;
78 : : int exit_code;
79 : : };
80 : :
81 : : #define PROC_CAP_SIZE 2
82 : :
83 : : struct proc_status_creds {
84 : : unsigned int uids[4];
85 : : unsigned int gids[4];
86 : :
87 : : uint32_t cap_inh[PROC_CAP_SIZE];
88 : : uint32_t cap_prm[PROC_CAP_SIZE];
89 : : uint32_t cap_eff[PROC_CAP_SIZE];
90 : : uint32_t cap_bnd[PROC_CAP_SIZE];
91 : : };
92 : :
93 : : struct mount_info;
94 : : struct fstype {
95 : : char *name;
96 : : int (*dump)(struct mount_info *pm);
97 : : int (*restore)(struct mount_info *pm);
98 : : };
99 : :
100 : : struct mount_info {
101 : : int mnt_id;
102 : : int parent_mnt_id;
103 : : unsigned int s_dev;
104 : : char *root;
105 : : char *mountpoint;
106 : : unsigned flags;
107 : : int master_id;
108 : : int shared_id;
109 : : struct fstype *fstype;
110 : : char *source;
111 : : char *options;
112 : : struct mount_info *next;
113 : :
114 : : /* tree linkage */
115 : : struct mount_info *parent;
116 : : struct list_head children;
117 : : struct list_head siblings;
118 : : };
119 : :
120 : : static inline void mnt_entry_init(struct mount_info *pm)
121 : : {
122 : 6123 : pm->parent = NULL;
123 : 6123 : INIT_LIST_HEAD(&pm->children);
124 : : }
125 : :
126 : : extern struct mount_info *parse_mountinfo(pid_t pid);
127 : : extern int parse_pid_stat(pid_t pid, struct proc_pid_stat *s);
128 : : extern int parse_pid_stat_small(pid_t pid, struct proc_pid_stat_small *s);
129 : : extern int parse_smaps(pid_t pid, struct list_head *vma_area_list, bool use_map_files);
130 : : extern int parse_pid_status(pid_t pid, struct proc_status_creds *);
131 : :
132 : : union fdinfo_entries {
133 : : EventfdFileEntry efd;
134 : : EventpollTfdEntry epl;
135 : : SignalfdEntry sfd;
136 : : InotifyWdEntry ify;
137 : : };
138 : :
139 : : extern int parse_fdinfo(int fd, int type,
140 : : int (*cb)(union fdinfo_entries *e, void *arg), void *arg);
141 : : extern int parse_cpuinfo_features(void);
142 : :
143 : : #endif /* __CR_PROC_PARSE_H__ */
|