1 // SPDX-License-Identifier: BSD-3-Clause
2 /*
3  * Copyright (c) 2022, Arm Limited. All rights reserved.
4  */
5 
6 #include <CppUTestExt/MockSupport.h>
7 #include "mock_sp_memory_management.h"
8 
expect_sp_memory_donate(const struct sp_memory_descriptor * descriptor,const struct sp_memory_access_descriptor * acc_desc,const struct sp_memory_region regions[],uint32_t region_count,const uint64_t * handle,sp_result result)9 void expect_sp_memory_donate(const struct sp_memory_descriptor *descriptor,
10 			     const struct sp_memory_access_descriptor *acc_desc,
11 			     const struct sp_memory_region regions[],
12 			     uint32_t region_count, const uint64_t *handle,
13 			     sp_result result)
14 {
15 	mock()
16 		.expectOneCall("sp_memory_donate")
17 		.withMemoryBufferParameter("descriptor", (const unsigned char *)descriptor,
18 					   sizeof(*descriptor))
19 		.withMemoryBufferParameter("acc_desc", (const unsigned char *)acc_desc,
20 					   sizeof(*acc_desc))
21 		.withMemoryBufferParameter("regions", (const unsigned char *)regions,
22 					   sizeof(*regions) * region_count)
23 		.withUnsignedIntParameter("region_count", region_count)
24 		.withOutputParameterReturning("handle", handle, sizeof(*handle))
25 		.andReturnValue(result);
26 }
27 
sp_memory_donate(struct sp_memory_descriptor * descriptor,struct sp_memory_access_descriptor * acc_desc,struct sp_memory_region regions[],uint32_t region_count,uint64_t * handle)28 sp_result sp_memory_donate(struct sp_memory_descriptor *descriptor,
29 			   struct sp_memory_access_descriptor *acc_desc,
30 			   struct sp_memory_region regions[],
31 			   uint32_t region_count, uint64_t *handle)
32 {
33 	return mock()
34 		.actualCall("sp_memory_donate")
35 		.withMemoryBufferParameter("descriptor", (const unsigned char *)descriptor,
36 					   sizeof(*descriptor))
37 		.withMemoryBufferParameter("acc_desc", (const unsigned char *)acc_desc,
38 					   sizeof(*acc_desc))
39 		.withMemoryBufferParameter("regions", (const unsigned char *)regions,
40 					   sizeof(*regions) * region_count)
41 		.withUnsignedIntParameter("region_count", region_count)
42 		.withOutputParameter("handle", handle)
43 		.returnIntValue();
44 }
45 
expect_sp_memory_donate_dynamic(const struct sp_memory_descriptor * descriptor,const struct sp_memory_access_descriptor * acc_desc,const struct sp_memory_region regions[],uint32_t region_count,const uint64_t * handle,sp_result result)46 void expect_sp_memory_donate_dynamic(const struct sp_memory_descriptor *descriptor,
47 				     const struct sp_memory_access_descriptor *acc_desc,
48 				     const struct sp_memory_region regions[],
49 				     uint32_t region_count, const uint64_t *handle,
50 				     sp_result result)
51 {
52 	mock()
53 		.expectOneCall("sp_memory_donate_dynamic")
54 		.withMemoryBufferParameter("descriptor", (const unsigned char *)descriptor,
55 					   sizeof(*descriptor))
56 		.withMemoryBufferParameter("acc_desc", (const unsigned char *)acc_desc,
57 					   sizeof(*acc_desc))
58 		.withMemoryBufferParameter("regions", (const unsigned char *)regions,
59 					   sizeof(*regions) * region_count)
60 		.withUnsignedIntParameter("region_count", region_count)
61 		.withOutputParameterReturning("handle", handle, sizeof(*handle))
62 		.andReturnValue(result);
63 }
64 
sp_memory_donate_dynamic(struct sp_memory_descriptor * descriptor,struct sp_memory_access_descriptor * acc_desc,struct sp_memory_region regions[],uint32_t region_count,uint64_t * handle,struct ffa_mem_transaction_buffer * buffer)65 sp_result sp_memory_donate_dynamic(struct sp_memory_descriptor *descriptor,
66 				   struct sp_memory_access_descriptor *acc_desc,
67 				   struct sp_memory_region regions[],
68 				   uint32_t region_count, uint64_t *handle,
69 				   struct ffa_mem_transaction_buffer *buffer)
70 {
71 	if (buffer == NULL) { // LCOV_EXCL_BR_LINE
72 		FAIL("ffa_mem_transaction_buffer is NULL"); // LCOV_EXCL_LINE
73 	}
74 
75 	return mock()
76 		.actualCall("sp_memory_donate_dynamic")
77 		.withMemoryBufferParameter("descriptor", (const unsigned char *)descriptor,
78 					   sizeof(*descriptor))
79 		.withMemoryBufferParameter("acc_desc", (const unsigned char *)acc_desc,
80 					   sizeof(*acc_desc))
81 		.withMemoryBufferParameter("regions", (const unsigned char *)regions,
82 					   sizeof(*regions) * region_count)
83 		.withUnsignedIntParameter("region_count", region_count)
84 		.withOutputParameter("handle", handle)
85 		.returnIntValue();
86 }
87 
expect_sp_memory_donate_dynamic_is_supported(const bool * supported,sp_result result)88 void expect_sp_memory_donate_dynamic_is_supported(const bool *supported, sp_result result)
89 {
90 	mock()
91 		.expectOneCall("sp_memory_lend_dynamic_is_supported")
92 		.withOutputParameterReturning("supported", supported, sizeof(*supported))
93 		.andReturnValue(result);
94 }
95 
sp_memory_donate_dynamic_is_supported(bool * supported)96 sp_result sp_memory_donate_dynamic_is_supported(bool *supported)
97 {
98 	return mock()
99 		.actualCall("sp_memory_lend_dynamic_is_supported")
100 		.withOutputParameter("supported", supported)
101 		.returnIntValue();
102 }
103 
expect_sp_memory_lend(const struct sp_memory_descriptor * descriptor,const struct sp_memory_access_descriptor acc_desc[],uint32_t acc_desc_count,const struct sp_memory_region regions[],uint32_t region_count,const uint64_t * handle,sp_result result)104 void expect_sp_memory_lend(const struct sp_memory_descriptor *descriptor,
105 			   const struct sp_memory_access_descriptor acc_desc[],
106 			   uint32_t acc_desc_count,
107 			   const struct sp_memory_region regions[],
108 			   uint32_t region_count, const uint64_t *handle,
109 			   sp_result result)
110 {
111 	mock()
112 		.expectOneCall("sp_memory_lend")
113 		.withMemoryBufferParameter("descriptor", (const unsigned char *)descriptor,
114 					   sizeof(*descriptor))
115 		.withMemoryBufferParameter("acc_desc", (const unsigned char *)acc_desc,
116 					   sizeof(*acc_desc) * acc_desc_count)
117 		.withUnsignedIntParameter("acc_desc_count", acc_desc_count)
118 		.withMemoryBufferParameter("regions", (const unsigned char *)regions,
119 					   sizeof(*regions) * region_count)
120 		.withUnsignedIntParameter("region_count", region_count)
121 		.withOutputParameterReturning("handle", handle, sizeof(*handle))
122 		.andReturnValue(result);
123 }
124 
sp_memory_lend(struct sp_memory_descriptor * descriptor,struct sp_memory_access_descriptor acc_desc[],uint32_t acc_desc_count,struct sp_memory_region regions[],uint32_t region_count,uint64_t * handle)125 sp_result sp_memory_lend(struct sp_memory_descriptor *descriptor,
126 			 struct sp_memory_access_descriptor acc_desc[],
127 			 uint32_t acc_desc_count,
128 			 struct sp_memory_region regions[],
129 			 uint32_t region_count, uint64_t *handle)
130 {
131 	return mock()
132 		.actualCall("sp_memory_lend")
133 		.withMemoryBufferParameter("descriptor", (const unsigned char *)descriptor,
134 					   sizeof(*descriptor))
135 		.withMemoryBufferParameter("acc_desc", (const unsigned char *)acc_desc,
136 					   sizeof(*acc_desc) * acc_desc_count)
137 		.withUnsignedIntParameter("acc_desc_count", acc_desc_count)
138 		.withMemoryBufferParameter("regions", (const unsigned char *)regions,
139 					   sizeof(*regions) * region_count)
140 		.withUnsignedIntParameter("region_count", region_count)
141 		.withOutputParameter("handle", handle)
142 		.returnIntValue();
143 }
144 
expect_sp_memory_lend_dynamic(const struct sp_memory_descriptor * descriptor,const struct sp_memory_access_descriptor acc_desc[],uint32_t acc_desc_count,const struct sp_memory_region regions[],const uint32_t region_count,const uint64_t * handle,sp_result result)145 void expect_sp_memory_lend_dynamic(const struct sp_memory_descriptor *descriptor,
146 				   const struct sp_memory_access_descriptor acc_desc[],
147 				   uint32_t acc_desc_count,
148 				   const struct sp_memory_region regions[],
149 				   const uint32_t region_count, const uint64_t *handle,
150 				   sp_result result)
151 {
152 	mock()
153 		.expectOneCall("sp_memory_lend")
154 		.withMemoryBufferParameter("descriptor", (const unsigned char *)descriptor,
155 					   sizeof(*descriptor))
156 		.withMemoryBufferParameter("acc_desc", (const unsigned char *)acc_desc,
157 					   sizeof(*acc_desc) * acc_desc_count)
158 		.withUnsignedIntParameter("acc_desc_count", acc_desc_count)
159 		.withMemoryBufferParameter("regions", (const unsigned char *)regions,
160 					   sizeof(*regions) * region_count)
161 		.withUnsignedIntParameter("region_count", region_count)
162 		.withOutputParameterReturning("handle", handle, sizeof(*handle))
163 		.andReturnValue(result);
164 }
165 
sp_memory_lend_dynamic(struct sp_memory_descriptor * descriptor,struct sp_memory_access_descriptor acc_desc[],uint32_t acc_desc_count,struct sp_memory_region regions[],uint32_t region_count,uint64_t * handle,struct ffa_mem_transaction_buffer * buffer)166 sp_result sp_memory_lend_dynamic(struct sp_memory_descriptor *descriptor,
167 				 struct sp_memory_access_descriptor acc_desc[],
168 				 uint32_t acc_desc_count,
169 				 struct sp_memory_region regions[],
170 				 uint32_t region_count, uint64_t *handle,
171 				 struct ffa_mem_transaction_buffer *buffer)
172 {
173 	if (buffer == NULL) { // LCOV_EXCL_BR_LINE
174 		FAIL("ffa_mem_transaction_buffer is NULL"); // LCOV_EXCL_LINE
175 	}
176 
177 	return mock()
178 		.actualCall("sp_memory_lend")
179 		.withMemoryBufferParameter("descriptor", (const unsigned char *)descriptor,
180 					   sizeof(*descriptor))
181 		.withMemoryBufferParameter("acc_desc", (const unsigned char *)acc_desc,
182 					   sizeof(*acc_desc) * acc_desc_count)
183 		.withUnsignedIntParameter("acc_desc_count", acc_desc_count)
184 		.withMemoryBufferParameter("regions", (const unsigned char *)regions,
185 					   sizeof(*regions) * region_count)
186 		.withUnsignedIntParameter("region_count", region_count)
187 		.withOutputParameter("handle", handle)
188 		.returnIntValue();
189 }
190 
expect_sp_memory_lend_dynamic_is_supported(const bool * supported,sp_result result)191 void expect_sp_memory_lend_dynamic_is_supported(const bool *supported, sp_result result)
192 {
193 	mock()
194 		.expectOneCall("sp_memory_lend_dynamic_is_supported")
195 		.withOutputParameterReturning("supported", supported, sizeof(*supported))
196 		.andReturnValue(result);
197 }
198 
sp_memory_lend_dynamic_is_supported(bool * supported)199 sp_result sp_memory_lend_dynamic_is_supported(bool *supported)
200 {
201 	return mock()
202 		.actualCall("sp_memory_lend_dynamic_is_supported")
203 		.withOutputParameter("supported", supported)
204 		.returnIntValue();
205 }
206 
expect_sp_memory_share(const struct sp_memory_descriptor * descriptor,const struct sp_memory_access_descriptor acc_desc[],uint32_t acc_desc_count,const struct sp_memory_region regions[],uint32_t region_count,const uint64_t * handle,sp_result result)207 void expect_sp_memory_share(const struct sp_memory_descriptor *descriptor,
208 			    const struct sp_memory_access_descriptor acc_desc[],
209 			    uint32_t acc_desc_count,
210 			    const struct sp_memory_region regions[],
211 			    uint32_t region_count, const uint64_t *handle,
212 			    sp_result result)
213 {
214 	mock()
215 		.expectOneCall("sp_memory_share")
216 		.withMemoryBufferParameter("descriptor", (const unsigned char *)descriptor,
217 					   sizeof(*descriptor))
218 		.withMemoryBufferParameter("acc_desc", (const unsigned char *)acc_desc,
219 					   sizeof(*acc_desc) * acc_desc_count)
220 		.withUnsignedIntParameter("acc_desc_count", acc_desc_count)
221 		.withMemoryBufferParameter("regions", (const unsigned char *)regions,
222 					   sizeof(*regions) * region_count)
223 		.withUnsignedIntParameter("region_count", region_count)
224 		.withOutputParameterReturning("handle", handle, sizeof(*handle))
225 		.andReturnValue(result);
226 }
227 
sp_memory_share(struct sp_memory_descriptor * descriptor,struct sp_memory_access_descriptor acc_desc[],uint32_t acc_desc_count,struct sp_memory_region regions[],uint32_t region_count,uint64_t * handle)228 sp_result sp_memory_share(struct sp_memory_descriptor *descriptor,
229 			  struct sp_memory_access_descriptor acc_desc[],
230 			  uint32_t acc_desc_count,
231 			  struct sp_memory_region regions[],
232 			  uint32_t region_count, uint64_t *handle)
233 {
234 	return mock()
235 		.actualCall("sp_memory_share")
236 		.withMemoryBufferParameter("descriptor", (const unsigned char *)descriptor,
237 					   sizeof(*descriptor))
238 		.withMemoryBufferParameter("acc_desc", (const unsigned char *)acc_desc,
239 					   sizeof(*acc_desc) * acc_desc_count)
240 		.withUnsignedIntParameter("acc_desc_count", acc_desc_count)
241 		.withMemoryBufferParameter("regions", (const unsigned char *)regions,
242 					   sizeof(*regions) * region_count)
243 		.withUnsignedIntParameter("region_count", region_count)
244 		.withOutputParameter("handle", handle)
245 		.returnIntValue();
246 }
247 
expect_sp_memory_share_dynamic(const struct sp_memory_descriptor * descriptor,const struct sp_memory_access_descriptor acc_desc[],uint32_t acc_desc_count,const struct sp_memory_region regions[],uint32_t region_count,const uint64_t * handle,sp_result result)248 void expect_sp_memory_share_dynamic(const struct sp_memory_descriptor *descriptor,
249 				    const struct sp_memory_access_descriptor acc_desc[],
250 				    uint32_t acc_desc_count,
251 				    const struct sp_memory_region regions[],
252 				    uint32_t region_count, const uint64_t *handle,
253 				    sp_result result)
254 {
255 	mock()
256 		.expectOneCall("sp_memory_share_dynamic")
257 		.withMemoryBufferParameter("descriptor", (const unsigned char *)descriptor,
258 					   sizeof(*descriptor))
259 		.withMemoryBufferParameter("acc_desc", (const unsigned char *)acc_desc,
260 					   sizeof(*acc_desc) * acc_desc_count)
261 		.withUnsignedIntParameter("acc_desc_count", acc_desc_count)
262 		.withMemoryBufferParameter("regions", (const unsigned char *)regions,
263 					   sizeof(*regions) * region_count)
264 		.withUnsignedIntParameter("region_count", region_count)
265 		.withOutputParameterReturning("handle", handle, sizeof(*handle))
266 		.andReturnValue(result);
267 }
268 
sp_memory_share_dynamic(struct sp_memory_descriptor * descriptor,struct sp_memory_access_descriptor acc_desc[],uint32_t acc_desc_count,struct sp_memory_region regions[],uint32_t region_count,uint64_t * handle,struct ffa_mem_transaction_buffer * buffer)269 sp_result sp_memory_share_dynamic(struct sp_memory_descriptor *descriptor,
270 				  struct sp_memory_access_descriptor acc_desc[],
271 				  uint32_t acc_desc_count,
272 				  struct sp_memory_region regions[],
273 				  uint32_t region_count, uint64_t *handle,
274 				  struct ffa_mem_transaction_buffer *buffer)
275 {
276 	if (buffer == NULL) { // LCOV_EXCL_BR_LINE
277 		FAIL("ffa_mem_transaction_buffer is NULL"); // LCOV_EXCL_LINE
278 	}
279 
280 	return mock()
281 		.actualCall("sp_memory_share_dynamic")
282 		.withMemoryBufferParameter("descriptor", (const unsigned char *)descriptor,
283 					   sizeof(*descriptor))
284 		.withMemoryBufferParameter("acc_desc", (const unsigned char *)acc_desc,
285 					   sizeof(*acc_desc) * acc_desc_count)
286 		.withUnsignedIntParameter("acc_desc_count", acc_desc_count)
287 		.withMemoryBufferParameter("regions", (const unsigned char *)regions,
288 					   sizeof(*regions) * region_count)
289 		.withUnsignedIntParameter("region_count", region_count)
290 		.withOutputParameter("handle", handle)
291 		.returnIntValue();
292 }
293 
expect_sp_memory_share_dynamic_is_supported(const bool * supported,sp_result result)294 void expect_sp_memory_share_dynamic_is_supported(const bool *supported, sp_result result)
295 {
296 	mock()
297 		.expectOneCall("sp_memory_share_dynamic_is_supported")
298 		.withOutputParameterReturning("supported", supported, sizeof(*supported))
299 		.andReturnValue(result);
300 }
301 
sp_memory_share_dynamic_is_supported(bool * supported)302 sp_result sp_memory_share_dynamic_is_supported(bool *supported)
303 {
304 	return mock()
305 		.actualCall("sp_memory_share_dynamic_is_supported")
306 		.withOutputParameter("supported", supported)
307 		.returnIntValue();
308 }
309 
expect_sp_memory_retrieve(const struct sp_memory_descriptor * descriptor,const struct sp_memory_access_descriptor * req_acc_desc,const struct sp_memory_access_descriptor * resp_acc_desc,const struct sp_memory_region in_regions[],const struct sp_memory_region out_regions[],uint32_t in_region_count,const uint32_t * out_region_count,uint64_t handle,sp_result result)310 void expect_sp_memory_retrieve(const struct sp_memory_descriptor *descriptor,
311 			       const struct sp_memory_access_descriptor *req_acc_desc,
312 			       const struct sp_memory_access_descriptor *resp_acc_desc,
313 			       const struct sp_memory_region in_regions[],
314 			       const struct sp_memory_region out_regions[],
315 			       uint32_t in_region_count,
316 			       const uint32_t *out_region_count, uint64_t handle,
317 			       sp_result result)
318 {
319 	mock()
320 		.expectOneCall("sp_memory_retrieve")
321 		.withMemoryBufferParameter("descriptor", (const unsigned char *)descriptor,
322 					   sizeof(descriptor))
323 		.withMemoryBufferParameter("req_acc_desc", (const unsigned char *)req_acc_desc,
324 					   sizeof(*req_acc_desc))
325 		.withOutputParameterReturning("resp_acc_desc",
326 					      (const unsigned char *)resp_acc_desc,
327 					      sizeof(*resp_acc_desc))
328 		.withMemoryBufferParameter("in_regions", (const unsigned char *)in_regions,
329 					   sizeof(*in_regions) * in_region_count)
330 		.withOutputParameterReturning("out_regions", out_regions,
331 					      sizeof(*out_regions) * *out_region_count)
332 		.withUnsignedIntParameter("in_region_count", in_region_count)
333 		.withOutputParameterReturning("out_region_count", out_region_count,
334 					      sizeof(*out_region_count))
335 		.withUnsignedLongIntParameter("handle", handle)
336 		.andReturnValue(result);
337 
338 }
339 
sp_memory_retrieve(struct sp_memory_descriptor * descriptor,struct sp_memory_access_descriptor * acc_desc,struct sp_memory_region regions[],uint32_t in_region_count,uint32_t * out_region_count,uint64_t handle)340 sp_result sp_memory_retrieve(struct sp_memory_descriptor *descriptor,
341 			     struct sp_memory_access_descriptor *acc_desc,
342 			     struct sp_memory_region regions[],
343 			     uint32_t in_region_count,
344 			     uint32_t *out_region_count, uint64_t handle)
345 {
346 	return mock()
347 		.actualCall("sp_memory_retrieve")
348 		.withMemoryBufferParameter("descriptor", (const unsigned char *)descriptor,
349 					   sizeof(descriptor))
350 		.withMemoryBufferParameter("req_acc_desc", (const unsigned char *)acc_desc,
351 					   sizeof(*acc_desc))
352 		.withOutputParameter("resp_acc_desc", acc_desc)
353 		.withMemoryBufferParameter("in_regions", (const unsigned char *)regions,
354 					   sizeof(*regions) * in_region_count)
355 		.withOutputParameter("out_regions", regions)
356 		.withUnsignedIntParameter("in_region_count", in_region_count)
357 		.withOutputParameter("out_region_count", out_region_count)
358 		.withUnsignedLongIntParameter("handle", handle)
359 		.returnIntValue();
360 }
361 
expect_sp_memory_retrieve_dynamic(const struct sp_memory_descriptor * descriptor,const struct sp_memory_access_descriptor * req_acc_desc,const struct sp_memory_access_descriptor * resp_acc_desc,const struct sp_memory_region in_regions[],const struct sp_memory_region out_regions[],uint32_t in_region_count,const uint32_t * out_region_count,uint64_t handle,sp_result result)362 void expect_sp_memory_retrieve_dynamic(const struct sp_memory_descriptor *descriptor,
363 				       const struct sp_memory_access_descriptor *req_acc_desc,
364 				       const struct sp_memory_access_descriptor *resp_acc_desc,
365 				       const struct sp_memory_region in_regions[],
366 				       const struct sp_memory_region out_regions[],
367 				       uint32_t in_region_count,
368 				       const uint32_t *out_region_count, uint64_t handle,
369 				       sp_result result)
370 {
371 	mock()
372 		.expectOneCall("sp_memory_retrieve")
373 		.withMemoryBufferParameter("descriptor", (const unsigned char *)descriptor,
374 					   sizeof(descriptor))
375 		.withMemoryBufferParameter("req_acc_desc", (const unsigned char *)req_acc_desc,
376 					   sizeof(*req_acc_desc))
377 		.withOutputParameterReturning("resp_acc_desc",
378 					      (const unsigned char *)resp_acc_desc,
379 					      sizeof(*resp_acc_desc))
380 		.withMemoryBufferParameter("in_regions", (const unsigned char *)in_regions,
381 					   sizeof(*in_regions) * in_region_count)
382 		.withOutputParameterReturning("out_regions", out_regions,
383 					      sizeof(*out_regions) * *out_region_count)
384 		.withUnsignedIntParameter("in_region_count", in_region_count)
385 		.withOutputParameterReturning("out_region_count", out_region_count,
386 					      sizeof(*out_region_count))
387 		.withUnsignedLongIntParameter("handle", handle)
388 		.andReturnValue(result);
389 }
390 
391 sp_result
sp_memory_retrieve_dynamic(struct sp_memory_descriptor * descriptor,struct sp_memory_access_descriptor * acc_desc,struct sp_memory_region regions[],uint32_t in_region_count,uint32_t * out_region_count,uint64_t handle,struct ffa_mem_transaction_buffer * buffer)392 sp_memory_retrieve_dynamic(struct sp_memory_descriptor *descriptor,
393 			   struct sp_memory_access_descriptor *acc_desc,
394 			   struct sp_memory_region regions[],
395 			   uint32_t in_region_count, uint32_t *out_region_count,
396 			   uint64_t handle,
397 			   struct ffa_mem_transaction_buffer *buffer)
398 {
399 	if (buffer == NULL) { // LCOV_EXCL_BR_LINE
400 		FAIL("ffa_mem_transaction_buffer is NULL"); // LCOV_EXCL_LINE
401 	}
402 
403 	return mock()
404 		.actualCall("sp_memory_retrieve")
405 		.withMemoryBufferParameter("descriptor", (const unsigned char *)descriptor,
406 					   sizeof(descriptor))
407 		.withMemoryBufferParameter("req_acc_desc", (const unsigned char *)acc_desc,
408 					   sizeof(*acc_desc))
409 		.withOutputParameter("resp_acc_desc", acc_desc)
410 		.withMemoryBufferParameter("in_regions", (const unsigned char *)regions,
411 					   sizeof(*regions) * in_region_count)
412 		.withOutputParameter("out_regions", regions)
413 		.withUnsignedIntParameter("in_region_count", in_region_count)
414 		.withOutputParameter("out_region_count", out_region_count)
415 		.withUnsignedLongIntParameter("handle", handle)
416 		.returnIntValue();
417 }
418 
expect_sp_memory_retrieve_dynamic_is_supported(const bool * supported,sp_result result)419 void expect_sp_memory_retrieve_dynamic_is_supported(const bool *supported, sp_result result)
420 {
421 	mock()
422 		.expectOneCall("sp_memory_retrieve_dynamic_is_supported")
423 		.withOutputParameterReturning("supported", supported, sizeof(*supported))
424 		.andReturnValue(result);
425 }
426 
sp_memory_retrieve_dynamic_is_supported(bool * supported)427 sp_result sp_memory_retrieve_dynamic_is_supported(bool *supported)
428 {
429 	return mock()
430 		.actualCall("sp_memory_retrieve_dynamic_is_supported")
431 		.withOutputParameter("supported", supported)
432 		.returnIntValue();
433 }
434 
expect_sp_memory_relinquish(uint64_t handle,const uint16_t endpoints[],uint32_t endpoint_count,const struct sp_memory_transaction_flags * flags,sp_result result)435 void expect_sp_memory_relinquish(uint64_t handle, const uint16_t endpoints[],
436 			         uint32_t endpoint_count,
437 			         const struct sp_memory_transaction_flags *flags,
438 				 sp_result result)
439 {
440 	mock()
441 		.expectOneCall("sp_memory_relinquish")
442 		.withUnsignedLongIntParameter("handle", handle)
443 		.withMemoryBufferParameter("endpoints", (const unsigned char *)endpoints,
444 					   sizeof(*endpoints) * endpoint_count)
445 		.withMemoryBufferParameter("flags", (const unsigned char *)flags, sizeof(*flags))
446 		.andReturnValue(result);
447 }
448 
sp_memory_relinquish(uint64_t handle,const uint16_t endpoints[],uint32_t endpoint_count,struct sp_memory_transaction_flags * flags)449 sp_result sp_memory_relinquish(uint64_t handle, const uint16_t endpoints[],
450 			       uint32_t endpoint_count,
451 			       struct sp_memory_transaction_flags *flags)
452 {
453 	return mock()
454 		.actualCall("sp_memory_relinquish")
455 		.withUnsignedLongIntParameter("handle", handle)
456 		.withMemoryBufferParameter("endpoints", (const unsigned char *)endpoints,
457 					   sizeof(*endpoints) * endpoint_count)
458 		.withMemoryBufferParameter("flags", (const unsigned char *)flags, sizeof(*flags))
459 		.returnIntValue();
460 }
461 
expect_sp_memory_reclaim(uint64_t handle,uint32_t flags,sp_result result)462 void expect_sp_memory_reclaim(uint64_t handle, uint32_t flags, sp_result result)
463 {
464 	mock()
465 		.expectOneCall("sp_memory_reclaim")
466 		.withUnsignedLongIntParameter("handle", handle)
467 		.withUnsignedIntParameter("flags", flags)
468 		.andReturnValue(result);
469 }
470 
sp_memory_reclaim(uint64_t handle,uint32_t flags)471 sp_result sp_memory_reclaim(uint64_t handle, uint32_t flags)
472 {
473 	return mock()
474 		.actualCall("sp_memory_reclaim")
475 		.withUnsignedLongIntParameter("handle", handle)
476 		.withUnsignedIntParameter("flags", flags)
477 		.returnIntValue();
478 }
479 
expect_sp_memory_permission_get(const void * base_address,const struct sp_mem_perm * mem_perm,sp_result result)480 void expect_sp_memory_permission_get(const void *base_address, const struct sp_mem_perm *mem_perm,
481 				     sp_result result)
482 {
483 	mock()
484 		.expectOneCall("sp_memory_permission_set")
485 		.withConstPointerParameter("base_address", base_address)
486 		.withOutputParameterReturning("mem_perm", mem_perm,
487 					      sizeof(*mem_perm))
488 		.andReturnValue(result);
489 }
490 
sp_memory_permission_get(const void * base_address,struct sp_mem_perm * mem_perm)491 sp_result sp_memory_permission_get(const void *base_address,
492 				   struct sp_mem_perm *mem_perm)
493 {
494 	return mock()
495 		.actualCall("sp_memory_permission_set")
496 		.withConstPointerParameter("base_address", base_address)
497 		.withOutputParameter("mem_perm", mem_perm)
498 		.returnIntValue();
499 }
500 
expect_sp_memory_permission_set(const void * base_address,size_t region_size,const struct sp_mem_perm * mem_perm,sp_result result)501 void expect_sp_memory_permission_set(const void *base_address, size_t region_size,
502 				     const struct sp_mem_perm *mem_perm, sp_result result)
503 {
504 	mock()
505 		.expectOneCall("sp_memory_permission_set")
506 		.withConstPointerParameter("base_address", base_address)
507 		.withUnsignedLongIntParameter("region_size", region_size)
508 		.withMemoryBufferParameter("mem_perm", (const unsigned char *)mem_perm,
509 					   sizeof(*mem_perm))
510 		.andReturnValue(result);
511 }
512 
sp_memory_permission_set(const void * base_address,size_t region_size,const struct sp_mem_perm * mem_perm)513 sp_result sp_memory_permission_set(const void *base_address, size_t region_size,
514 				   const struct sp_mem_perm *mem_perm)
515 {
516 	return mock()
517 		.actualCall("sp_memory_permission_set")
518 		.withConstPointerParameter("base_address", base_address)
519 		.withUnsignedLongIntParameter("region_size", region_size)
520 		.withMemoryBufferParameter("mem_perm", (const unsigned char *)mem_perm,
521 					   sizeof(*mem_perm))
522 		.returnIntValue();
523 }
524