mirror of
https://github.com/checkpoint-restore/criu.git
synced 2026-07-18 17:14:28 +00:00
Previously, __export_parasite_cmd was located in parasite-head.S, and __export_parasite_args located exactly at the end of the parasite blob. This is not ideal for various reasons: 1) These two variables work together. It would be preferrable to have them in the same location 2) This prevent us from allocating another section betweeen the parasite blob and the args area. We'll need this to allocate a GOT table This commit changes the allocation of these symbols from assembly/linker script to a C file. Moreover, the assembly entry points that invoke parasite_service() prepares arguments with hand crafted assembly. This is unecessary. This commit rewrite this logic with regular C code. Note: if it wasn't for the x86 compat mode, we could remove all parasite-head.S files and directly jump to parasite_service() via ptrace. An int3 architecture specific equivalent could be called at the end of parasite_service() with an inline asm statement. Signed-off-by: Nicolas Viennot <Nicolas.Viennot@twosigma.com>
25 lines
683 B
C
25 lines
683 B
C
#ifndef COMPEL_PLUGIN_STD_INFECT_H__
|
|
#define COMPEL_PLUGIN_STD_INFECT_H__
|
|
|
|
#include "common/compiler.h"
|
|
|
|
extern int parasite_get_rpc_sock(void);
|
|
|
|
extern unsigned int __export_parasite_service_cmd;
|
|
extern void * __export_parasite_service_args_ptr;
|
|
extern int __must_check parasite_service(void);
|
|
|
|
/*
|
|
* Must be supplied by user plugins.
|
|
*/
|
|
extern int __must_check parasite_daemon_cmd(int cmd, void *args);
|
|
extern int __must_check parasite_trap_cmd(int cmd, void *args);
|
|
extern void parasite_cleanup(void);
|
|
|
|
/*
|
|
* FIXME: Should be supplied by log module.
|
|
*/
|
|
extern void log_set_fd(int fd);
|
|
extern void log_set_loglevel(unsigned int level);
|
|
|
|
#endif /* COMPEL_PLUGIN_STD_INFECT_H__ */
|