| #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 |