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
|