blob: 62bef0abf916dcff97c59674a2db9557b8e469fd [file] [log] [blame]
Martijn Coenencbe590c2016-08-30 11:27:56 -07001/*
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
Hridya Valsaraju3e320032016-08-08 11:12:30 -070017package android.hardware.tests.msgq@1.0;
18
19interface ITestMsgQ {
Hridya Valsaraju710e4a32016-12-15 09:14:13 -080020 enum EventFlagBits : uint32_t {
Devin Moore44e0d472024-07-12 01:20:35 +000021 FMQ_NOT_FULL = 1 << 0,
22 FMQ_NOT_EMPTY = 1 << 1,
Hridya Valsaraju710e4a32016-12-15 09:14:13 -080023 };
24
Andreas Huber3e4acb82017-03-28 14:40:58 -070025 /**
Hridya Valsarajub4358452016-10-14 16:48:01 -070026 * This method requests the service to set up a synchronous read/write
Hans Chen58d52f72018-07-14 17:23:45 -070027 * 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.
Hridya Valsarajub4358452016-10-14 16:48:01 -070031 *
32 * @return ret True if the setup is successful.
Hridya Valsaraju9d9672c2016-09-21 17:47:06 -070033 */
Devin Moore7a268022020-09-22 17:20:54 +000034 configureFmqSyncReadWrite(fmq_sync<int32_t> mqDesc) generates(bool ret);
Hridya Valsaraju3e320032016-08-08 11:12:30 -070035
Andreas Huber3e4acb82017-03-28 14:40:58 -070036 /**
Hridya Valsarajuc3db9c82017-02-13 14:38:26 -080037 * 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.
Hridya Valsarajub4358452016-10-14 16:48:01 -070041 *
Hridya Valsarajuc3db9c82017-02-13 14:38:26 -080042 * @param configureFmq The server sets up a new unsynchronized FMQ if
43 * this parameter is true.
Devin Moore17365e52021-01-18 16:11:20 -080044 * @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.
Hridya Valsarajuc3db9c82017-02-13 14:38:26 -080047 *
48 * @return ret True if successful.
49 * @return mqDesc This structure describes the unsynchronized FMQ that was
Hridya Valsarajub4358452016-10-14 16:48:01 -070050 * set up by the service. Client can use it to set up the FMQ at its end.
Hridya Valsaraju9d9672c2016-09-21 17:47:06 -070051 */
Devin Moore17365e52021-01-18 16:11:20 -080052 getFmqUnsyncWrite(bool configureFmq, bool userFd) generates(bool ret, fmq_unsync<int32_t> mqDesc);
Hridya Valsaraju3e320032016-08-08 11:12:30 -070053
Andreas Huber3e4acb82017-03-28 14:40:58 -070054 /**
Hridya Valsarajub4358452016-10-14 16:48:01 -070055 * 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.
Hridya Valsaraju9d9672c2016-09-21 17:47:06 -070061 */
Hridya Valsarajub4358452016-10-14 16:48:01 -070062 requestWriteFmqSync(int32_t count) generates(bool ret);
63
Andreas Huber3e4acb82017-03-28 14:40:58 -070064 /**
Hridya Valsarajub4358452016-10-14 16:48:01 -070065 * 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
Andreas Huber3e4acb82017-03-28 14:40:58 -070074 /**
Hridya Valsarajub4358452016-10-14 16:48:01 -070075 * 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
Andreas Huber3e4acb82017-03-28 14:40:58 -070084 /**
Hridya Valsarajub4358452016-10-14 16:48:01 -070085 * 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
Andreas Huber3e4acb82017-03-28 14:40:58 -070094 /**
Hridya Valsaraju710e4a32016-12-15 09:14:13 -080095 * 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);
Hridya Valsaraju9ba92442017-01-04 16:19:36 -0800101
Andreas Huber3e4acb82017-03-28 14:40:58 -0700102 /**
Hridya Valsaraju586bed12017-01-13 20:58:17 -0800103 * 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
Andreas Huber3e4acb82017-03-28 14:40:58 -0700111 /**
Hridya Valsaraju9ba92442017-01-04 16:19:36 -0800112 * 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
Hridya Valsaraju3e320032016-08-08 11:12:30 -0700120};