blob: d8b514f680672efb19737e6f8a6a1bb22877499e [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
24 */
25
26#ifndef ANDROID_SHARED_MEMORY_JNI_H
27#define ANDROID_SHARED_MEMORY_JNI_H
28
29#include <jni.h>
30#include <android/sharedmem.h>
31#include <stddef.h>
32
33/******************************************************************
34 *
35 * IMPORTANT NOTICE:
36 *
37 * This file is part of Android's set of stable system headers
38 * exposed by the Android NDK (Native Development Kit).
39 *
40 * Third-party source AND binary code relies on the definitions
41 * here to be FROZEN ON ALL UPCOMING PLATFORM RELEASES.
42 *
43 * - DO NOT MODIFY ENUMS (EXCEPT IF YOU ADD NEW 32-BIT VALUES)
44 * - DO NOT MODIFY CONSTANTS OR FUNCTIONAL MACROS
45 * - DO NOT CHANGE THE SIGNATURE OF FUNCTIONS IN ANY WAY
46 * - DO NOT CHANGE THE LAYOUT OR SIZE OF STRUCTURES
47 */
48
49/**
50 * Structures and functions for a shared memory buffer that can be shared across process.
51 */
52
53#ifdef __cplusplus
54extern "C" {
55#endif
56
John Reck9f5599b2017-08-07 11:18:40 -070057/**
58 * Returns a dup'd FD from the given Java android.os.SharedMemory object. The returned file
59 * descriptor has all the same properties & capabilities as the FD returned from
60 * ASharedMemory_create(), however the protection flags will be the same as those of the
61 * android.os.SharedMemory object.
62 *
63 * Use close() to release the shared memory region.
64 *
65 * \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
73#ifdef __cplusplus
74};
75#endif
76
77#endif // ANDROID_SHARED_MEMORY_JNI_H
78
79/** @} */