2
0
mirror of https://github.com/checkpoint-restore/criu synced 2025-08-22 09:58:09 +00:00
criu/include/proc_parse.h
Alexander Kartashov 6f61488f21 x86: moved x86-specific files into the directory arch/x86.
* The following files goes into the directory arch/x86/include/asm unmodified:
  - include/atomic.h,
  - include/linkage.h,
  - include/memcpy_64.h,
  - include/types.h,
  - include/bitops.h,
  - pie/parasite-head-x86-64.S,
  - include/processor-flags.h,
  - include/syscall-x86-64.def.

* Changed include directives in the source files that include the headers
  listed above.

* Modified build scripts to reflect the source moves.

Signed-off-by: Alexander Kartashov <alekskartashov@parallels.com>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-01-09 17:02:47 +04:00

144 lines
3.1 KiB
C

#ifndef __CR_PROC_PARSE_H__
#define __CR_PROC_PARSE_H__
#include <sys/types.h>
#include "asm/types.h"
#include "image.h"
#include "list.h"
#include "../protobuf/eventfd.pb-c.h"
#include "../protobuf/eventpoll.pb-c.h"
#include "../protobuf/signalfd.pb-c.h"
#include "../protobuf/inotify.pb-c.h"
#define PROC_TASK_COMM_LEN 32
#define PROC_TASK_COMM_LEN_FMT "(%31s"
struct proc_pid_stat_small {
int pid;
char comm[PROC_TASK_COMM_LEN];
char state;
int ppid;
int pgid;
int sid;
};
struct proc_pid_stat {
int pid;
char comm[PROC_TASK_COMM_LEN];
char state;
int ppid;
int pgid;
int sid;
int tty_nr;
int tty_pgrp;
unsigned int flags;
unsigned long min_flt;
unsigned long cmin_flt;
unsigned long maj_flt;
unsigned long cmaj_flt;
unsigned long utime;
unsigned long stime;
long cutime;
long cstime;
long priority;
long nice;
int num_threads;
int zero0;
unsigned long long start_time;
unsigned long vsize;
long mm_rss;
unsigned long rsslim;
unsigned long start_code;
unsigned long end_code;
unsigned long start_stack;
unsigned long esp;
unsigned long eip;
unsigned long sig_pending;
unsigned long sig_blocked;
unsigned long sig_ignored;
unsigned long sig_handled;
unsigned long wchan;
unsigned long zero1;
unsigned long zero2;
int exit_signal;
int task_cpu;
unsigned int rt_priority;
unsigned int policy;
unsigned long long delayacct_blkio_ticks;
unsigned long gtime;
long cgtime;
unsigned long start_data;
unsigned long end_data;
unsigned long start_brk;
unsigned long arg_start;
unsigned long arg_end;
unsigned long env_start;
unsigned long env_end;
int exit_code;
};
#define PROC_CAP_SIZE 2
struct proc_status_creds {
unsigned int uids[4];
unsigned int gids[4];
uint32_t cap_inh[PROC_CAP_SIZE];
uint32_t cap_prm[PROC_CAP_SIZE];
uint32_t cap_eff[PROC_CAP_SIZE];
uint32_t cap_bnd[PROC_CAP_SIZE];
};
struct mount_info;
struct fstype {
char *name;
int (*dump)(struct mount_info *pm);
int (*restore)(struct mount_info *pm);
};
struct mount_info {
int mnt_id;
int parent_mnt_id;
unsigned int s_dev;
char *root;
char *mountpoint;
unsigned flags;
int master_id;
int shared_id;
struct fstype *fstype;
char *source;
char *options;
struct mount_info *next;
/* tree linkage */
struct mount_info *parent;
struct list_head children;
struct list_head siblings;
};
static inline void mnt_entry_init(struct mount_info *pm)
{
pm->parent = NULL;
INIT_LIST_HEAD(&pm->children);
}
extern struct mount_info *parse_mountinfo(pid_t pid);
extern int parse_pid_stat(pid_t pid, struct proc_pid_stat *s);
extern int parse_pid_stat_small(pid_t pid, struct proc_pid_stat_small *s);
extern int parse_smaps(pid_t pid, struct list_head *vma_area_list, bool use_map_files);
extern int parse_pid_status(pid_t pid, struct proc_status_creds *);
union fdinfo_entries {
EventfdFileEntry efd;
EventpollTfdEntry epl;
SignalfdEntry sfd;
InotifyWdEntry ify;
};
extern int parse_fdinfo(int fd, int type,
int (*cb)(union fdinfo_entries *e, void *arg), void *arg);
extern int parse_cpuinfo_features(void);
#endif /* __CR_PROC_PARSE_H__ */