Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v5.6-rc7 79 lines 1.7 kB view raw
1// SPDX-License-Identifier: GPL-2.0-only 2/* 3 * ionapp_import.c 4 * 5 * It is a user space utility to receive android ion memory buffer fd 6 * over unix domain socket IPC that can be exported by ionapp_export. 7 * This acts like a client for ionapp_export. 8 * 9 * Copyright (C) 2017 Pintu Kumar <pintu.ping@gmail.com> 10 */ 11 12#include <stdio.h> 13#include <stdlib.h> 14#include <unistd.h> 15#include <string.h> 16#include "ionutils.h" 17#include "ipcsocket.h" 18 19 20int main(void) 21{ 22 int ret, status; 23 int sockfd, shared_fd; 24 unsigned char *map_buf; 25 unsigned long map_len; 26 struct ion_buffer_info info; 27 struct socket_info skinfo; 28 29 /* This is the client part. Here 0 means client or importer */ 30 status = opensocket(&sockfd, SOCKET_NAME, 0); 31 if (status < 0) { 32 fprintf(stderr, "No exporter exists...\n"); 33 ret = status; 34 goto err_socket; 35 } 36 37 skinfo.sockfd = sockfd; 38 39 ret = socket_receive_fd(&skinfo); 40 if (ret < 0) { 41 fprintf(stderr, "Failed: socket_receive_fd\n"); 42 goto err_recv; 43 } 44 45 shared_fd = skinfo.datafd; 46 printf("Received buffer fd: %d\n", shared_fd); 47 if (shared_fd <= 0) { 48 fprintf(stderr, "ERROR: improper buf fd\n"); 49 ret = -1; 50 goto err_fd; 51 } 52 53 memset(&info, 0, sizeof(info)); 54 info.buffd = shared_fd; 55 info.buflen = ION_BUFFER_LEN; 56 57 ret = ion_import_buffer_fd(&info); 58 if (ret < 0) { 59 fprintf(stderr, "Failed: ion_use_buffer_fd\n"); 60 goto err_import; 61 } 62 63 map_buf = info.buffer; 64 map_len = info.buflen; 65 read_buffer(map_buf, map_len); 66 67 /* Write probably new data to the same buffer again */ 68 map_len = ION_BUFFER_LEN; 69 write_buffer(map_buf, map_len); 70 71err_import: 72 ion_close_buffer_fd(&info); 73err_fd: 74err_recv: 75err_socket: 76 closesocket(sockfd, SOCKET_NAME); 77 78 return ret; 79}