blob: bbac785a337db0ba7a6e21fdb0cb92dd2511c02d [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>
Ryan Prichard0277d0a2018-07-19 20:32:19 -070033#include <sys/cdefs.h>
John Reck9f5599b2017-08-07 11:18:40 -070034
35/******************************************************************
36 *
37 * IMPORTANT NOTICE:
38 *
39 * This file is part of Android's set of stable system headers
40 * exposed by the Android NDK (Native Development Kit).
41 *
42 * Third-party source AND binary code relies on the definitions
43 * here to be FROZEN ON ALL UPCOMING PLATFORM RELEASES.
44 *
45 * - DO NOT MODIFY ENUMS (EXCEPT IF YOU ADD NEW 32-BIT VALUES)
46 * - DO NOT MODIFY CONSTANTS OR FUNCTIONAL MACROS
47 * - DO NOT CHANGE THE SIGNATURE OF FUNCTIONS IN ANY WAY
48 * - DO NOT CHANGE THE LAYOUT OR SIZE OF STRUCTURES
49 */
50
John Reck9f5599b2017-08-07 11:18:40 -070051#ifdef __cplusplus
52extern "C" {
53#endif
54
John Reck9f5599b2017-08-07 11:18:40 -070055/**
56 * Returns a dup'd FD from the given Java android.os.SharedMemory object. The returned file
57 * descriptor has all the same properties & capabilities as the FD returned from
58 * ASharedMemory_create(), however the protection flags will be the same as those of the
59 * android.os.SharedMemory object.
60 *
61 * Use close() to release the shared memory region.
62 *
Elliott Hughes0c757122018-07-31 12:10:19 -070063 * Available since API level 27.
64 *
John Reck9f5599b2017-08-07 11:18:40 -070065 * \param env The JNIEnv* pointer
66 * \param sharedMemory The Java android.os.SharedMemory object
67 * \return file descriptor that denotes the shared memory; -1 if the shared memory object is
John Reck4c055832017-08-18 09:44:38 -070068 * already closed, if the JNIEnv or jobject is NULL, or if there are too many open file
69 * descriptors (errno=EMFILE)
John Reck9f5599b2017-08-07 11:18:40 -070070 */
Elliott Hughesc2fcafc2018-06-18 12:28:46 -070071int ASharedMemory_dupFromJava(JNIEnv* env, jobject sharedMemory) __INTRODUCED_IN(27);
John Reck9f5599b2017-08-07 11:18:40 -070072
John Reck9f5599b2017-08-07 11:18:40 -070073#ifdef __cplusplus
74};
75#endif
76
77#endif // ANDROID_SHARED_MEMORY_JNI_H
78
79/** @} */