rsFifoSocket.cpp revision af12ac6a08651464f8d823add667c706f993b587
12008747941749ad27fe80663d23036ac320e998fJason Sams/*
22008747941749ad27fe80663d23036ac320e998fJason Sams * Copyright (C) 2011 The Android Open Source Project
32008747941749ad27fe80663d23036ac320e998fJason Sams *
42008747941749ad27fe80663d23036ac320e998fJason Sams * Licensed under the Apache License, Version 2.0 (the "License");
52008747941749ad27fe80663d23036ac320e998fJason Sams * you may not use this file except in compliance with the License.
62008747941749ad27fe80663d23036ac320e998fJason Sams * You may obtain a copy of the License at
72008747941749ad27fe80663d23036ac320e998fJason Sams *
82008747941749ad27fe80663d23036ac320e998fJason Sams *      http://www.apache.org/licenses/LICENSE-2.0
92008747941749ad27fe80663d23036ac320e998fJason Sams *
102008747941749ad27fe80663d23036ac320e998fJason Sams * Unless required by applicable law or agreed to in writing, software
112008747941749ad27fe80663d23036ac320e998fJason Sams * distributed under the License is distributed on an "AS IS" BASIS,
122008747941749ad27fe80663d23036ac320e998fJason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
132008747941749ad27fe80663d23036ac320e998fJason Sams * See the License for the specific language governing permissions and
142008747941749ad27fe80663d23036ac320e998fJason Sams * limitations under the License.
152008747941749ad27fe80663d23036ac320e998fJason Sams */
162008747941749ad27fe80663d23036ac320e998fJason Sams
172008747941749ad27fe80663d23036ac320e998fJason Sams#include "rsFifoSocket.h"
182008747941749ad27fe80663d23036ac320e998fJason Sams#include "utils/Timers.h"
192008747941749ad27fe80663d23036ac320e998fJason Sams#include "utils/StopWatch.h"
202008747941749ad27fe80663d23036ac320e998fJason Sams
212008747941749ad27fe80663d23036ac320e998fJason Sams#include <stdio.h>
222008747941749ad27fe80663d23036ac320e998fJason Sams#include <stdlib.h>
232008747941749ad27fe80663d23036ac320e998fJason Sams#include <ctype.h>
242008747941749ad27fe80663d23036ac320e998fJason Sams#include <unistd.h>
252008747941749ad27fe80663d23036ac320e998fJason Sams#include <sys/types.h>
262008747941749ad27fe80663d23036ac320e998fJason Sams#include <sys/socket.h>
272008747941749ad27fe80663d23036ac320e998fJason Sams
282008747941749ad27fe80663d23036ac320e998fJason Samsusing namespace android;
292008747941749ad27fe80663d23036ac320e998fJason Samsusing namespace android::renderscript;
302008747941749ad27fe80663d23036ac320e998fJason Sams
312008747941749ad27fe80663d23036ac320e998fJason SamsFifoSocket::FifoSocket() {
322008747941749ad27fe80663d23036ac320e998fJason Sams    sequence = 1;
332008747941749ad27fe80663d23036ac320e998fJason Sams}
342008747941749ad27fe80663d23036ac320e998fJason Sams
352008747941749ad27fe80663d23036ac320e998fJason SamsFifoSocket::~FifoSocket() {
362008747941749ad27fe80663d23036ac320e998fJason Sams
372008747941749ad27fe80663d23036ac320e998fJason Sams}
382008747941749ad27fe80663d23036ac320e998fJason Sams
392008747941749ad27fe80663d23036ac320e998fJason Samsbool FifoSocket::init() {
402008747941749ad27fe80663d23036ac320e998fJason Sams    int ret = socketpair(AF_UNIX, SOCK_STREAM, 0, sv);
412008747941749ad27fe80663d23036ac320e998fJason Sams    return false;
422008747941749ad27fe80663d23036ac320e998fJason Sams}
432008747941749ad27fe80663d23036ac320e998fJason Sams
442008747941749ad27fe80663d23036ac320e998fJason Samsvoid FifoSocket::shutdown() {
452008747941749ad27fe80663d23036ac320e998fJason Sams}
462008747941749ad27fe80663d23036ac320e998fJason Sams
472008747941749ad27fe80663d23036ac320e998fJason Samsvoid FifoSocket::writeAsync(const void *data, size_t bytes) {
481a4efa363916977ef9aeab756725b3bdc880a15bJason Sams    if (bytes == 0) {
491a4efa363916977ef9aeab756725b3bdc880a15bJason Sams        return;
501a4efa363916977ef9aeab756725b3bdc880a15bJason Sams    }
51af12ac6a08651464f8d823add667c706f993b587Steve Block    //ALOGE("writeAsync %p %i", data, bytes);
521a4efa363916977ef9aeab756725b3bdc880a15bJason Sams    size_t ret = ::send(sv[0], data, bytes, 0);
53af12ac6a08651464f8d823add667c706f993b587Steve Block    //ALOGE("writeAsync ret %i", ret);
542008747941749ad27fe80663d23036ac320e998fJason Sams    rsAssert(ret == bytes);
552008747941749ad27fe80663d23036ac320e998fJason Sams}
562008747941749ad27fe80663d23036ac320e998fJason Sams
572008747941749ad27fe80663d23036ac320e998fJason Samsvoid FifoSocket::writeWaitReturn(void *retData, size_t retBytes) {
58af12ac6a08651464f8d823add667c706f993b587Steve Block    //ALOGE("writeWaitReturn %p %i", retData, retBytes);
591a4efa363916977ef9aeab756725b3bdc880a15bJason Sams    size_t ret = ::recv(sv[0], retData, retBytes, 0);
60af12ac6a08651464f8d823add667c706f993b587Steve Block    //ALOGE("writeWaitReturn %i", ret);
612008747941749ad27fe80663d23036ac320e998fJason Sams    rsAssert(ret == retBytes);
622008747941749ad27fe80663d23036ac320e998fJason Sams}
632008747941749ad27fe80663d23036ac320e998fJason Sams
642008747941749ad27fe80663d23036ac320e998fJason Samssize_t FifoSocket::read(void *data, size_t bytes) {
65af12ac6a08651464f8d823add667c706f993b587Steve Block    //ALOGE("read %p %i", data, bytes);
661a4efa363916977ef9aeab756725b3bdc880a15bJason Sams    size_t ret = ::recv(sv[1], data, bytes, 0);
672008747941749ad27fe80663d23036ac320e998fJason Sams    rsAssert(ret == bytes);
68af12ac6a08651464f8d823add667c706f993b587Steve Block    //ALOGE("read ret %i", ret);
692008747941749ad27fe80663d23036ac320e998fJason Sams    return ret;
702008747941749ad27fe80663d23036ac320e998fJason Sams}
712008747941749ad27fe80663d23036ac320e998fJason Sams
722008747941749ad27fe80663d23036ac320e998fJason Samsvoid FifoSocket::readReturn(const void *data, size_t bytes) {
73af12ac6a08651464f8d823add667c706f993b587Steve Block    ALOGE("readReturn %p %Zu", data, bytes);
741a4efa363916977ef9aeab756725b3bdc880a15bJason Sams    size_t ret = ::send(sv[1], data, bytes, 0);
75af12ac6a08651464f8d823add667c706f993b587Steve Block    ALOGE("readReturn %Zu", ret);
762008747941749ad27fe80663d23036ac320e998fJason Sams    rsAssert(ret == bytes);
772008747941749ad27fe80663d23036ac320e998fJason Sams}
782008747941749ad27fe80663d23036ac320e998fJason Sams
792008747941749ad27fe80663d23036ac320e998fJason Sams
802008747941749ad27fe80663d23036ac320e998fJason Samsvoid FifoSocket::flush() {
812008747941749ad27fe80663d23036ac320e998fJason Sams}
822008747941749ad27fe80663d23036ac320e998fJason Sams
832008747941749ad27fe80663d23036ac320e998fJason Sams
84