Merge "Use NativeHandle in MQDescriptor instead of ParcelFileDescriptor" am: 1f00c21c28
am: 689e51eb68
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/1556319 MUST ONLY BE SUBMITTED BY AUTOMERGER Change-Id: I8e7b23dc4dafadb596caceb533fcb2307ce5e3a9
This commit is contained in:
commit
5dd7ba40f1
11 changed files with 62 additions and 32 deletions
|
@ -9,6 +9,9 @@ aidl_interface {
|
|||
srcs: [
|
||||
"android/hardware/common/fmq/*.aidl",
|
||||
],
|
||||
imports: [
|
||||
"android.hardware.common",
|
||||
],
|
||||
stability: "vintf",
|
||||
backend: {
|
||||
java: {
|
||||
|
|
|
@ -2,13 +2,14 @@
|
|||
// 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.
|
||||
// This file is a snapshot of an AIDL file. Do not edit it manually. There are
|
||||
// two cases:
|
||||
// 1). this is a frozen version file - do not edit this in any case.
|
||||
// 2). this is a 'current' file. If you make a backwards compatible change to
|
||||
// the interface (from the latest frozen version), the build system will
|
||||
// prompt you to update this file with `m <name>-update-api`.
|
||||
//
|
||||
// You must not make a backward incompatible changes to the AIDL files built
|
||||
// You must not make a backward incompatible change to any AIDL file 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
|
||||
|
@ -18,6 +19,7 @@
|
|||
package android.hardware.common.fmq;
|
||||
@VintfStability
|
||||
parcelable GrantorDescriptor {
|
||||
int fdIndex;
|
||||
int offset;
|
||||
long extent;
|
||||
}
|
||||
|
|
|
@ -2,13 +2,14 @@
|
|||
// 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.
|
||||
// This file is a snapshot of an AIDL file. Do not edit it manually. There are
|
||||
// two cases:
|
||||
// 1). this is a frozen version file - do not edit this in any case.
|
||||
// 2). this is a 'current' file. If you make a backwards compatible change to
|
||||
// the interface (from the latest frozen version), the build system will
|
||||
// prompt you to update this file with `m <name>-update-api`.
|
||||
//
|
||||
// You must not make a backward incompatible changes to the AIDL files built
|
||||
// You must not make a backward incompatible change to any AIDL file 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
|
||||
|
@ -19,7 +20,7 @@ package android.hardware.common.fmq;
|
|||
@VintfStability
|
||||
parcelable MQDescriptor {
|
||||
android.hardware.common.fmq.GrantorDescriptor[] grantors;
|
||||
ParcelFileDescriptor fileDescriptor;
|
||||
android.hardware.common.NativeHandle handle;
|
||||
int quantum;
|
||||
int flags;
|
||||
}
|
||||
|
|
|
@ -2,13 +2,14 @@
|
|||
// 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.
|
||||
// This file is a snapshot of an AIDL file. Do not edit it manually. There are
|
||||
// two cases:
|
||||
// 1). this is a frozen version file - do not edit this in any case.
|
||||
// 2). this is a 'current' file. If you make a backwards compatible change to
|
||||
// the interface (from the latest frozen version), the build system will
|
||||
// prompt you to update this file with `m <name>-update-api`.
|
||||
//
|
||||
// You must not make a backward incompatible changes to the AIDL files built
|
||||
// You must not make a backward incompatible change to any AIDL file 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
|
||||
|
|
|
@ -2,13 +2,14 @@
|
|||
// 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.
|
||||
// This file is a snapshot of an AIDL file. Do not edit it manually. There are
|
||||
// two cases:
|
||||
// 1). this is a frozen version file - do not edit this in any case.
|
||||
// 2). this is a 'current' file. If you make a backwards compatible change to
|
||||
// the interface (from the latest frozen version), the build system will
|
||||
// prompt you to update this file with `m <name>-update-api`.
|
||||
//
|
||||
// You must not make a backward incompatible changes to the AIDL files built
|
||||
// You must not make a backward incompatible change to any AIDL file 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
|
||||
|
|
|
@ -21,6 +21,10 @@ package android.hardware.common.fmq;
|
|||
*/
|
||||
@VintfStability
|
||||
parcelable GrantorDescriptor {
|
||||
/*
|
||||
* Index of file descriptor for this grantor
|
||||
*/
|
||||
int fdIndex;
|
||||
/*
|
||||
* The offset of this descriptor in the shared memory in bytes.
|
||||
*/
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
|
||||
package android.hardware.common.fmq;
|
||||
|
||||
import android.hardware.common.NativeHandle;
|
||||
import android.hardware.common.fmq.GrantorDescriptor;
|
||||
|
||||
/*
|
||||
|
@ -34,8 +35,11 @@ parcelable MQDescriptor<T, Flavor> {
|
|||
* for blocking operations in the shared memory.
|
||||
*/
|
||||
GrantorDescriptor[] grantors;
|
||||
/* File descriptor for shared memory used in the message queue */
|
||||
ParcelFileDescriptor fileDescriptor;
|
||||
/*
|
||||
* NativeHandle that contains the file descriptors for shared memory used
|
||||
* in the message queue
|
||||
*/
|
||||
NativeHandle handle;
|
||||
/* Size of each item, T, in bytes */
|
||||
int quantum;
|
||||
/* EventFlag word for blocking operations */
|
||||
|
|
|
@ -41,12 +41,15 @@ interface ITestMsgQ {
|
|||
*
|
||||
* @param configureFmq The server sets up a new unsynchronized FMQ if
|
||||
* this parameter is true.
|
||||
* @param userFd True to initialize the message queue with a user supplied
|
||||
* file descriptor for the ring buffer.
|
||||
* False to let the message queue use a single FD for everything.
|
||||
*
|
||||
* @return ret True if successful.
|
||||
* @return mqDesc This structure describes the unsynchronized FMQ that was
|
||||
* set up by the service. Client can use it to set up the FMQ at its end.
|
||||
*/
|
||||
getFmqUnsyncWrite(bool configureFmq) generates(bool ret, fmq_unsync<int32_t> mqDesc);
|
||||
getFmqUnsyncWrite(bool configureFmq, bool userFd) generates(bool ret, fmq_unsync<int32_t> mqDesc);
|
||||
|
||||
/**
|
||||
* This method request the service to write into the synchronized read/write
|
||||
|
|
|
@ -91,9 +91,10 @@ cc_test {
|
|||
// These are static libs only for testing purposes and portability. Shared
|
||||
// libs should be used on device.
|
||||
static_libs: [
|
||||
"android.hardware.common-unstable-ndk_platform",
|
||||
"android.hardware.common.fmq-unstable-ndk_platform",
|
||||
"android.hardware.tests.msgq@1.0",
|
||||
"android.fmq.test-ndk_platform",
|
||||
"android.hardware.common.fmq-unstable-ndk_platform",
|
||||
],
|
||||
whole_static_libs: [
|
||||
"android.hardware.tests.msgq@1.0-impl",
|
||||
|
|
|
@ -41,10 +41,19 @@ Return<bool> TestMsgQ::configureFmqSyncReadWrite(
|
|||
return true;
|
||||
}
|
||||
|
||||
Return<void> TestMsgQ::getFmqUnsyncWrite(bool configureFmq, getFmqUnsyncWrite_cb _hidl_cb) {
|
||||
Return<void> TestMsgQ::getFmqUnsyncWrite(bool configureFmq, bool userFd,
|
||||
getFmqUnsyncWrite_cb _hidl_cb) {
|
||||
if (configureFmq) {
|
||||
static constexpr size_t kNumElementsInQueue = 1024;
|
||||
mFmqUnsynchronized.reset(new (std::nothrow) MessageQueueUnsync(kNumElementsInQueue));
|
||||
static constexpr size_t kElementSizeBytes = sizeof(int32_t);
|
||||
android::base::unique_fd ringbufferFd;
|
||||
if (userFd) {
|
||||
ringbufferFd.reset(
|
||||
::ashmem_create_region("UnsyncWrite", kNumElementsInQueue * kElementSizeBytes));
|
||||
}
|
||||
mFmqUnsynchronized.reset(new (std::nothrow) MessageQueueUnsync(
|
||||
kNumElementsInQueue, false, std::move(ringbufferFd),
|
||||
kNumElementsInQueue * kElementSizeBytes));
|
||||
}
|
||||
if ((mFmqUnsynchronized == nullptr) ||
|
||||
(mFmqUnsynchronized->isValid() == false)) {
|
||||
|
|
|
@ -56,7 +56,8 @@ struct TestMsgQ : public ITestMsgQ {
|
|||
|
||||
// Methods from ::android::hardware::tests::msgq::V1_0::ITestMsgQ follow.
|
||||
Return<bool> configureFmqSyncReadWrite(const MQDescriptorSync<int32_t>& mqDesc) override;
|
||||
Return<void> getFmqUnsyncWrite(bool configureFmq, getFmqUnsyncWrite_cb _hidl_cb) override;
|
||||
Return<void> getFmqUnsyncWrite(bool configureFmq, bool userFd,
|
||||
getFmqUnsyncWrite_cb _hidl_cb) override;
|
||||
Return<bool> requestWriteFmqSync(int32_t count) override;
|
||||
Return<bool> requestReadFmqSync(int32_t count) override;
|
||||
Return<bool> requestWriteFmqUnsync(int32_t count) override;
|
||||
|
|
Loading…
Reference in a new issue