forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
1.4 KiB
55 lines
1.4 KiB
#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
|
|
|