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