• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2025 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 #ifndef IPC_FFI_H
16 #define IPC_FFI_H
17 
18 #include "ashmem_impl.h"
19 #include "cj_common_ffi.h"
20 #include "ffi_remote_data.h"
21 #include "message_sequence_impl.h"
22 #include "napi/native_api.h"
23 
24 extern "C" {
25 FFI_EXPORT int64_t FfiRpcMessageSequenceImplCreate();
26 FFI_EXPORT void FfiRpcMessageSequenceImplWriteInterfaceToken(int64_t id, char* token, int32_t* errCode);
27 FFI_EXPORT char* FfiRpcMessageSequenceImplReadInterfaceToken(int64_t id, int32_t* errCode);
28 FFI_EXPORT uint32_t FfiRpcMessageSequenceImplGetSize(int64_t id, int32_t* errCode);
29 FFI_EXPORT uint32_t FfiRpcMessageSequenceImplGetCapacity(int64_t id, int32_t* errCode);
30 FFI_EXPORT void FfiRpcMessageSequenceImplSetSize(int64_t id, uint32_t value, int32_t* errCode);
31 FFI_EXPORT void FfiRpcMessageSequenceImplSetCapacity(int64_t id, uint32_t value, int32_t* errCode);
32 FFI_EXPORT uint32_t FfiRpcMessageSequenceImplGetWritableBytes(int64_t id, int32_t* errCode);
33 FFI_EXPORT uint32_t FfiRpcMessageSequenceImplGetReadableBytes(int64_t id, int32_t* errCode);
34 FFI_EXPORT uint32_t FfiRpcMessageSequenceImplGetReadPosition(int64_t id, int32_t* errCode);
35 FFI_EXPORT uint32_t FfiRpcMessageSequenceImplGetWritePosition(int64_t id, int32_t* errCode);
36 FFI_EXPORT void FfiRpcMessageSequenceImplRewindWrite(int64_t id, uint32_t pos, int32_t* errCode);
37 FFI_EXPORT void FfiRpcMessageSequenceImplRewindRead(int64_t id, uint32_t pos, int32_t* errCode);
38 FFI_EXPORT void FfiRpcMessageSequenceImplWriteNoException(int64_t id, int32_t* errCode);
39 FFI_EXPORT char* FfiRpcMessageSequenceImplReadException(int64_t id, int32_t* errCode);
40 
41 FFI_EXPORT void FfiRpcMessageSequenceImplWriteByte(int64_t id, int8_t value, int32_t* errCode);
42 FFI_EXPORT void FfiRpcMessageSequenceImplWriteShort(int64_t id, int16_t value, int32_t* errCode);
43 FFI_EXPORT void FfiRpcMessageSequenceImplWriteInt(int64_t id, int32_t value, int32_t* errCode);
44 FFI_EXPORT void FfiRpcMessageSequenceImplWriteLong(int64_t id, int64_t value, int32_t* errCode);
45 FFI_EXPORT void FfiRpcMessageSequenceImplWriteFloat(int64_t id, float value, int32_t* errCode);
46 FFI_EXPORT void FfiRpcMessageSequenceImplWriteDouble(int64_t id, double value, int32_t* errCode);
47 FFI_EXPORT void FfiRpcMessageSequenceImplWriteBoolean(int64_t id, int8_t value, int32_t* errCode);
48 FFI_EXPORT void FfiRpcMessageSequenceImplWriteChar(int64_t id, uint8_t value, int32_t* errCode);
49 FFI_EXPORT void FfiRpcMessageSequenceImplWriteString(int64_t id, char* value, int32_t* errCode);
50 FFI_EXPORT void FfiRpcMessageSequenceImplWriteByteArray(int64_t id, OHOS::CJByteArray value, int32_t* errCode);
51 FFI_EXPORT void FfiRpcMessageSequenceImplWriteShortArray(int64_t id, OHOS::CJShortArray value, int32_t* errCode);
52 FFI_EXPORT void FfiRpcMessageSequenceImplWriteIntArray(int64_t id, OHOS::CJIntArray value, int32_t* errCode);
53 FFI_EXPORT void FfiRpcMessageSequenceImplWriteLongArray(int64_t id, OHOS::CJLongArray value, int32_t* errCode);
54 FFI_EXPORT void FfiRpcMessageSequenceImplWriteFloatArray(int64_t id, OHOS::CJFloatArray value, int32_t* errCode);
55 FFI_EXPORT void FfiRpcMessageSequenceImplWriteDoubleArray(int64_t id, OHOS::CJDoubleArray value, int32_t* errCode);
56 FFI_EXPORT void FfiRpcMessageSequenceImplWriteBooleanArray(int64_t id, OHOS::CJByteArray value, int32_t* errCode);
57 FFI_EXPORT void FfiRpcMessageSequenceImplWriteCharArray(int64_t id, OHOS::CJCharArray value, int32_t* errCode);
58 FFI_EXPORT void FfiRpcMessageSequenceImplWriteStringArray(int64_t id, OHOS::CJStringArray value, int32_t* errCode);
59 FFI_EXPORT void FfiRpcMessageSequenceImplWriteArrayBuffer(
60     int64_t id, int32_t typeCode, void* value, size_t byteLength, int32_t* errCode);
61 FFI_EXPORT bool FfiRpcMessageSequenceImplWriteUint32(int64_t id, uint32_t value);
62 FFI_EXPORT void FfiRpcMessageSequenceImplWriteRawDataBuffer(int64_t id, uint8_t* data, int64_t size, int32_t* errCode);
63 FFI_EXPORT void FfiRpcMessageSequenceImplWriteRemoteObject(int64_t id, int64_t object, int32_t* errCode);
64 FFI_EXPORT void FfiRpcMessageSequenceImplWriteRemoteObjectArray(
65     int64_t id, OHOS::CJLongArray value, int32_t* errCode);
66 
67 FFI_EXPORT int8_t FfiRpcMessageSequenceImplReadByte(int64_t id, int32_t* errCode);
68 FFI_EXPORT int16_t FfiRpcMessageSequenceImplReadShort(int64_t id, int32_t* errCode);
69 FFI_EXPORT int32_t FfiRpcMessageSequenceImplReadInt(int64_t id, int32_t* errCode);
70 FFI_EXPORT int64_t FfiRpcMessageSequenceImplReadLong(int64_t id, int32_t* errCode);
71 FFI_EXPORT float FfiRpcMessageSequenceImplReadFloat(int64_t id, int32_t* errCode);
72 FFI_EXPORT double FfiRpcMessageSequenceImplReadDouble(int64_t id, int32_t* errCode);
73 FFI_EXPORT int8_t FfiRpcMessageSequenceImplReadBoolean(int64_t id, int32_t* errCode);
74 FFI_EXPORT uint8_t FfiRpcMessageSequenceImplReadChar(int64_t id, int32_t* errCode);
75 FFI_EXPORT char* FfiRpcMessageSequenceImplReadString(int64_t id, int32_t* errCode);
76 FFI_EXPORT OHOS::CJByteArray FfiRpcMessageSequenceImplReadByteArray(int64_t id, int32_t* errCode);
77 FFI_EXPORT OHOS::CJShortArray FfiRpcMessageSequenceImplReadShortArray(int64_t id, int32_t* errCode);
78 FFI_EXPORT OHOS::CJIntArray FfiRpcMessageSequenceImplReadIntArray(int64_t id, int32_t* errCode);
79 FFI_EXPORT OHOS::CJLongArray FfiRpcMessageSequenceImplReadLongArray(int64_t id, int32_t* errCode);
80 FFI_EXPORT OHOS::CJFloatArray FfiRpcMessageSequenceImplReadFloatArray(int64_t id, int32_t* errCode);
81 FFI_EXPORT OHOS::CJDoubleArray FfiRpcMessageSequenceImplReadDoubleArray(int64_t id, int32_t* errCode);
82 FFI_EXPORT OHOS::CJByteArray FfiRpcMessageSequenceImplReadBooleanArray(int64_t id, int32_t* errCode);
83 FFI_EXPORT OHOS::CJCharArray FfiRpcMessageSequenceImplReadCharArray(int64_t id, int32_t* errCode);
84 FFI_EXPORT OHOS::CJStringArray FfiRpcMessageSequenceImplReadStringArray(int64_t id, int32_t* errCode);
85 FFI_EXPORT OHOS::CJByteArray FfiRpcMessageSequenceImplReadInt8ArrayBuffer(int64_t id, int32_t* errCode);
86 FFI_EXPORT OHOS::CJCharArray FfiRpcMessageSequenceImplReadUInt8ArrayBuffer(int64_t id, int32_t* errCode);
87 FFI_EXPORT OHOS::CJShortArray FfiRpcMessageSequenceImplReadInt16ArrayBuffer(int64_t id, int32_t* errCode);
88 FFI_EXPORT OHOS::CJUInt16Array FfiRpcMessageSequenceImplReadUInt16ArrayBuffer(int64_t id, int32_t* errCode);
89 FFI_EXPORT OHOS::CJIntArray FfiRpcMessageSequenceImplReadInt32ArrayBuffer(int64_t id, int32_t* errCode);
90 FFI_EXPORT OHOS::CJUInt32Array FfiRpcMessageSequenceImplReadUInt32ArrayBuffer(int64_t id, int32_t* errCode);
91 FFI_EXPORT OHOS::CJFloatArray FfiRpcMessageSequenceImplReadFloatArrayBuffer(int64_t id, int32_t* errCode);
92 FFI_EXPORT OHOS::CJDoubleArray FfiRpcMessageSequenceImplReadDoubleArrayBuffer(int64_t id, int32_t* errCode);
93 FFI_EXPORT OHOS::CJLongArray FfiRpcMessageSequenceImplReadInt64ArrayBuffer(int64_t id, int32_t* errCode);
94 FFI_EXPORT OHOS::CJUInt64Array FfiRpcMessageSequenceImplReadUInt64ArrayBuffer(int64_t id, int32_t* errCode);
95 FFI_EXPORT uint8_t* FfiRpcMessageSequenceImplReadRawDataBuffer(int64_t id, int64_t size, int32_t* errCode);
96 FFI_EXPORT RetDataI64 FfiRpcMessageSequenceImplReadRemoteObject(int64_t id, int32_t* errCode);
97 FFI_EXPORT OHOS::RemoteObjectArray FfiRpcMessageSequenceImplReadRemoteObjectArray(int64_t id, int32_t* errCode);
98 
99 FFI_EXPORT void FfiRpcMessageSequenceImplCloseFileDescriptor(int32_t fd);
100 FFI_EXPORT int32_t FfiRpcMessageSequenceImplDupFileDescriptor(int32_t fd);
101 FFI_EXPORT bool FfiRpcMessageSequenceImplContainFileDescriptors(int64_t id, int32_t* errCode);
102 FFI_EXPORT void FfiRpcMessageSequenceImplWriteFileDescriptor(int64_t id, int32_t fd, int32_t* errCode);
103 FFI_EXPORT int32_t FfiRpcMessageSequenceImplReadFileDescriptor(int64_t id, int32_t* errCode);
104 FFI_EXPORT void FfiRpcMessageSequenceImplWriteAshmem(int64_t mid, int64_t aid, int32_t* errCode);
105 FFI_EXPORT int64_t FfiRpcMessageSequenceImplReadAshmem(int64_t id, int32_t* errCode);
106 FFI_EXPORT uint32_t FfiRpcMessageSequenceImplGetRawDataCapacity(int64_t id, int32_t* errCode);
107 
108 FFI_EXPORT int64_t FfiRpcAshmemImplCreate(char* ashmemName, int32_t ashmemSize);
109 FFI_EXPORT int64_t FfiRpcAshmemImplCreateFromExisting(int64_t id, int32_t* errCode);
110 FFI_EXPORT void FfiRpcAshmemImplCloseAshmem(int64_t id);
111 FFI_EXPORT void FfiRpcAshmemImplUnmapAshmem(int64_t id);
112 FFI_EXPORT int32_t FfiRpcAshmemImplGetAshmemSize(int64_t id, int32_t* errCode);
113 FFI_EXPORT void FfiRpcAshmemImplMapTypedAshmem(int64_t id, uint32_t mapType, int32_t* errCode);
114 FFI_EXPORT void FfiRpcAshmemImplMapReadWriteAshmem(int64_t id, int32_t* errCode);
115 FFI_EXPORT void FfiRpcAshmemImplMapReadonlyAshmem(int64_t id, int32_t* errCode);
116 FFI_EXPORT void FfiRpcAshmemImplSetProtectionType(int64_t id, uint32_t protectionType, int32_t* errCode);
117 FFI_EXPORT void FfiRpcAshmemImplWriteDataToAshmem(
118     int64_t id, uint8_t* data, int64_t size, int64_t offset, int32_t* errCode);
119 FFI_EXPORT uint8_t* FfiRpcAshmemImplReadDataFromAshmem(int64_t id, int64_t size, int64_t offset, int32_t* errCode);
120 
121 FFI_EXPORT int64_t FfiRpcRemoteObjectConstructor(char* stringValue);
122 FFI_EXPORT int32_t FfiRpcRemoteObjectSendMessageRequest(
123     int64_t id, uint32_t code, int64_t dataId, int64_t replyId, OHOS::MesOption opt, int64_t funcId);
124 FFI_EXPORT int32_t FfiRpcRemoteObjectGetCallingPid();
125 FFI_EXPORT int32_t FfiRpcRemoteObjectGetCallingUid();
126 FFI_EXPORT char* FfiRpcRemoteObjectGetDescriptor(int64_t id, int32_t* errCode);
127 FFI_EXPORT void FfiRpcRemoteObjectModifyLocalInterface(int64_t id, char* stringValue, int32_t* errCode);
128 
129 FFI_EXPORT RetDataI64 FfiRpcIPCSkeletonGetContextObject();
130 FFI_EXPORT int32_t FfiRpcIPCSkeletonGetCallingPid();
131 FFI_EXPORT int32_t FfiRpcIPCSkeletonGetCallingUid();
132 FFI_EXPORT uint32_t FfiRpcIPCSkeletonGetCallingTokenId();
133 FFI_EXPORT char* FfiRpcIPCSkeletonGetCallingDeviceID();
134 FFI_EXPORT char* FfiRpcIPCSkeletonGetLocalDeviceID();
135 FFI_EXPORT bool FfiRpcIPCSkeletonIsLocalCalling();
136 FFI_EXPORT void FfiRpcIPCSkeletonFlushCmdBuffer(int64_t object);
137 
138 FFI_EXPORT int32_t FfiRpcRemoteProxySendMessageRequest(
139     int64_t id, uint32_t code, int64_t dataId, int64_t replyId, OHOS::MesOption opt, int64_t funcId);
140 FFI_EXPORT void FfiRpcRemoteProxyRegisterDeathRecipient(int64_t id, int64_t funcId, int32_t flag, int32_t* errCode);
141 FFI_EXPORT void FfiRpcRemoteProxyUnregisterDeathRecipient(int64_t id, int64_t funcId, int32_t flag, int32_t* errCode);
142 FFI_EXPORT char* FfiRpcRemoteProxyGetDescriptor(int64_t id, int32_t* errCode);
143 FFI_EXPORT bool FfiRpcRemoteProxyIsObjectDead(int64_t id);
144 
145 FFI_EXPORT int32_t FfiRpcGetRemoteType(int64_t id);
146 FFI_EXPORT int64_t FfiCreateRemoteObjectFromNapi(napi_env env, napi_value object);
147 FFI_EXPORT napi_value FfiConvertRemoteObject2Napi(napi_env env, int64_t object);
148 }
149 
150 #endif
151