1 /*
2  * Copyright 2021 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  * Generated mock file from original source file
19  */
20 
21 #include "osi/include/osi.h"
22 
23 #include <bluetooth/log.h>
24 #include <sys/socket.h>
25 
26 #include <list>
27 #include <map>
28 #include <string>
29 
30 #include "osi/include/alarm.h"
31 #include "osi/include/allocator.h"
32 #include "osi/include/config.h"
33 #include "osi/include/fixed_queue.h"
34 #include "osi/include/future.h"
35 #include "osi/include/hash_map_utils.h"
36 #include "osi/include/list.h"
37 #include "osi/include/reactor.h"
38 #include "osi/include/ringbuffer.h"
39 #include "osi/include/socket.h"
40 #include "osi/include/thread.h"
41 #include "osi/include/wakelock.h"
42 #include "osi/src/compat.cc"  // For strlcpy
43 #include "test/common/fake_osi.h"
44 #include "test/common/mock_functions.h"
45 
46 // TODO(b/369381361) Enfore -Wmissing-prototypes
47 #pragma GCC diagnostic ignored "-Wmissing-prototypes"
48 #pragma GCC diagnostic ignored "-Wunused-parameter"
49 
OsiObject(void * ptr)50 OsiObject::OsiObject(void* ptr) : ptr_(ptr) {}
51 
OsiObject(const void * ptr)52 OsiObject::OsiObject(const void* ptr) : ptr_(const_cast<void*>(ptr)) {}
53 
~OsiObject()54 OsiObject::~OsiObject() {
55   if (ptr_ != nullptr) {
56     osi_free(ptr_);
57   }
58 }
59 
Release()60 void* OsiObject::Release() {
61   void* ptr = ptr_;
62   ptr_ = nullptr;
63   return ptr;
64 }
65 
66 struct StringComparison {
operator ()StringComparison67   bool operator()(char const* lhs, char const* rhs) const { return strcmp(lhs, rhs) < 0; }
68 };
69 std::map<const char*, bool, StringComparison> fake_osi_bool_props_map;
70 
Find(const std::string & key)71 std::list<entry_t>::iterator section_t::Find(const std::string& key) {
72   inc_func_call_count(__func__);
73   return std::find_if(entries.begin(), entries.end(),
74                       [&key](const entry_t& entry) { return entry.key == key; });
75 }
Find(const std::string & section)76 std::list<section_t>::iterator config_t::Find(const std::string& section) {
77   inc_func_call_count(__func__);
78   return std::find_if(sections.begin(), sections.end(),
79                       [&section](const section_t& sec) { return sec.name == section; });
80 }
81 
checksum_save(const std::string & checksum,const std::string & filename)82 bool checksum_save(const std::string& checksum, const std::string& filename) {
83   inc_func_call_count(__func__);
84   return false;
85 }
config_get_bool(const config_t & config,const std::string & section,const std::string & key,bool def_value)86 bool config_get_bool(const config_t& config, const std::string& section, const std::string& key,
87                      bool def_value) {
88   inc_func_call_count(__func__);
89   return false;
90 }
config_has_key(const config_t & config,const std::string & section,const std::string & key)91 bool config_has_key(const config_t& config, const std::string& section, const std::string& key) {
92   inc_func_call_count(__func__);
93   return false;
94 }
config_has_section(const config_t & config,const std::string & section)95 bool config_has_section(const config_t& config, const std::string& section) {
96   inc_func_call_count(__func__);
97   return false;
98 }
config_remove_key(config_t * config,const std::string & section,const std::string & key)99 bool config_remove_key(config_t* config, const std::string& section, const std::string& key) {
100   inc_func_call_count(__func__);
101   return false;
102 }
config_remove_section(config_t * config,const std::string & section)103 bool config_remove_section(config_t* config, const std::string& section) {
104   inc_func_call_count(__func__);
105   return false;
106 }
config_save(const config_t & config,const std::string & filename)107 bool config_save(const config_t& config, const std::string& filename) {
108   inc_func_call_count(__func__);
109   return false;
110 }
Has(const std::string & key)111 bool config_t::Has(const std::string& key) {
112   inc_func_call_count(__func__);
113   return false;
114 }
Has(const std::string & key)115 bool section_t::Has(const std::string& key) {
116   inc_func_call_count(__func__);
117   return false;
118 }
config_get_string(const config_t & config,const std::string & section,const std::string & key,const std::string * def_value)119 const std::string* config_get_string(const config_t& config, const std::string& section,
120                                      const std::string& key, const std::string* def_value) {
121   inc_func_call_count(__func__);
122   return nullptr;
123 }
config_get_int(const config_t & config,const std::string & section,const std::string & key,int def_value)124 int config_get_int(const config_t& config, const std::string& section, const std::string& key,
125                    int def_value) {
126   inc_func_call_count(__func__);
127   return 0;
128 }
checksum_read(const char * filename)129 std::string checksum_read(const char* filename) {
130   inc_func_call_count(__func__);
131   return 0;
132 }
config_new(const char * filename)133 std::unique_ptr<config_t> config_new(const char* filename) {
134   inc_func_call_count(__func__);
135   return 0;
136 }
config_new_clone(const config_t & src)137 std::unique_ptr<config_t> config_new_clone(const config_t& src) {
138   inc_func_call_count(__func__);
139   return 0;
140 }
config_new_empty(void)141 std::unique_ptr<config_t> config_new_empty(void) {
142   inc_func_call_count(__func__);
143   return 0;
144 }
config_get_uint64(const config_t & config,const std::string & section,const std::string & key,uint64_t def_value)145 uint64_t config_get_uint64(const config_t& config, const std::string& section,
146                            const std::string& key, uint64_t def_value) {
147   inc_func_call_count(__func__);
148   return 0;
149 }
config_set_bool(config_t * config,const std::string & section,const std::string & key,bool value)150 void config_set_bool(config_t* config, const std::string& section, const std::string& key,
151                      bool value) {
152   inc_func_call_count(__func__);
153 }
config_set_int(config_t * config,const std::string & section,const std::string & key,int value)154 void config_set_int(config_t* config, const std::string& section, const std::string& key,
155                     int value) {
156   inc_func_call_count(__func__);
157 }
config_set_string(config_t * config,const std::string & section,const std::string & key,const std::string & value)158 void config_set_string(config_t* config, const std::string& section, const std::string& key,
159                        const std::string& value) {
160   inc_func_call_count(__func__);
161 }
config_set_uint64(config_t * config,const std::string & section,const std::string & key,uint64_t value)162 void config_set_uint64(config_t* config, const std::string& section, const std::string& key,
163                        uint64_t value) {
164   inc_func_call_count(__func__);
165 }
Set(std::string key,std::string value)166 void section_t::Set(std::string key, std::string value) { inc_func_call_count(__func__); }
167 
reactor_change_registration(reactor_object_t * object,void (* read_ready)(void * context),void (* write_ready)(void * context))168 bool reactor_change_registration(reactor_object_t* object, void (*read_ready)(void* context),
169                                  void (*write_ready)(void* context)) {
170   inc_func_call_count(__func__);
171   return false;
172 }
reactor_register(reactor_t * reactor,int fd,void * context,void (* read_ready)(void * context),void (* write_ready)(void * context))173 reactor_object_t* reactor_register(reactor_t* reactor, int fd, void* context,
174                                    void (*read_ready)(void* context),
175                                    void (*write_ready)(void* context)) {
176   inc_func_call_count(__func__);
177   return nullptr;
178 }
reactor_run_once(reactor_t * reactor)179 reactor_status_t reactor_run_once(reactor_t* reactor) {
180   inc_func_call_count(__func__);
181   return REACTOR_STATUS_DONE;
182 }
reactor_start(reactor_t * reactor)183 reactor_status_t reactor_start(reactor_t* reactor) {
184   inc_func_call_count(__func__);
185   return REACTOR_STATUS_DONE;
186 }
reactor_new(void)187 reactor_t* reactor_new(void) {
188   inc_func_call_count(__func__);
189   return nullptr;
190 }
reactor_free(reactor_t * reactor)191 void reactor_free(reactor_t* reactor) { inc_func_call_count(__func__); }
reactor_stop(reactor_t * reactor)192 void reactor_stop(reactor_t* reactor) { inc_func_call_count(__func__); }
reactor_unregister(reactor_object_t * obj)193 void reactor_unregister(reactor_object_t* obj) { inc_func_call_count(__func__); }
194 
future_new(void)195 future_t* future_new(void) {
196   inc_func_call_count(__func__);
197   return nullptr;
198 }
future_new_immediate(void * value)199 future_t* future_new_immediate(void* value) {
200   inc_func_call_count(__func__);
201   return nullptr;
202 }
future_ready(future_t * future,void * value)203 void future_ready(future_t* future, void* value) { inc_func_call_count(__func__); }
mutex_global_lock(void)204 void mutex_global_lock(void) { inc_func_call_count(__func__); }
mutex_global_unlock(void)205 void mutex_global_unlock(void) { inc_func_call_count(__func__); }
future_await(future_t * future)206 void* future_await(future_t* future) {
207   inc_func_call_count(__func__);
208   return nullptr;
209 }
210 
thread_is_self(const thread_t * thread)211 bool thread_is_self(const thread_t* thread) {
212   inc_func_call_count(__func__);
213   return false;
214 }
thread_post(thread_t * thread,thread_fn func,void * context)215 bool thread_post(thread_t* thread, thread_fn func, void* context) {
216   inc_func_call_count(__func__);
217   return false;
218 }
thread_set_priority(thread_t * thread,int priority)219 bool thread_set_priority(thread_t* thread, int priority) {
220   inc_func_call_count(__func__);
221   return false;
222 }
thread_set_rt_priority(thread_t * thread,int priority)223 bool thread_set_rt_priority(thread_t* thread, int priority) {
224   inc_func_call_count(__func__);
225   return false;
226 }
thread_name(const thread_t * thread)227 const char* thread_name(const thread_t* thread) {
228   inc_func_call_count(__func__);
229   return nullptr;
230 }
thread_get_reactor(const thread_t * thread)231 reactor_t* thread_get_reactor(const thread_t* thread) {
232   inc_func_call_count(__func__);
233   return nullptr;
234 }
thread_new(const char * name)235 thread_t* thread_new(const char* name) {
236   inc_func_call_count(__func__);
237   return nullptr;
238 }
thread_new_sized(const char * name,size_t work_queue_capacity)239 thread_t* thread_new_sized(const char* name, size_t work_queue_capacity) {
240   inc_func_call_count(__func__);
241   return nullptr;
242 }
thread_free(thread_t * thread)243 void thread_free(thread_t* thread) { inc_func_call_count(__func__); }
thread_join(thread_t * thread)244 void thread_join(thread_t* thread) { inc_func_call_count(__func__); }
thread_stop(thread_t * thread)245 void thread_stop(thread_t* thread) { inc_func_call_count(__func__); }
246 
osi_strdup(const char * str)247 char* osi_strdup(const char* str) {
248   inc_func_call_count(__func__);
249   return nullptr;
250 }
osi_strndup(const char * str,size_t len)251 char* osi_strndup(const char* str, size_t len) {
252   inc_func_call_count(__func__);
253   return nullptr;
254 }
osi_free(void * ptr)255 void osi_free(void* ptr) { inc_func_call_count(__func__); }
osi_free_and_reset(void ** p_ptr)256 void osi_free_and_reset(void** p_ptr) { inc_func_call_count(__func__); }
osi_calloc(size_t size)257 void* osi_calloc(size_t size) {
258   inc_func_call_count(__func__);
259   return nullptr;
260 }
osi_malloc(size_t size)261 void* osi_malloc(size_t size) {
262   inc_func_call_count(__func__);
263   return nullptr;
264 }
265 
fixed_queue_is_empty(fixed_queue_t * queue)266 bool fixed_queue_is_empty(fixed_queue_t* queue) {
267   inc_func_call_count(__func__);
268   return false;
269 }
fixed_queue_try_enqueue(fixed_queue_t * queue,void * data)270 bool fixed_queue_try_enqueue(fixed_queue_t* queue, void* data) {
271   inc_func_call_count(__func__);
272   return false;
273 }
fixed_queue_new(size_t capacity)274 fixed_queue_t* fixed_queue_new(size_t capacity) {
275   inc_func_call_count(__func__);
276   return nullptr;
277 }
fixed_queue_get_dequeue_fd(const fixed_queue_t * queue)278 int fixed_queue_get_dequeue_fd(const fixed_queue_t* queue) {
279   inc_func_call_count(__func__);
280   return 0;
281 }
fixed_queue_get_enqueue_fd(const fixed_queue_t * queue)282 int fixed_queue_get_enqueue_fd(const fixed_queue_t* queue) {
283   inc_func_call_count(__func__);
284   return 0;
285 }
fixed_queue_get_list(fixed_queue_t * queue)286 list_t* fixed_queue_get_list(fixed_queue_t* queue) {
287   inc_func_call_count(__func__);
288   return nullptr;
289 }
fixed_queue_capacity(fixed_queue_t * queue)290 size_t fixed_queue_capacity(fixed_queue_t* queue) {
291   inc_func_call_count(__func__);
292   return 0;
293 }
fixed_queue_length(fixed_queue_t * queue)294 size_t fixed_queue_length(fixed_queue_t* queue) {
295   inc_func_call_count(__func__);
296   return 0;
297 }
fixed_queue_enqueue(fixed_queue_t * queue,void * data)298 void fixed_queue_enqueue(fixed_queue_t* queue, void* data) { inc_func_call_count(__func__); }
fixed_queue_flush(fixed_queue_t * queue,fixed_queue_free_cb free_cb)299 void fixed_queue_flush(fixed_queue_t* queue, fixed_queue_free_cb free_cb) {
300   inc_func_call_count(__func__);
301 }
fixed_queue_free(fixed_queue_t * queue,fixed_queue_free_cb free_cb)302 void fixed_queue_free(fixed_queue_t* queue, fixed_queue_free_cb free_cb) {
303   inc_func_call_count(__func__);
304 }
fixed_queue_register_dequeue(fixed_queue_t * queue,reactor_t * reactor,fixed_queue_cb ready_cb,void * context)305 void fixed_queue_register_dequeue(fixed_queue_t* queue, reactor_t* reactor, fixed_queue_cb ready_cb,
306                                   void* context) {
307   inc_func_call_count(__func__);
308 }
fixed_queue_unregister_dequeue(fixed_queue_t * queue)309 void fixed_queue_unregister_dequeue(fixed_queue_t* queue) { inc_func_call_count(__func__); }
fixed_queue_dequeue(fixed_queue_t * queue)310 void* fixed_queue_dequeue(fixed_queue_t* queue) {
311   inc_func_call_count(__func__);
312   return nullptr;
313 }
fixed_queue_try_dequeue(fixed_queue_t * queue)314 void* fixed_queue_try_dequeue(fixed_queue_t* queue) {
315   inc_func_call_count(__func__);
316   return nullptr;
317 }
fixed_queue_try_peek_first(fixed_queue_t * queue)318 void* fixed_queue_try_peek_first(fixed_queue_t* queue) {
319   inc_func_call_count(__func__);
320   return nullptr;
321 }
fixed_queue_try_peek_last(fixed_queue_t * queue)322 void* fixed_queue_try_peek_last(fixed_queue_t* queue) {
323   inc_func_call_count(__func__);
324   return nullptr;
325 }
fixed_queue_try_remove_from_queue(fixed_queue_t * queue,void * data)326 void* fixed_queue_try_remove_from_queue(fixed_queue_t* queue, void* data) {
327   inc_func_call_count(__func__);
328   return nullptr;
329 }
330 
alarm_new(const char * name)331 alarm_t* alarm_new(const char* name) {
332   inc_func_call_count(__func__);
333   return (alarm_t*)new uint8_t[30];
334 }
alarm_new_periodic(const char * name)335 alarm_t* alarm_new_periodic(const char* name) {
336   inc_func_call_count(__func__);
337   return nullptr;
338 }
339 
340 // Callback to last set alarm
341 struct fake_osi_alarm_set_on_mloop fake_osi_alarm_set_on_mloop_;
342 
343 // Vector of previous osi alarms. Keep it for proper handling alarm_is_scheduler function
344 static std::vector<struct fake_osi_alarm_set_on_mloop> previous_fake_osi_alarms_;
345 
alarm_is_scheduled(const alarm_t * alarm)346 bool alarm_is_scheduled(const alarm_t* alarm) {
347   inc_func_call_count(__func__);
348 
349   auto iter = find_if(previous_fake_osi_alarms_.begin(), previous_fake_osi_alarms_.end(),
350                       [alarm](auto const& a) {
351                         bluetooth::log::debug("iter: {} == {} ?", std::format_ptr(a.alarm),
352                                               std::format_ptr(alarm));
353                         return a.alarm == alarm;
354                       });
355   if (iter != previous_fake_osi_alarms_.end()) {
356     return true;
357   }
358 
359   bluetooth::log::debug(" {} == {} ?", std::format_ptr(fake_osi_alarm_set_on_mloop_.alarm),
360                         std::format_ptr(alarm));
361 
362   return fake_osi_alarm_set_on_mloop_.alarm == alarm;
363 }
alarm_get_remaining_ms(const alarm_t * alarm)364 uint64_t alarm_get_remaining_ms(const alarm_t* alarm) {
365   inc_func_call_count(__func__);
366   return 0;
367 }
368 
fake_osi_alarm_clear(alarm_t * alarm)369 static void fake_osi_alarm_clear(alarm_t* alarm) {
370   if (alarm != nullptr) {
371     auto iter = find_if(previous_fake_osi_alarms_.begin(), previous_fake_osi_alarms_.end(),
372                         [alarm](auto const& a) { return a.alarm == alarm; });
373     if (iter != previous_fake_osi_alarms_.end()) {
374       bluetooth::log::debug(" clearing alarm {} ", std::format_ptr(iter->alarm));
375       previous_fake_osi_alarms_.erase(iter);
376       return;
377     }
378   }
379 
380   if (fake_osi_alarm_set_on_mloop_.alarm == alarm || alarm == nullptr) {
381     bluetooth::log::debug(" clearing alarm {} ", std::format_ptr(alarm));
382     fake_osi_alarm_set_on_mloop_.alarm = nullptr;
383     fake_osi_alarm_set_on_mloop_.interval_ms = 0;
384     fake_osi_alarm_set_on_mloop_.cb = nullptr;
385     fake_osi_alarm_set_on_mloop_.data = nullptr;
386   }
387 }
388 
alarm_cancel(alarm_t * alarm)389 void alarm_cancel(alarm_t* alarm) {
390   inc_func_call_count(__func__);
391   fake_osi_alarm_clear(alarm);
392 }
393 
alarm_cleanup(void)394 void alarm_cleanup(void) {
395   previous_fake_osi_alarms_.clear();
396   fake_osi_alarm_clear(nullptr);
397 
398   inc_func_call_count(__func__);
399 }
alarm_debug_dump(int fd)400 void alarm_debug_dump(int fd) { inc_func_call_count(__func__); }
alarm_free(alarm_t * alarm)401 void alarm_free(alarm_t* alarm) {
402   fake_osi_alarm_clear(alarm);
403   uint8_t* ptr = (uint8_t*)alarm;
404   delete[] ptr;
405   inc_func_call_count(__func__);
406 }
alarm_set(alarm_t * alarm,uint64_t interval_ms,alarm_callback_t cb,void * data)407 void alarm_set(alarm_t* alarm, uint64_t interval_ms, alarm_callback_t cb, void* data) {
408   inc_func_call_count(__func__);
409 }
410 
alarm_set_on_mloop(alarm_t * alarm,uint64_t interval_ms,alarm_callback_t cb,void * data)411 void alarm_set_on_mloop(alarm_t* alarm, uint64_t interval_ms, alarm_callback_t cb, void* data) {
412   inc_func_call_count(__func__);
413 
414   if (fake_osi_alarm_set_on_mloop_.alarm != nullptr) {
415     bluetooth::log::info("Queuing alarm {}", std::format_ptr(fake_osi_alarm_set_on_mloop_.alarm));
416     previous_fake_osi_alarms_.push_back(fake_osi_alarm_set_on_mloop_);
417   }
418 
419   bluetooth::log::info("Adding alarm {}", std::format_ptr(alarm));
420   fake_osi_alarm_set_on_mloop_.alarm = alarm;
421   fake_osi_alarm_set_on_mloop_.interval_ms = interval_ms;
422   fake_osi_alarm_set_on_mloop_.cb = cb;
423   fake_osi_alarm_set_on_mloop_.data = data;
424 }
425 
socket_listen(const socket_t * socket,port_t port)426 bool socket_listen(const socket_t* socket, port_t port) {
427   inc_func_call_count(__func__);
428   return false;
429 }
socket_accept(const socket_t * socket)430 socket_t* socket_accept(const socket_t* socket) {
431   inc_func_call_count(__func__);
432   return nullptr;
433 }
socket_new(void)434 socket_t* socket_new(void) {
435   inc_func_call_count(__func__);
436   return nullptr;
437 }
socket_new_from_fd(int fd)438 socket_t* socket_new_from_fd(int fd) {
439   inc_func_call_count(__func__);
440   return nullptr;
441 }
socket_bytes_available(const socket_t * socket)442 ssize_t socket_bytes_available(const socket_t* socket) {
443   inc_func_call_count(__func__);
444   return 0;
445 }
socket_read(const socket_t * socket,void * buf,size_t count)446 ssize_t socket_read(const socket_t* socket, void* buf, size_t count) {
447   inc_func_call_count(__func__);
448   return 0;
449 }
socket_write(const socket_t * socket,const void * buf,size_t count)450 ssize_t socket_write(const socket_t* socket, const void* buf, size_t count) {
451   inc_func_call_count(__func__);
452   return 0;
453 }
socket_write_and_transfer_fd(const socket_t * socket,const void * buf,size_t count,int fd)454 ssize_t socket_write_and_transfer_fd(const socket_t* socket, const void* buf, size_t count,
455                                      int fd) {
456   inc_func_call_count(__func__);
457   return 0;
458 }
socket_free(socket_t * socket)459 void socket_free(socket_t* socket) { inc_func_call_count(__func__); }
socket_register(socket_t * socket,reactor_t * reactor,void * context,socket_cb read_cb,socket_cb write_cb)460 void socket_register(socket_t* socket, reactor_t* reactor, void* context, socket_cb read_cb,
461                      socket_cb write_cb) {
462   inc_func_call_count(__func__);
463 }
socket_unregister(socket_t * socket)464 void socket_unregister(socket_t* socket) { inc_func_call_count(__func__); }
465 
list_append(list_t * list,void * data)466 bool list_append(list_t* list, void* data) {
467   inc_func_call_count(__func__);
468   return false;
469 }
list_contains(const list_t * list,const void * data)470 bool list_contains(const list_t* list, const void* data) {
471   inc_func_call_count(__func__);
472   return false;
473 }
list_insert_after(list_t * list,list_node_t * prev_node,void * data)474 bool list_insert_after(list_t* list, list_node_t* prev_node, void* data) {
475   inc_func_call_count(__func__);
476   return false;
477 }
list_is_empty(const list_t * list)478 bool list_is_empty(const list_t* list) {
479   inc_func_call_count(__func__);
480   return false;
481 }
list_prepend(list_t * list,void * data)482 bool list_prepend(list_t* list, void* data) {
483   inc_func_call_count(__func__);
484   return false;
485 }
list_remove(list_t * list,void * data)486 bool list_remove(list_t* list, void* data) {
487   inc_func_call_count(__func__);
488   return false;
489 }
list_back_node(const list_t * list)490 list_node_t* list_back_node(const list_t* list) {
491   inc_func_call_count(__func__);
492   return nullptr;
493 }
list_begin(const list_t * list)494 list_node_t* list_begin(const list_t* list) {
495   inc_func_call_count(__func__);
496   return nullptr;
497 }
list_end(const list_t *)498 list_node_t* list_end(const list_t* /* list */) {
499   inc_func_call_count(__func__);
500   return nullptr;
501 }
list_foreach(const list_t * list,list_iter_cb callback,void * context)502 list_node_t* list_foreach(const list_t* list, list_iter_cb callback, void* context) {
503   inc_func_call_count(__func__);
504   return nullptr;
505 }
list_next(const list_node_t * node)506 list_node_t* list_next(const list_node_t* node) {
507   inc_func_call_count(__func__);
508   return nullptr;
509 }
list_new(list_free_cb callback)510 list_t* list_new(list_free_cb callback) {
511   inc_func_call_count(__func__);
512   return nullptr;
513 }
list_new_internal(list_free_cb callback,const allocator_t * zeroed_allocator)514 list_t* list_new_internal(list_free_cb callback, const allocator_t* zeroed_allocator) {
515   inc_func_call_count(__func__);
516   return nullptr;
517 }
list_length(const list_t * list)518 size_t list_length(const list_t* list) {
519   inc_func_call_count(__func__);
520   return 0;
521 }
list_clear(list_t * list)522 void list_clear(list_t* list) { inc_func_call_count(__func__); }
list_free(list_t * list)523 void list_free(list_t* list) { inc_func_call_count(__func__); }
list_back(const list_t * list)524 void* list_back(const list_t* list) {
525   inc_func_call_count(__func__);
526   return nullptr;
527 }
list_front(const list_t * list)528 void* list_front(const list_t* list) {
529   inc_func_call_count(__func__);
530   return nullptr;
531 }
list_node(const list_node_t * node)532 void* list_node(const list_node_t* node) {
533   inc_func_call_count(__func__);
534   return nullptr;
535 }
536 
osi_socket_local_client(const char * name,int namespaceId,int type)537 int osi_socket_local_client(const char* name, int namespaceId, int type) {
538   inc_func_call_count(__func__);
539   return 0;
540 }
osi_socket_local_client_connect(int fd,const char * name,int namespaceId,int type)541 int osi_socket_local_client_connect(int fd, const char* name, int namespaceId, int type) {
542   inc_func_call_count(__func__);
543   return 0;
544 }
osi_socket_local_server_bind(int s,const char * name,int namespaceId)545 int osi_socket_local_server_bind(int s, const char* name, int namespaceId) {
546   inc_func_call_count(__func__);
547   return 0;
548 }
osi_socket_make_sockaddr_un(const char * name,int namespaceId,struct sockaddr_un * p_addr,socklen_t * alen)549 int osi_socket_make_sockaddr_un(const char* name, int namespaceId, struct sockaddr_un* p_addr,
550                                 socklen_t* alen) {
551   inc_func_call_count(__func__);
552   return 0;
553 }
554 
ringbuffer_available(const ringbuffer_t * rb)555 size_t ringbuffer_available(const ringbuffer_t* rb) {
556   inc_func_call_count(__func__);
557   return 0;
558 }
ringbuffer_delete(ringbuffer_t * rb,size_t length)559 size_t ringbuffer_delete(ringbuffer_t* rb, size_t length) {
560   inc_func_call_count(__func__);
561   return 0;
562 }
ringbuffer_insert(ringbuffer_t * rb,const uint8_t * p,size_t length)563 size_t ringbuffer_insert(ringbuffer_t* rb, const uint8_t* p, size_t length) {
564   inc_func_call_count(__func__);
565   return 0;
566 }
ringbuffer_peek(const ringbuffer_t * rb,off_t offset,uint8_t * p,size_t length)567 size_t ringbuffer_peek(const ringbuffer_t* rb, off_t offset, uint8_t* p, size_t length) {
568   inc_func_call_count(__func__);
569   return 0;
570 }
ringbuffer_pop(ringbuffer_t * rb,uint8_t * p,size_t length)571 size_t ringbuffer_pop(ringbuffer_t* rb, uint8_t* p, size_t length) {
572   inc_func_call_count(__func__);
573   return 0;
574 }
ringbuffer_size(const ringbuffer_t * rb)575 size_t ringbuffer_size(const ringbuffer_t* rb) {
576   inc_func_call_count(__func__);
577   return 0;
578 }
ringbuffer_free(ringbuffer_t * rb)579 void ringbuffer_free(ringbuffer_t* rb) { inc_func_call_count(__func__); }
580 
osi_property_get_bool(const char * key,bool default_value)581 bool osi_property_get_bool(const char* key, bool default_value) {
582   inc_func_call_count(__func__);
583   if (fake_osi_bool_props_map.count(key)) {
584     return fake_osi_bool_props_map.at(key);
585   }
586   return default_value;
587 }
588 
osi_property_set_bool(const char * key,bool value)589 void osi_property_set_bool(const char* key, bool value) {
590   fake_osi_bool_props_map.insert_or_assign(key, value);
591 }
592 
osi_property_get(const char * key,char * value,const char * default_value)593 int osi_property_get(const char* key, char* value, const char* default_value) {
594   inc_func_call_count(__func__);
595   return 0;
596 }
osi_property_set(const char * key,const char * value)597 int osi_property_set(const char* key, const char* value) {
598   inc_func_call_count(__func__);
599   return 0;
600 }
osi_property_get_int32(const char * key,int32_t default_value)601 int32_t osi_property_get_int32(const char* key, int32_t default_value) {
602   inc_func_call_count(__func__);
603   return 0;
604 }
605 
wakelock_acquire(void)606 bool wakelock_acquire(void) {
607   inc_func_call_count(__func__);
608   return false;
609 }
wakelock_release(void)610 bool wakelock_release(void) {
611   inc_func_call_count(__func__);
612   return false;
613 }
wakelock_cleanup(void)614 void wakelock_cleanup(void) { inc_func_call_count(__func__); }
wakelock_debug_dump(int fd)615 void wakelock_debug_dump(int fd) { inc_func_call_count(__func__); }
wakelock_set_os_callouts(bt_os_callouts_t * callouts)616 void wakelock_set_os_callouts(bt_os_callouts_t* callouts) { inc_func_call_count(__func__); }
wakelock_set_paths(const char * lock_path,const char * unlock_path)617 void wakelock_set_paths(const char* lock_path, const char* unlock_path) {
618   inc_func_call_count(__func__);
619 }
620