#ifndef __ION_UTILS_H #define __ION_UTILS_H #include "ion.h" #define SOCKET_NAME "ion_socket" #define ION_DEVICE "/dev/ion" #define ION_BUFFER_LEN 4096 #define MAX_HEAP_COUNT ION_HEAP_TYPE_CUSTOM struct socket_info { int sockfd; int datafd; unsigned long buflen; }; struct ion_buffer_info { int ionfd; int buffd; unsigned int heap_type; unsigned int flag_type; unsigned long heap_size; unsigned long buflen; unsigned char *buffer; }; /* This is used to fill the data into the mapped buffer */ void write_buffer(void *buffer, unsigned long len); /* This is used to read the data from the exported buffer */ void read_buffer(void *buffer, unsigned long len); /* This is used to create an ION buffer FD for the kernel buffer * So you can export this same buffer to others in the form of FD */ int ion_export_buffer_fd(struct ion_buffer_info *ion_info); /* This is used to import or map an exported FD. * So we point to same buffer without making a copy. Hence zero-copy. */ int ion_import_buffer_fd(struct ion_buffer_info *ion_info); /* This is used to close all references for the ION client */ void ion_close_buffer_fd(struct ion_buffer_info *ion_info); /* This is used to send FD to another process using socket IPC */ int socket_send_fd(struct socket_info *skinfo); /* This is used to receive FD from another process using socket IPC */ int socket_receive_fd(struct socket_info *skinfo); #endif