56 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #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
 |