xref: /aosp_15_r20/frameworks/native/include/android/sharedmem_jni.h (revision 38e8c45f13ce32b0dcecb25141ffecaf386fa17f)
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