Merge "Adding AidlMQDescriptor and GrantorDescriptor"

This commit is contained in:
Devin Moore 2020-08-17 20:06:59 +00:00 committed by Gerrit Code Review
commit f0fc3e4b8f
6 changed files with 142 additions and 6 deletions

View file

@ -0,0 +1,25 @@
///////////////////////////////////////////////////////////////////////////////
// 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
parcelable GrantorDescriptor {
int flags;
int fdIndex;
int offset;
long extent;
}

View file

@ -0,0 +1,25 @@
///////////////////////////////////////////////////////////////////////////////
// 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
parcelable MQDescriptor {
android.hardware.common.GrantorDescriptor[] grantors;
ParcelFileDescriptor fileDescriptor;
int quantum;
int flags;
}

View file

@ -0,0 +1,25 @@
/*
* 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;
@VintfStability
parcelable GrantorDescriptor {
int flags;
int fdIndex;
int offset;
long extent;
}

View file

@ -0,0 +1,35 @@
/*
* 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;
import android.hardware.common.GrantorDescriptor;
@VintfStability
parcelable MQDescriptor {
/*
* Describes each of the grantors for the message queue. They are used to
* get the readptr, writeptr, dataptr, and the optional EventFlag word
* for blocking operations in the shared memory.
*/
GrantorDescriptor[] grantors;
/* File descriptor for shared memory used in the message queue */
ParcelFileDescriptor fileDescriptor;
/* Size of each item, T, in bytes */
int quantum;
/* EventFlag word for blocking operations */
int flags;
}

View file

@ -19,7 +19,7 @@ cc_library {
relative_install_path: "hw",
srcs: [
"TestMsgQ.cpp",
"BenchmarkMsgQ.cpp"
"BenchmarkMsgQ.cpp",
],
shared_libs: [
"libbase",
@ -34,7 +34,7 @@ cc_library {
// libs should be used on device.
static_libs: [
"android.hardware.tests.msgq@1.0",
]
],
}
cc_test {
@ -49,7 +49,7 @@ cc_test {
"libhidlbase",
"liblog",
"libutils",
"android.hardware.tests.msgq@1.0"
"android.hardware.tests.msgq@1.0",
],
test_suites: ["general-tests"],
}
@ -67,6 +67,7 @@ cc_test {
"libhidlbase",
"liblog",
"libutils",
"libbinder_ndk",
],
// Allow dlsym'ing self for statically linked passthrough implementations
@ -74,7 +75,14 @@ cc_test {
// These are static libs only for testing purposes and portability. Shared
// libs should be used on device.
static_libs: ["android.hardware.tests.msgq@1.0"],
whole_static_libs: ["android.hardware.tests.msgq@1.0-impl"],
static_libs: [
"android.hardware.tests.msgq@1.0",
"android.fmq.test-ndk_platform",
"android.hardware.common-unstable-ndk_platform",
],
whole_static_libs: [
"android.hardware.tests.msgq@1.0-impl",
"android.fmq.test-impl",
],
test_suites: ["general-tests"],
}

View file

@ -16,8 +16,14 @@
#define LOG_TAG "FMQ_UnitTests"
#include <TestAidlMsgQ.h>
#include <android-base/logging.h>
#include <android/binder_manager.h>
#include <android/binder_process.h>
#include <android/hardware/tests/msgq/1.0/ITestMsgQ.h>
using aidl::android::fmq::test::TestAidlMsgQ;
#include <hidl/LegacySupport.h>
using android::hardware::tests::msgq::V1_0::ITestMsgQ;
@ -25,5 +31,17 @@ using android::hardware::defaultPassthroughServiceImplementation;
int main() {
android::hardware::details::setTrebleTestingOverride(true);
return defaultPassthroughServiceImplementation<ITestMsgQ>();
// Register AIDL service
ABinderProcess_startThreadPool();
std::shared_ptr<TestAidlMsgQ> store = ndk::SharedRefBase::make<TestAidlMsgQ>();
const std::string instance = std::string() + TestAidlMsgQ::descriptor + "/default";
LOG(INFO) << "instance: " << instance;
CHECK(AServiceManager_addService(store->asBinder().get(), instance.c_str()) == STATUS_OK);
// Register HIDL service
CHECK(defaultPassthroughServiceImplementation<ITestMsgQ>() == android::OK);
ABinderProcess_joinThreadPool();
return EXIT_FAILURE; // should not reach
}