diff options
author | 2017-02-24 01:53:10 -0800 | |
---|---|---|
committer | 2017-02-24 02:42:51 -0800 | |
commit | 5f88ac5ccef78203c62e32e0503f18dd46102c5e (patch) | |
tree | 1bd5f063160e2b605034a1347a5093aef2b3cd70 | |
parent | a722a2ea38f65eda5e7cfaaff29465d396e6f1a3 (diff) |
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
-rw-r--r-- | native/android/Android.mk | 1 | ||||
-rw-r--r-- | native/android/libandroid.map.txt | 3 | ||||
-rw-r--r-- | native/android/sharedmem.cpp | 34 |
3 files changed, 38 insertions, 0 deletions
diff --git a/native/android/Android.mk b/native/android/Android.mk index f8405ef751a4..743732edcf26 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 f9e8fda81c09..e2623d4fd9ee 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 000000000000..9d029dfad41a --- /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 <android/sharedmem.h> +#include <cutils/ashmem.h> +#include <utils/Errors.h> + +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); +} |