diff options
author | Howard Chen <howardsoc@google.com> | 2017-11-07 23:45:02 +0800 |
---|---|---|
committer | Howard Chen <howardsoc@google.com> | 2017-11-29 21:52:48 +0800 |
commit | 23e163b58080f43b7029d75afce1bb11086c4094 (patch) | |
tree | c7f573c32ed92bb2bb22c0b9e2e7a21a3dc99ed8 /libhidlmemory | |
parent | c68b413ee56b0a309ff0b1c44cd2749c6028c3ee (diff) | |
download | libhidl-23e163b58080f43b7029d75afce1bb11086c4094.tar.gz |
Add IMemoryToken and the HidlMemoryToken
The IMemoryToken is an interface which composes shared memory.
It provides a get() method, which returns an instance of hidl_memory
that always refer to the same memory.
The HidlMemoryToken is an implementation of the IMemoryToken.
Bug: 69640337
Test: hidl_test
Change-Id: Idf3a090213be8cb315134143cb81e1d7df91b4a2
Diffstat (limited to 'libhidlmemory')
-rw-r--r-- | libhidlmemory/Android.bp | 5 | ||||
-rw-r--r-- | libhidlmemory/HidlMemoryToken.cpp | 29 | ||||
-rw-r--r-- | libhidlmemory/include/hidlmemory/HidlMemoryToken.h | 36 |
3 files changed, 69 insertions, 1 deletions
diff --git a/libhidlmemory/Android.bp b/libhidlmemory/Android.bp index e854ab5..2135ef3 100644 --- a/libhidlmemory/Android.bp +++ b/libhidlmemory/Android.bp @@ -27,17 +27,20 @@ cc_library { "libcutils", "libhidlbase", "libhidltransport", - "android.hidl.memory@1.0" + "android.hidl.memory@1.0", + "android.hidl.memory.token@1.0", ], local_include_dirs: ["include"], export_include_dirs: ["include"], export_shared_lib_headers: [ "android.hidl.memory@1.0", + "android.hidl.memory.token@1.0", "libhidlbase" ], srcs: [ + "HidlMemoryToken.cpp", "mapping.cpp" ], diff --git a/libhidlmemory/HidlMemoryToken.cpp b/libhidlmemory/HidlMemoryToken.cpp new file mode 100644 index 0000000..3840183 --- /dev/null +++ b/libhidlmemory/HidlMemoryToken.cpp @@ -0,0 +1,29 @@ +/* + * Copyright (C) 2016 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. + */ +#include <hidlmemory/HidlMemoryToken.h> + +namespace android { +namespace hardware { + +HidlMemoryToken::HidlMemoryToken(sp<HidlMemory> memory) : mMemory(memory) {} + +Return<void> HidlMemoryToken::get(get_cb _hidl_cb) { + _hidl_cb(*mMemory); + return Void(); +} + +} // namespace hardware +} // namespace android diff --git a/libhidlmemory/include/hidlmemory/HidlMemoryToken.h b/libhidlmemory/include/hidlmemory/HidlMemoryToken.h new file mode 100644 index 0000000..4020377 --- /dev/null +++ b/libhidlmemory/include/hidlmemory/HidlMemoryToken.h @@ -0,0 +1,36 @@ +/* + * Copyright (C) 2017 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. + */ +#ifndef ANDROID_HARDWARE_HIDLMEMORYTOKEN_H +#define ANDROID_HARDWARE_HIDLMEMORYTOKEN_H + +#include <android/hidl/memory/token/1.0/IMemoryToken.h> + +namespace android { +namespace hardware { + +class HidlMemoryToken : public virtual ::android::hidl::memory::token::V1_0::IMemoryToken { + public: + Return<void> get(get_cb _hidl_cb) override; + + HidlMemoryToken(sp<HidlMemory> memory); + + protected: + sp<HidlMemory> mMemory; +}; + +} // namespace hardware +} // namespace android +#endif |