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