From 5f88ac5ccef78203c62e32e0503f18dd46102c5e Mon Sep 17 00:00:00 2001 From: Peng Xu Date: Fri, 24 Feb 2017 01:53:10 -0800 Subject: [PATCH] Added implementation of shared memory NDK API Implemeneted the following APIs: * int ASharedMemory_create(const char *name, size_t size); * size_t ASharedMemory_getSize(int fd); * int ASharedMemory_setProt(int fd, int prot); Test: cts-tradefed run cts --module CtsSensorTestCases \ --test android.hardware.cts.SensorNativeTest Bug: 5995644, 30985702 Change-Id: I645b35e67293673efce9bb90f042ec0d3b83aa42 --- native/android/Android.mk | 1 + native/android/libandroid.map.txt | 3 +++ native/android/sharedmem.cpp | 34 +++++++++++++++++++++++++++++++ 3 files changed, 38 insertions(+) create mode 100644 native/android/sharedmem.cpp diff --git a/native/android/Android.mk b/native/android/Android.mk index f8405ef751a44..743732edcf26c 100644 --- a/native/android/Android.mk +++ b/native/android/Android.mk @@ -21,6 +21,7 @@ LOCAL_SRC_FILES:= \ net.c \ obb.cpp \ sensor.cpp \ + sharedmem.cpp \ storage_manager.cpp \ trace.cpp \ diff --git a/native/android/libandroid.map.txt b/native/android/libandroid.map.txt index f9e8fda81c09a..e2623d4fd9eea 100644 --- a/native/android/libandroid.map.txt +++ b/native/android/libandroid.map.txt @@ -186,6 +186,9 @@ LIBANDROID { ASensor_getType; ASensor_getVendor; ASensor_isWakeUpSensor; # introduced=21 + ASharedMemory_create; # introduced=26 + ASharedMemory_getSize; # introduced=26 + ASharedMemory_setProt; # introduced=26 AStorageManager_delete; AStorageManager_getMountedObbPath; AStorageManager_isObbMounted; diff --git a/native/android/sharedmem.cpp b/native/android/sharedmem.cpp new file mode 100644 index 0000000000000..9d029dfad41a8 --- /dev/null +++ b/native/android/sharedmem.cpp @@ -0,0 +1,34 @@ +/* + * 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. + */ + +#include +#include +#include + +int ASharedMemory_create(const char *name, size_t size) { + if (size == 0) { + return android::BAD_VALUE; + } + return ashmem_create_region(name, size); +} + +size_t ASharedMemory_getSize(int fd) { + return ashmem_valid(fd) ? ashmem_get_size_region(fd) : 0; +} + +int ASharedMemory_setProt(int fd, int prot) { + return ashmem_set_prot_region(fd, prot); +}