diff --git a/benchmarks/msgq/1.0/IBenchmarkMsgQ.hal b/benchmarks/msgq/1.0/IBenchmarkMsgQ.hal
index a3ed72b..2e50335 100644
--- a/benchmarks/msgq/1.0/IBenchmarkMsgQ.hal
+++ b/benchmarks/msgq/1.0/IBenchmarkMsgQ.hal
@@ -17,11 +17,62 @@
 package android.hardware.benchmarks.msgq@1.0;
 
 interface IBenchmarkMsgQ {
-  ConfigureClientInbox() generates (int32_t ret, MQDescriptor mq_desc_in );
-  ConfigureClientOutbox() generates ( int32_t ret, MQDescriptor mq_desc_out );
-  RequestWrite (int32_t count) generates (int32_t ret);
-  RequestRead(int32_t count) generates (int32_t ret);
-  BenchmarkPingPong(uint32_t numIter);
-  BenchmarkServiceWriteClientRead(uint32_t numIter);
-  SendTimeData(vec<int64_t> time_data);
+    /*
+     * This method requests the service to set up Synchronous read/write
+     * wait-free FMQ with the client as reader.
+     * @return ret Will be 0 if the setup is successful.
+     * @return mqDescIn This structure describes the FMQ that was set up
+     * by the service. Client can use it to set up the FMQ at its end.
+     */
+    configureClientInboxSyncReadWrite()
+        generates(int32_t ret, MQDescriptorSync mqDescIn);
+
+    /*
+     * This method requests the service to set up Synchronous read/write
+     * wait-free FMQ with the client as writer.
+     * @return Will be 0 if the setup is successful.
+     * @return mqDescOut This structure describes the FMQ that was set up
+     * by the service. Client can use it to set up the FMQ at its end.
+     */
+    configureClientOutboxSyncReadWrite()
+        generates(int32_t ret, MQDescriptorSync mqDescOut);
+
+    /*
+     * This method request the service to write into the FMQ.
+     * @param count Number to messages to write.
+     * @ret Number of messages succesfully written.
+     */
+    requestWrite(int32_t count) generates (int32_t ret);
+
+    /*
+     * This method request the service to read from the FMQ.
+     * @param count Number to messages to read.
+     * @ret Number of messages succesfully read.
+     */
+    requestRead(int32_t count) generates (int32_t ret);
+
+    /*
+     * This method kicks off a benchmarking experiment where
+     * the client writes a message into its outbox FMQ,
+     * the service reads it and writes it into the client's
+     * inbox FMQ and the client reads the message.
+     * The average time taken for the experiment is measured.
+     * @param numIter The number of iterations to run the experiment.
+     */
+    benchmarkPingPong(uint32_t numIter);
+
+    /*
+     * This method kicks off a benchmarking experiment where
+     * the service writes into an FMQ and the client reads the same.
+     * @param numIter The number of iterations to run the experiment.
+     */
+    benchmarkServiceWriteClientRead(uint32_t numIter);
+
+    /*
+     * This method sends a vector of time duration(in ns).
+     * @param timeData vector of time instants measured by client.
+     * Each entry is the number of ns between the epoch and a
+     * std::chrono::time_point.
+     */
+    sendTimeData(vec<int64_t> timeData);
 };
