criu/include/rst_info.h
Andrey Vagin 248fc31531 restore: use breakpoints instead of tracing syscalls
Currently CRIU traces syscalls to catch a moment, when sigreturn() is
called. Now we trace recv(cmd), close(logfd), close(cmdfd), sigreturn().

We can reduce a number of steps by using hw breakpoints. A breakpoint is
set before sigreturn, so we will need to trace only it.

Signed-off-by: Andrey Vagin <avagin@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2014-09-19 17:57:18 +04:00

61 lines
1.1 KiB
C

#ifndef __CR_RST_INFO_H__
#define __CR_RST_INFO_H__
#include "lock.h"
#include "list.h"
#include "vma.h"
struct task_entries {
int nr_threads, nr_tasks, nr_helpers;
futex_t nr_in_progress;
futex_t start;
mutex_t zombie_lock;
};
struct fdt {
int nr; /* How many tasks share this fd table */
pid_t pid; /* Who should restore this fd table */
/*
* The fd table is ready for restoing, if fdt_lock is equal to nr
* The fdt table was restrored, if fdt_lock is equal to nr + 1
*/
futex_t fdt_lock;
};
struct _MmEntry;
struct rst_info {
struct list_head fds;
struct list_head eventpoll;
struct list_head tty_slaves;
void *premmapped_addr;
unsigned long premmapped_len;
unsigned long clone_flags;
void *munmap_restorer;
int nr_zombies;
int service_fd_id;
struct fdt *fdt;
struct vm_area_list vmas;
struct _MmEntry *mm;
u32 cg_set;
union {
struct pstree_item *pgrp_leader;
futex_t pgrp_set;
};
struct file_desc *cwd;
struct file_desc *root;
bool has_umask;
u32 umask;
void *breakpoint;
};
#endif /* __CR_RST_INFO_H__ */