1*38e8c45fSAndroid Build Coastguard Worker /* 2*38e8c45fSAndroid Build Coastguard Worker * Copyright (C) 2017 The Android Open Source Project 3*38e8c45fSAndroid Build Coastguard Worker * 4*38e8c45fSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*38e8c45fSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*38e8c45fSAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*38e8c45fSAndroid Build Coastguard Worker * 8*38e8c45fSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*38e8c45fSAndroid Build Coastguard Worker * 10*38e8c45fSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*38e8c45fSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*38e8c45fSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*38e8c45fSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*38e8c45fSAndroid Build Coastguard Worker * limitations under the License. 15*38e8c45fSAndroid Build Coastguard Worker */ 16*38e8c45fSAndroid Build Coastguard Worker 17*38e8c45fSAndroid Build Coastguard Worker /** 18*38e8c45fSAndroid Build Coastguard Worker * @addtogroup Memory 19*38e8c45fSAndroid Build Coastguard Worker * @{ 20*38e8c45fSAndroid Build Coastguard Worker */ 21*38e8c45fSAndroid Build Coastguard Worker 22*38e8c45fSAndroid Build Coastguard Worker /** 23*38e8c45fSAndroid Build Coastguard Worker * @file sharedmem_jni.h 24*38e8c45fSAndroid Build Coastguard Worker * @brief Shared memory buffers that can be shared across process. 25*38e8c45fSAndroid Build Coastguard Worker */ 26*38e8c45fSAndroid Build Coastguard Worker 27*38e8c45fSAndroid Build Coastguard Worker #ifndef ANDROID_SHARED_MEMORY_JNI_H 28*38e8c45fSAndroid Build Coastguard Worker #define ANDROID_SHARED_MEMORY_JNI_H 29*38e8c45fSAndroid Build Coastguard Worker 30*38e8c45fSAndroid Build Coastguard Worker #include <jni.h> 31*38e8c45fSAndroid Build Coastguard Worker #include <android/sharedmem.h> 32*38e8c45fSAndroid Build Coastguard Worker #include <stddef.h> 33*38e8c45fSAndroid Build Coastguard Worker #include <sys/cdefs.h> 34*38e8c45fSAndroid Build Coastguard Worker 35*38e8c45fSAndroid Build Coastguard Worker /****************************************************************** 36*38e8c45fSAndroid Build Coastguard Worker * 37*38e8c45fSAndroid Build Coastguard Worker * IMPORTANT NOTICE: 38*38e8c45fSAndroid Build Coastguard Worker * 39*38e8c45fSAndroid Build Coastguard Worker * This file is part of Android's set of stable system headers 40*38e8c45fSAndroid Build Coastguard Worker * exposed by the Android NDK (Native Development Kit). 41*38e8c45fSAndroid Build Coastguard Worker * 42*38e8c45fSAndroid Build Coastguard Worker * Third-party source AND binary code relies on the definitions 43*38e8c45fSAndroid Build Coastguard Worker * here to be FROZEN ON ALL UPCOMING PLATFORM RELEASES. 44*38e8c45fSAndroid Build Coastguard Worker * 45*38e8c45fSAndroid Build Coastguard Worker * - DO NOT MODIFY ENUMS (EXCEPT IF YOU ADD NEW 32-BIT VALUES) 46*38e8c45fSAndroid Build Coastguard Worker * - DO NOT MODIFY CONSTANTS OR FUNCTIONAL MACROS 47*38e8c45fSAndroid Build Coastguard Worker * - DO NOT CHANGE THE SIGNATURE OF FUNCTIONS IN ANY WAY 48*38e8c45fSAndroid Build Coastguard Worker * - DO NOT CHANGE THE LAYOUT OR SIZE OF STRUCTURES 49*38e8c45fSAndroid Build Coastguard Worker */ 50*38e8c45fSAndroid Build Coastguard Worker 51*38e8c45fSAndroid Build Coastguard Worker #ifdef __cplusplus 52*38e8c45fSAndroid Build Coastguard Worker extern "C" { 53*38e8c45fSAndroid Build Coastguard Worker #endif 54*38e8c45fSAndroid Build Coastguard Worker 55*38e8c45fSAndroid Build Coastguard Worker /** 56*38e8c45fSAndroid Build Coastguard Worker * Returns a dup'd FD from the given Java android.os.SharedMemory object. The returned file 57*38e8c45fSAndroid Build Coastguard Worker * descriptor has all the same properties & capabilities as the FD returned from 58*38e8c45fSAndroid Build Coastguard Worker * ASharedMemory_create(), however the protection flags will be the same as those of the 59*38e8c45fSAndroid Build Coastguard Worker * android.os.SharedMemory object. 60*38e8c45fSAndroid Build Coastguard Worker * 61*38e8c45fSAndroid Build Coastguard Worker * Use close() to release the shared memory region. 62*38e8c45fSAndroid Build Coastguard Worker * 63*38e8c45fSAndroid Build Coastguard Worker * Available since API level 27. 64*38e8c45fSAndroid Build Coastguard Worker * 65*38e8c45fSAndroid Build Coastguard Worker * \param env The JNIEnv* pointer 66*38e8c45fSAndroid Build Coastguard Worker * \param sharedMemory The Java android.os.SharedMemory object 67*38e8c45fSAndroid Build Coastguard Worker * \return file descriptor that denotes the shared memory; -1 if the shared memory object is 68*38e8c45fSAndroid Build Coastguard Worker * already closed, if the JNIEnv or jobject is NULL, or if there are too many open file 69*38e8c45fSAndroid Build Coastguard Worker * descriptors (errno=EMFILE) 70*38e8c45fSAndroid Build Coastguard Worker */ 71*38e8c45fSAndroid Build Coastguard Worker int ASharedMemory_dupFromJava(JNIEnv* env, jobject sharedMemory) __INTRODUCED_IN(27); 72*38e8c45fSAndroid Build Coastguard Worker 73*38e8c45fSAndroid Build Coastguard Worker #ifdef __cplusplus 74*38e8c45fSAndroid Build Coastguard Worker }; 75*38e8c45fSAndroid Build Coastguard Worker #endif 76*38e8c45fSAndroid Build Coastguard Worker 77*38e8c45fSAndroid Build Coastguard Worker #endif // ANDROID_SHARED_MEMORY_JNI_H 78*38e8c45fSAndroid Build Coastguard Worker 79*38e8c45fSAndroid Build Coastguard Worker /** @} */ 80