1*4d7e907cSAndroid Build Coastguard Worker/* 2*4d7e907cSAndroid Build Coastguard Worker * Copyright (C) 2016 The Android Open Source Project 3*4d7e907cSAndroid Build Coastguard Worker * 4*4d7e907cSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*4d7e907cSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*4d7e907cSAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*4d7e907cSAndroid Build Coastguard Worker * 8*4d7e907cSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*4d7e907cSAndroid Build Coastguard Worker * 10*4d7e907cSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*4d7e907cSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*4d7e907cSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*4d7e907cSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*4d7e907cSAndroid Build Coastguard Worker * limitations under the License. 15*4d7e907cSAndroid Build Coastguard Worker */ 16*4d7e907cSAndroid Build Coastguard Worker 17*4d7e907cSAndroid Build Coastguard Workerpackage [email protected]; 18*4d7e907cSAndroid Build Coastguard Worker 19*4d7e907cSAndroid Build Coastguard Workerinterface ITestMsgQ { 20*4d7e907cSAndroid Build Coastguard Worker enum EventFlagBits : uint32_t { 21*4d7e907cSAndroid Build Coastguard Worker FMQ_NOT_FULL = 1 << 0, 22*4d7e907cSAndroid Build Coastguard Worker FMQ_NOT_EMPTY = 1 << 1, 23*4d7e907cSAndroid Build Coastguard Worker }; 24*4d7e907cSAndroid Build Coastguard Worker 25*4d7e907cSAndroid Build Coastguard Worker /** 26*4d7e907cSAndroid Build Coastguard Worker * This method requests the service to set up a synchronous read/write 27*4d7e907cSAndroid Build Coastguard Worker * wait-free FMQ using the input descriptor with the client as reader. 28*4d7e907cSAndroid Build Coastguard Worker * 29*4d7e907cSAndroid Build Coastguard Worker * @param mqDesc This structure describes the FMQ that was set up by the 30*4d7e907cSAndroid Build Coastguard Worker * client. Server uses this descriptor to set up a FMQ object at its end. 31*4d7e907cSAndroid Build Coastguard Worker * 32*4d7e907cSAndroid Build Coastguard Worker * @return ret True if the setup is successful. 33*4d7e907cSAndroid Build Coastguard Worker */ 34*4d7e907cSAndroid Build Coastguard Worker configureFmqSyncReadWrite(fmq_sync<int32_t> mqDesc) generates(bool ret); 35*4d7e907cSAndroid Build Coastguard Worker 36*4d7e907cSAndroid Build Coastguard Worker /** 37*4d7e907cSAndroid Build Coastguard Worker * This method requests the service to return an MQDescriptor to 38*4d7e907cSAndroid Build Coastguard Worker * an unsynchronized FMQ set up by the server. If 'configureFmq' is 39*4d7e907cSAndroid Build Coastguard Worker * true, then the server sets up a new unsynchronized FMQ. This 40*4d7e907cSAndroid Build Coastguard Worker * method is to be used to test multiple reader processes. 41*4d7e907cSAndroid Build Coastguard Worker * 42*4d7e907cSAndroid Build Coastguard Worker * @param configureFmq The server sets up a new unsynchronized FMQ if 43*4d7e907cSAndroid Build Coastguard Worker * this parameter is true. 44*4d7e907cSAndroid Build Coastguard Worker * @param userFd True to initialize the message queue with a user supplied 45*4d7e907cSAndroid Build Coastguard Worker * file descriptor for the ring buffer. 46*4d7e907cSAndroid Build Coastguard Worker * False to let the message queue use a single FD for everything. 47*4d7e907cSAndroid Build Coastguard Worker * 48*4d7e907cSAndroid Build Coastguard Worker * @return ret True if successful. 49*4d7e907cSAndroid Build Coastguard Worker * @return mqDesc This structure describes the unsynchronized FMQ that was 50*4d7e907cSAndroid Build Coastguard Worker * set up by the service. Client can use it to set up the FMQ at its end. 51*4d7e907cSAndroid Build Coastguard Worker */ 52*4d7e907cSAndroid Build Coastguard Worker getFmqUnsyncWrite(bool configureFmq, bool userFd) generates(bool ret, fmq_unsync<int32_t> mqDesc); 53*4d7e907cSAndroid Build Coastguard Worker 54*4d7e907cSAndroid Build Coastguard Worker /** 55*4d7e907cSAndroid Build Coastguard Worker * This method request the service to write into the synchronized read/write 56*4d7e907cSAndroid Build Coastguard Worker * flavor of the FMQ. 57*4d7e907cSAndroid Build Coastguard Worker * 58*4d7e907cSAndroid Build Coastguard Worker * @param count Number to messages to write. 59*4d7e907cSAndroid Build Coastguard Worker * 60*4d7e907cSAndroid Build Coastguard Worker * @return ret True if the write operation was successful. 61*4d7e907cSAndroid Build Coastguard Worker */ 62*4d7e907cSAndroid Build Coastguard Worker requestWriteFmqSync(int32_t count) generates(bool ret); 63*4d7e907cSAndroid Build Coastguard Worker 64*4d7e907cSAndroid Build Coastguard Worker /** 65*4d7e907cSAndroid Build Coastguard Worker * This method request the service to read from the synchronized read/write 66*4d7e907cSAndroid Build Coastguard Worker * FMQ. 67*4d7e907cSAndroid Build Coastguard Worker * 68*4d7e907cSAndroid Build Coastguard Worker * @param count Number to messages to read. 69*4d7e907cSAndroid Build Coastguard Worker * 70*4d7e907cSAndroid Build Coastguard Worker * @return ret True if the read operation was successful. 71*4d7e907cSAndroid Build Coastguard Worker */ 72*4d7e907cSAndroid Build Coastguard Worker requestReadFmqSync(int32_t count) generates(bool ret); 73*4d7e907cSAndroid Build Coastguard Worker 74*4d7e907cSAndroid Build Coastguard Worker /** 75*4d7e907cSAndroid Build Coastguard Worker * This method request the service to write into the unsynchronized flavor 76*4d7e907cSAndroid Build Coastguard Worker * of FMQ. 77*4d7e907cSAndroid Build Coastguard Worker * 78*4d7e907cSAndroid Build Coastguard Worker * @param count Number to messages to write. 79*4d7e907cSAndroid Build Coastguard Worker * 80*4d7e907cSAndroid Build Coastguard Worker * @return ret True if the write operation was successful. 81*4d7e907cSAndroid Build Coastguard Worker */ 82*4d7e907cSAndroid Build Coastguard Worker requestWriteFmqUnsync(int32_t count) generates(bool ret); 83*4d7e907cSAndroid Build Coastguard Worker 84*4d7e907cSAndroid Build Coastguard Worker /** 85*4d7e907cSAndroid Build Coastguard Worker * This method request the service to read from the unsynchronized flavor of 86*4d7e907cSAndroid Build Coastguard Worker * FMQ. 87*4d7e907cSAndroid Build Coastguard Worker * 88*4d7e907cSAndroid Build Coastguard Worker * @param count Number to messages to read. 89*4d7e907cSAndroid Build Coastguard Worker * 90*4d7e907cSAndroid Build Coastguard Worker * @return ret Will be True if the read operation was successful. 91*4d7e907cSAndroid Build Coastguard Worker */ 92*4d7e907cSAndroid Build Coastguard Worker requestReadFmqUnsync(int32_t count) generates(bool ret); 93*4d7e907cSAndroid Build Coastguard Worker 94*4d7e907cSAndroid Build Coastguard Worker /** 95*4d7e907cSAndroid Build Coastguard Worker * This method requests the service to trigger a blocking read. 96*4d7e907cSAndroid Build Coastguard Worker * 97*4d7e907cSAndroid Build Coastguard Worker * @param count Number of messages to read. 98*4d7e907cSAndroid Build Coastguard Worker * 99*4d7e907cSAndroid Build Coastguard Worker */ 100*4d7e907cSAndroid Build Coastguard Worker oneway requestBlockingRead(int32_t count); 101*4d7e907cSAndroid Build Coastguard Worker 102*4d7e907cSAndroid Build Coastguard Worker /** 103*4d7e907cSAndroid Build Coastguard Worker * This method requests the service to trigger a blocking read using 104*4d7e907cSAndroid Build Coastguard Worker * default Event Flag notification bits defined by the MessageQueue class. 105*4d7e907cSAndroid Build Coastguard Worker * 106*4d7e907cSAndroid Build Coastguard Worker * @param count Number of messages to read. 107*4d7e907cSAndroid Build Coastguard Worker * 108*4d7e907cSAndroid Build Coastguard Worker */ 109*4d7e907cSAndroid Build Coastguard Worker oneway requestBlockingReadDefaultEventFlagBits(int32_t count); 110*4d7e907cSAndroid Build Coastguard Worker 111*4d7e907cSAndroid Build Coastguard Worker /** 112*4d7e907cSAndroid Build Coastguard Worker * This method requests the service to repeatedly trigger blocking reads. 113*4d7e907cSAndroid Build Coastguard Worker * 114*4d7e907cSAndroid Build Coastguard Worker * @param count Number of messages to read in a single blocking read. 115*4d7e907cSAndroid Build Coastguard Worker * @param numIter Number of blocking reads to trigger. 116*4d7e907cSAndroid Build Coastguard Worker * 117*4d7e907cSAndroid Build Coastguard Worker */ 118*4d7e907cSAndroid Build Coastguard Worker oneway requestBlockingReadRepeat(int32_t count, int32_t numIter); 119*4d7e907cSAndroid Build Coastguard Worker 120*4d7e907cSAndroid Build Coastguard Worker}; 121