Add template parameters to MQDescriptor

First parameter is used to determine the type of the payload, and the
second parameter is used to determine the type of queue.
Added two types to be use in that second parameter.
SynchronizedReadWrite and UnsynchronizedWrite.

Test: atest fmq_unit_tests fmq_test
Bug: 142326204

Change-Id: If736389ebecd02b87879850714606523e5145579
This commit is contained in:
Devin Moore 2020-09-09 13:38:52 -07:00
parent 0a10d6918c
commit 340f895d30
5 changed files with 102 additions and 1 deletions

View file

@ -0,0 +1,22 @@
///////////////////////////////////////////////////////////////////////////////
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
///////////////////////////////////////////////////////////////////////////////
// This file is a snapshot of an AIDL interface (or parcelable). Do not try to
// edit this file. It looks like you are doing that because you have modified
// an AIDL interface in a backward-incompatible way, e.g., deleting a function
// from an interface or a field from a parcelable and it broke the build. That
// breakage is intended.
//
// You must not make a backward incompatible changes to the AIDL files built
// with the aidl_interface module type with versions property set. The module
// type is used to build AIDL files in a way that they can be used across
// independently updatable components of the system. If a device is shipped
// with such a backward incompatible change, it has a high risk of breaking
// later when a module using the interface is updated, e.g., Mainline modules.
package android.hardware.common;
@VintfStability
enum SynchronizedReadWrite {
EMPTY = 0,
}

View file

@ -0,0 +1,22 @@
///////////////////////////////////////////////////////////////////////////////
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. //
///////////////////////////////////////////////////////////////////////////////
// This file is a snapshot of an AIDL interface (or parcelable). Do not try to
// edit this file. It looks like you are doing that because you have modified
// an AIDL interface in a backward-incompatible way, e.g., deleting a function
// from an interface or a field from a parcelable and it broke the build. That
// breakage is intended.
//
// You must not make a backward incompatible changes to the AIDL files built
// with the aidl_interface module type with versions property set. The module
// type is used to build AIDL files in a way that they can be used across
// independently updatable components of the system. If a device is shipped
// with such a backward incompatible change, it has a high risk of breaking
// later when a module using the interface is updated, e.g., Mainline modules.
package android.hardware.common;
@VintfStability
enum UnsynchronizedWrite {
EMPTY = 0,
}

View file

@ -22,9 +22,12 @@ import android.hardware.common.GrantorDescriptor;
* For use with libfmq. This is created from an instance of AidlMessageQueue,
* and is used to pass information required to create another instance of that
* queue for fast communication.
* T - is used to specify the type of the payload
* Flavor - is used to specify the type of the queue using
* android.hardware.common.SynchronizedReadWrite or UnsynchronizedWrite
*/
@VintfStability
parcelable MQDescriptor {
parcelable MQDescriptor<T, Flavor> {
/*
* Describes each of the grantors for the message queue. They are used to
* get the readptr, writeptr, dataptr, and the optional EventFlag word

View file

@ -0,0 +1,27 @@
/*
* Copyright 2020 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.hardware.common;
/*
* For use with android.hardware.common.MQDescriptor to specify which type of
* queue to use. SynchronizedReadWrite is single reader, single writer, with no
* overflow. All messages written need to be read.
*/
@VintfStability
enum SynchronizedReadWrite {
EMPTY,
}

View file

@ -0,0 +1,27 @@
/*
* Copyright 2020 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.hardware.common;
/*
* For use with android.hardware.common.MQDescriptor to specify which type of
* queue to use. UnsynchronizedWrite is single writer, multiple reader, with
* overflow. If messages are not read fast enough, they can be overwritten.
*/
@VintfStability
enum UnsynchronizedWrite {
EMPTY,
}