shm implemented as memfd syscall
include/ipc_msg.h
@@ -15,8 +15,12 @@
} 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)); }
@@ -35,11 +39,27 @@
  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);