[CRIU] [PATCH 14/15] crtools: split crtools.h
Pavel Emelyanov
xemul at parallels.com
Wed Nov 6 00:46:27 PST 2013
On 11/05/2013 12:33 PM, Andrey Vagin wrote:
> crtools.h includes too many headers to be a general header,
> so lets split it on two parts. The first one "common" will be included
> in many other files. crtools.h is a header for tool, which will be
> included in crtools.c, cr-service.c, etc
This is bead explanation of the split logic
> Signed-off-by: Andrey Vagin <avagin at openvz.org>
> ---
> cr-service.c | 1 +
> include/common.h | 100 +++++++++++++++++++++++++++++++++++++++++++++
> include/crtools.h | 77 ----------------------------------
> include/file-lock.h | 2 +-
> include/files.h | 2 +-
> include/page-xfer.h | 2 +
> include/parasite-syscall.h | 2 +-
> include/pstree.h | 2 +-
> include/types.h | 19 ---------
> log.c | 2 +-
> page-xfer.c | 2 +-
> shmem.c | 2 +-
> sk-queue.c | 2 +-
> util.c | 2 +-
> 14 files changed, 112 insertions(+), 105 deletions(-)
> create mode 100644 include/common.h
> delete mode 100644 include/types.h
>
> diff --git a/cr-service.c b/cr-service.c
> index 01114a9..ae31b5c 100644
> --- a/cr-service.c
> +++ b/cr-service.c
> @@ -14,6 +14,7 @@
> #include <sys/stat.h>
>
> #include "crtools.h"
> +#include "common.h"
> #include "util-pie.h"
> #include "image.h"
> #include "log.h"
> diff --git a/include/common.h b/include/common.h
> new file mode 100644
> index 0000000..6efca6b
> --- /dev/null
> +++ b/include/common.h
> @@ -0,0 +1,100 @@
> +#ifndef __CR_COMMON_H__
> +#define __CR_COMMON_H__
> +
> +#include <stdbool.h>
> +
> +#include "bug.h"
> +#include "list.h"
> +
> +struct pid {
> + /*
> + * The @real pid is used to fetch tasks during dumping stage,
> + * This is a global pid seen from the context where the dumping
> + * is running.
> + */
> + pid_t real;
> +
> + /*
> + * The @virt pid is one which used in the image itself and keeps
> + * the pid value to be restored. This pid fetched from the
> + * dumpee context, because the dumpee might have own pid namespace.
> + */
> + pid_t virt;
> +};
> +
> +/*
> + * When we have to restore a shared resource, we mush select which
> + * task should do it, and make other(s) wait for it. In order to
> + * avoid deadlocks, always make task with lower pid be the restorer.
> + */
> +static inline bool pid_rst_prio(unsigned pid_a, unsigned pid_b)
> +{
> + return pid_a < pid_b;
> +}
> +
> +struct cr_fdset {
> + int fd_off;
> + int fd_nr;
> + int *_fds;
> +};
> +
> +static inline int fdset_fd(const struct cr_fdset *fdset, int type)
> +{
> + int idx;
> +
> + idx = type - fdset->fd_off;
> + BUG_ON(idx > fdset->fd_nr);
> +
> + return fdset->_fds[idx];
> +}
> +
> +extern struct cr_fdset *glob_fdset;
> +
> +struct cr_fdset *cr_task_fdset_open(int pid, int mode);
> +struct cr_fdset *cr_fdset_open_range(int pid, int from, int to,
> + unsigned long flags);
> +#define cr_fdset_open(pid, type, flags) cr_fdset_open_range(pid, \
> + _CR_FD_##type##_FROM, _CR_FD_##type##_TO, flags)
> +struct cr_fdset *cr_glob_fdset_open(int mode);
> +
> +void close_cr_fdset(struct cr_fdset **cr_fdset);
> +
> +extern void print_data(unsigned long addr, unsigned char *data, size_t size);
> +extern void print_image_data(int fd, unsigned int length, int show);
> +
> +struct cr_options {
> + int final_state;
> + char *show_dump_file;
> + bool check_ms_kernel;
> + bool show_pages_content;
> + bool restore_detach;
> + bool ext_unix_sk;
> + bool shell_job;
> + bool handle_file_locks;
> + bool tcp_established_ok;
> + bool evasive_devices;
> + bool link_remap_ok;
> + unsigned int rst_namespaces_flags;
> + bool log_file_per_pid;
> + char *output;
> + char *root;
> + char *pidfile;
> + struct list_head veth_pairs;
> + struct list_head scripts;
> + bool use_page_server;
> + unsigned short ps_port;
> + char *addr;
> + bool track_mem;
> + char *img_parent;
> +};
> +
> +extern struct cr_options opts;
> +
> +extern void init_opts(void);
> +
> +struct script {
> + struct list_head node;
> + char *path;
> +};
> +
> +#endif
> diff --git a/include/crtools.h b/include/crtools.h
> index 944d73d..751b4d8 100644
> --- a/include/crtools.h
> +++ b/include/crtools.h
> @@ -14,73 +14,15 @@
>
> #define CR_FD_PERM (S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH)
>
> -struct script {
> - struct list_head node;
> - char *path;
> -};
> -
> -struct cr_options {
> - int final_state;
> - char *show_dump_file;
> - bool check_ms_kernel;
> - bool show_pages_content;
> - bool restore_detach;
> - bool ext_unix_sk;
> - bool shell_job;
> - bool handle_file_locks;
> - bool tcp_established_ok;
> - bool evasive_devices;
> - bool link_remap_ok;
> - unsigned int rst_namespaces_flags;
> - bool log_file_per_pid;
> - char *output;
> - char *root;
> - char *pidfile;
> - struct list_head veth_pairs;
> - struct list_head scripts;
> - bool use_page_server;
> - unsigned short ps_port;
> - char *addr;
> - bool track_mem;
> - char *img_parent;
> -};
> -
> -extern struct cr_options opts;
> -
> -extern void init_opts(void);
> -
> int check_img_inventory(void);
> int write_img_inventory(void);
> void kill_inventory(void);
>
> -extern void print_data(unsigned long addr, unsigned char *data, size_t size);
> -extern void print_image_data(int fd, unsigned int length, int show);
> -
> extern int open_image_dir(void);
> extern void close_image_dir(void);
>
> -void up_page_ids_base(void);
> -
> #define LAST_PID_PATH "/proc/sys/kernel/ns_last_pid"
>
> -struct cr_fdset {
> - int fd_off;
> - int fd_nr;
> - int *_fds;
> -};
> -
> -static inline int fdset_fd(const struct cr_fdset *fdset, int type)
> -{
> - int idx;
> -
> - idx = type - fdset->fd_off;
> - BUG_ON(idx > fdset->fd_nr);
> -
> - return fdset->_fds[idx];
> -}
> -
> -extern struct cr_fdset *glob_fdset;
> -
> int cr_dump_tasks(pid_t pid);
> int cr_pre_dump_tasks(pid_t pid);
> int cr_restore_tasks(void);
> @@ -89,15 +31,6 @@ int convert_to_elf(char *elf_path, int fd_core);
> int cr_check(void);
> int cr_exec(int pid, char **opts);
>
> -struct cr_fdset *cr_task_fdset_open(int pid, int mode);
> -struct cr_fdset *cr_fdset_open_range(int pid, int from, int to,
> - unsigned long flags);
> -#define cr_fdset_open(pid, type, flags) cr_fdset_open_range(pid, \
> - _CR_FD_##type##_FROM, _CR_FD_##type##_TO, flags)
> -struct cr_fdset *cr_glob_fdset_open(int mode);
> -
> -void close_cr_fdset(struct cr_fdset **cr_fdset);
> -
> struct fdt {
> int nr; /* How many tasks share this fd table */
> pid_t pid; /* Who should restore this fd table */
> @@ -108,16 +41,6 @@ struct fdt {
> futex_t fdt_lock;
> };
>
> -/*
> - * When we have to restore a shared resource, we mush select which
> - * task should do it, and make other(s) wait for it. In order to
> - * avoid deadlocks, always make task with lower pid be the restorer.
> - */
> -static inline bool pid_rst_prio(unsigned pid_a, unsigned pid_b)
> -{
> - return pid_a < pid_b;
> -}
> -
> void restrict_uid(unsigned int uid, unsigned int gid);
> struct proc_status_creds;
> bool may_dump(struct proc_status_creds *);
> diff --git a/include/file-lock.h b/include/file-lock.h
> index 084cc2c..3a1be82 100644
> --- a/include/file-lock.h
> +++ b/include/file-lock.h
> @@ -1,7 +1,7 @@
> #ifndef __FILE_LOCK_H__
> #define __FILE_LOCK_H__
>
> -#include "crtools.h"
> +#include "common.h"
> #include "protobuf.h"
> #include "protobuf/file-lock.pb-c.h"
>
> diff --git a/include/files.h b/include/files.h
> index 5b65bd7..6d4aaf9 100644
> --- a/include/files.h
> +++ b/include/files.h
> @@ -6,7 +6,7 @@
> #include "lock.h"
> #include "list.h"
> #include "image.h"
> -#include "crtools.h"
> +#include "common.h"
>
> #include "protobuf/fdinfo.pb-c.h"
> #include "protobuf/fown.pb-c.h"
> diff --git a/include/page-xfer.h b/include/page-xfer.h
> index 7d2284a..eaa2166 100644
> --- a/include/page-xfer.h
> +++ b/include/page-xfer.h
> @@ -25,6 +25,8 @@ struct page_xfer {
> };
> };
>
> +void up_page_ids_base(void);
> +
> int open_page_xfer(struct page_xfer *xfer, int fd_type, long id);
> struct page_pipe;
> int page_xfer_dump_pages(struct page_xfer *, struct page_pipe *,
> diff --git a/include/parasite-syscall.h b/include/parasite-syscall.h
> index a31e51d..3bb2d8c 100644
> --- a/include/parasite-syscall.h
> +++ b/include/parasite-syscall.h
> @@ -1,7 +1,7 @@
> #ifndef __CR_PARASITE_SYSCALL_H__
> #define __CR_PARASITE_SYSCALL_H__
>
> -#include "types.h"
> +#include "common.h"
> #include "list.h"
>
> #define BUILTIN_SYSCALL_SIZE 8
> diff --git a/include/pstree.h b/include/pstree.h
> index 53b0520..3cd0da6 100644
> --- a/include/pstree.h
> +++ b/include/pstree.h
> @@ -2,7 +2,7 @@
> #define __CR_PSTREE_H__
>
> #include "list.h"
> -#include "types.h"
> +#include "common.h"
> #include "image.h"
> #include "lock.h"
> #include "protobuf/core.pb-c.h"
> diff --git a/include/types.h b/include/types.h
> deleted file mode 100644
> index 5ea5cef..0000000
> --- a/include/types.h
> +++ /dev/null
> @@ -1,19 +0,0 @@
> -#ifndef __CR_TYPES_H__
> -#define __CR_TYPES_H__
> -struct pid {
> - /*
> - * The @real pid is used to fetch tasks during dumping stage,
> - * This is a global pid seen from the context where the dumping
> - * is running.
> - */
> - pid_t real;
> -
> - /*
> - * The @virt pid is one which used in the image itself and keeps
> - * the pid value to be restored. This pid fetched from the
> - * dumpee context, because the dumpee might have own pid namespace.
> - */
> - pid_t virt;
> -};
> -
> -#endif
> diff --git a/log.c b/log.c
> index a1bd9f7..667c43a 100644
> --- a/log.c
> +++ b/log.c
> @@ -15,7 +15,7 @@
> #include "compiler.h"
> #include "asm/types.h"
> #include "util.h"
> -#include "crtools.h"
> +#include "common.h"
> #include "servicefd.h"
>
> #define DEFAULT_LOGFD STDERR_FILENO
> diff --git a/page-xfer.c b/page-xfer.c
> index c16d749..e4ab2c1 100644
> --- a/page-xfer.c
> +++ b/page-xfer.c
> @@ -4,7 +4,7 @@
> #include <unistd.h>
>
> #include "image.h"
> -#include "crtools.h"
> +#include "common.h"
> #include "page-xfer.h"
> #include "page-pipe.h"
>
> diff --git a/shmem.c b/shmem.c
> index e37581b..07dfe09 100644
> --- a/shmem.c
> +++ b/shmem.c
> @@ -4,7 +4,7 @@
>
> #include "shmem.h"
> #include "image.h"
> -#include "crtools.h"
> +#include "common.h"
> #include "page-pipe.h"
> #include "page-xfer.h"
> #include "rst-malloc.h"
> diff --git a/sk-queue.c b/sk-queue.c
> index 5896e97..5527a4f 100644
> --- a/sk-queue.c
> +++ b/sk-queue.c
> @@ -13,7 +13,7 @@
> #include "asm/types.h"
> #include "list.h"
> #include "image.h"
> -#include "crtools.h"
> +#include "common.h"
> #include "util.h"
> #include "util-pie.h"
> #include "sockets.h"
> diff --git a/util.c b/util.c
> index b0477b8..b33ec0b 100644
> --- a/util.c
> +++ b/util.c
> @@ -39,7 +39,7 @@
> #include "image.h"
> #include "vma.h"
>
> -#include "crtools.h"
> +#include "common.h"
> #include "servicefd.h"
>
> #define VMA_OPT_LEN 128
>
More information about the CRIU
mailing list