xref: /interface/sdk_c/IPCKit/ipc_cskeleton.h (revision 7777dab0)
1/*
2 * Copyright (c) 2024 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
16#ifndef CAPI_INCLUDE_IPC_CSKELETON_H
17#define CAPI_INCLUDE_IPC_CSKELETON_H
18
19/**
20 * @addtogroup OHIPCSkeleton
21 * @{
22 *
23 * @brief Provides C interfaces for managing the token IDs, credentials, process IDs (PIDs),
24 * user IDs (UIDs), and thread pool in the IPC framework.
25 *
26 * @syscap SystemCapability.Communication.IPC.Core
27 * @since 12
28 */
29
30/**
31 * @file ipc_cskeleton.h
32 *
33 * @brief Defines C interfaces for managing the token IDs, credentials, PIDs, UIDs, and thread
34 * pool in the IPC framework.
35 *
36 * @library libipc_capi.so
37 * @kit IPCKit
38 * @syscap SystemCapability.Communication.IPC.Core
39 * @since 12
40 */
41
42#include <stdint.h>
43
44#include "ipc_cparcel.h"
45
46#ifdef __cplusplus
47extern "C" {
48#endif
49
50/**
51 * @brief Joints this thread to the IPC worker thread pool.
52 *
53 * @syscap SystemCapability.Communication.IPC.Core
54 * @since 12
55 */
56void OH_IPCSkeleton_JoinWorkThread(void);
57
58/**
59 * @brief Stops this thread.
60 *
61 * @syscap SystemCapability.Communication.IPC.Core
62 * @since 12
63 */
64void OH_IPCSkeleton_StopWorkThread(void);
65
66/**
67 * @brief Obtains the token ID of the caller. This function must be called in the IPC context.
68 * Otherwise, the local token ID is returned.
69 *
70 * @syscap SystemCapability.Communication.IPC.Core
71 * @return Returns the token ID of the caller.
72 * @since 12
73 */
74uint64_t OH_IPCSkeleton_GetCallingTokenId(void);
75
76/**
77 * @brief Obtains the token ID of the first caller.
78 *
79 * @syscap SystemCapability.Communication.IPC.Core
80 * @return Returns the token ID obtained.
81 * @since 12
82 */
83uint64_t OH_IPCSkeleton_GetFirstTokenId(void);
84
85/**
86 * @brief Obtains the local token ID.
87 *
88 * @syscap SystemCapability.Communication.IPC.Core
89 * @return Returns the token ID obtained.
90 * @since 12
91 */
92uint64_t OH_IPCSkeleton_GetSelfTokenId(void);
93
94/**
95 * @brief Obtains the process ID of the caller. This function must be called in the IPC context.
96 * Otherwise, the current process ID is returned.
97 *
98 * @syscap SystemCapability.Communication.IPC.Core
99 * @return Returns the process ID of the caller.
100 * @since 12
101 */
102uint64_t OH_IPCSkeleton_GetCallingPid(void);
103
104/**
105 * @brief Obtains the UID of the caller. This function must be called in the IPC context.
106 * Otherwise, the current UID is returned.
107 *
108 * @syscap SystemCapability.Communication.IPC.Core
109 * @return Returns the UID of the caller.
110 * @since 12
111 */
112uint64_t OH_IPCSkeleton_GetCallingUid(void);
113
114/**
115 * @brief Checks whether a local calling is being made.
116 *
117 * @syscap SystemCapability.Communication.IPC.Core
118 * @return Returns <b>1</b> if a local calling is in progress; returns <b>0</b> otherwise.
119 * @since 12
120 */
121int OH_IPCSkeleton_IsLocalCalling(void);
122
123/**
124 * @brief Sets the maximum number of worker threads.
125 *
126 * @syscap SystemCapability.Communication.IPC.Core
127 * @param maxThreadNum Maximum number of worker threads to set. The default value is <b>16</b>.
128 * The value range is [1, 32].
129 * @return Returns {@link OH_IPC_ErrorCode#OH_IPC_SUCCESS} if the operation is successful. \n
130 * Returns {@link OH_IPC_ErrorCode#OH_IPC_CHECK_PARAM_ERROR} if incorrect parameters are found. \n
131 * Returns {@link OH_IPC_ErrorCode#OH_IPC_INNER_ERROR} in other cases.
132 * @since 12
133 */
134int OH_IPCSkeleton_SetMaxWorkThreadNum(const int maxThreadNum);
135
136/**
137 * @brief Resets the caller identity credential (including the token ID, UID, and PID) to that of this process and
138 * returns the caller credential information.
139 * The identity information is used in <b>OH_IPCSkeleton_SetCallingIdentity</b>.
140 *
141 * @syscap SystemCapability.Communication.IPC.Core
142 * @param identity Pointer to the address of the memory for holding the caller identity information.
143 * The memory is allocated by the allocator provided by the user and needs to be released. This pointer cannot be NULL.
144 * @param len Pointer to the length of the identity information. It cannot be NULL.
145 * @param allocator Memory allocator specified by the user for allocating memory for <b>identity</b>. It cannot be NULL.
146 * @return Returns {@link OH_IPC_ErrorCode#OH_IPC_SUCCESS} if the operation is successful. \n
147 * Returns {@link OH_IPC_ErrorCode#OH_IPC_CHECK_PARAM_ERROR} if incorrect parameters are found. \n
148 * Returns {@link OH_IPC_ErrorCode#OH_IPC_MEM_ALLOCATOR_ERROR} if memory allocation fails. \n
149 * Returns {@link OH_IPC_ErrorCode#OH_IPC_INNER_ERROR} in other cases.
150 * @since 12
151 */
152int OH_IPCSkeleton_ResetCallingIdentity(char **identity, int32_t *len, OH_IPC_MemAllocator allocator);
153
154/**
155 * @brief Sets the caller credential information to the IPC context.
156 *
157 * @syscap SystemCapability.Communication.IPC.Core
158 * @param identity Pointer to the caller identity, which cannot be NULL.
159 * The value is returned by <b>OH_IPCSkeleton_ResetCallingIdentity</b>.
160 * @return Returns {@link OH_IPC_ErrorCode#OH_IPC_SUCCESS} if the operation is successful. \n
161 * Returns {@link OH_IPC_ErrorCode#OH_IPC_CHECK_PARAM_ERROR} if incorrect parameters are found. \n
162 * Returns {@link OH_IPC_ErrorCode#OH_IPC_INNER_ERROR} in other cases.
163 * @since 12
164 */
165int OH_IPCSkeleton_SetCallingIdentity(const char *identity);
166
167/**
168 * @brief Checks whether an IPC request is being handled.
169 *
170 * @syscap SystemCapability.Communication.IPC.Core
171 * @return Returns <b>1</b> if an IPC request is being handled; returns <b>0</b> otherwise.
172 * @since 12
173 */
174int OH_IPCSkeleton_IsHandlingTransaction(void);
175
176#ifdef __cplusplus
177}
178#endif
179
180/** @} */
181#endif
182