| | |
| | | } while (0) |
| | | |
| | | #define MAX_LEN 4096 |
| | | #define HELLO_MSG "hello_basic" |
| | | #define offsetof(TYPE, MEMBER) ((int) &((TYPE *)0)->MEMBER) |
| | | #define GET_MEMFD_MSG "basic_get_memfd" |
| | | #define GET_DATA_MSG "basic_get_data" |
| | | #define GET_CUSTOM_MSG "basic_get_custom" |
| | | |
| | | #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) |
| | | |
| | | #define container_of(ptr, type, member) ({\ |
| | | const typeof(((type *)0)->member) * __mptr = (ptr);\ |
| | | (type *)((char *)__mptr - offsetof(type, member)); } |
| | |
| | | char line[MAX_LEN]; |
| | | }; |
| | | |
| | | typedef int (*wfunc)(struct user_data*, void *arg, int len); |
| | | typedef struct arg_struct { |
| | | wfunc wfunc; |
| | | void * args; |
| | | int len; |
| | | }args_data_st; |
| | | |
| | | typedef struct custom_data{ |
| | | int memfd; |
| | | void * data; |
| | | int len; |
| | | }st_custom_data; |
| | | |
| | | |
| | | #define READ_THREAD_NUM 2 |
| | | #define WRITE_THREAD_NUM 2 |
| | | |
| | | int proc_memfd(struct user_data* rdata); |
| | | int basic_create_ipc_server(char * unix_domain_path); |
| | | int file_exists(char *filename); |
| | | int proc_msg(struct user_data* rdata, void * arg, int len); |
| | | int basic_create_ipc_server(char * unix_domain_path, args_data_st * pargs_data_st); |
| | | int basic_create_ipc_client(char * unix_domain_path, char * send_buf, int send_len, void ** pptr_recv_buf, int *ptr_recv_len); |
| | | |
| | | int send_fd_sendmsg(int fd, memfd_data_st** ppmemfd_data); |
| | | |