diff --git a/compel/arch/x86/plugins/include/asm/prologue.h b/compel/arch/x86/plugins/include/asm/prologue.h new file mode 100644 index 000000000..9d812eec9 --- /dev/null +++ b/compel/arch/x86/plugins/include/asm/prologue.h @@ -0,0 +1,36 @@ +#ifndef __ASM_PROLOGUE_H__ +#define __ASM_PROLOGUE_H__ + +#ifndef __ASSEMBLY__ + +#include +#include +#include + +#include + +#define sys_recv(sockfd, ubuf, size, flags) \ + sys_recvfrom(sockfd, ubuf, size, flags, NULL, NULL) + +typedef struct prologue_init_args { + struct sockaddr_un ctl_sock_addr; + unsigned int ctl_sock_addr_len; + + unsigned int arg_s; + void *arg_p; + + void *sigframe; +} prologue_init_args_t; + +#endif /* __ASSEMBLY__ */ + +/* + * Reserve enough space for sigframe. + * + * FIXME It is rather should be taken from sigframe header. + */ +#define PROLOGUE_SGFRAME_SIZE 4096 + +#define PROLOGUE_INIT_ARGS_SIZE 1024 + +#endif /* __ASM_PROLOGUE_H__ */ diff --git a/compel/plugins/include/uapi/plugin-std.h b/compel/plugins/include/uapi/plugin-std.h index 5eaa31f04..b77a7b449 100644 --- a/compel/plugins/include/uapi/plugin-std.h +++ b/compel/plugins/include/uapi/plugin-std.h @@ -4,12 +4,4 @@ #include "uapi/plugins.h" #include "uapi/std/syscall.h" -struct prologue_init_args { - struct sockaddr *ctl_sock_addr; - socklen_t ctl_sock_addr_len; - - unsigned int arg_s; - void *arg_p; -}; - #endif /* COMPEL_PLUGIN_STD_STD_H__ */ diff --git a/compel/plugins/std/std.c b/compel/plugins/std/std.c index 69bbb9bed..19090d7f7 100644 --- a/compel/plugins/std/std.c +++ b/compel/plugins/std/std.c @@ -4,6 +4,8 @@ #include "uapi/plugins.h" #include "uapi/plugin-std.h" +#include "asm/prologue.h" + extern int main(void *arg_p, unsigned int arg_s); static struct prologue_init_args *init_args;