3 <<__retarget_lock_init>>, <<__retarget_lock_init_recursive>>, <<__retarget_lock_close>>, <<__retarget_lock_close_recursive>>, <<__retarget_lock_acquire>>, <<__retarget_lock_acquire_recursive>>, <<__retarget_lock_try_acquire>>, <<__retarget_lock_try_acquire_recursive>>, <<__retarget_lock_release>>, <<__retarget_lock_release_recursive>>---locking routines
6 __lock___sfp_recursive_mutex
8 __lock___atexit_recursive_mutex
10 __lock___at_quick_exit_mutex
12 __lock___malloc_recursive_mutex
14 __lock___env_recursive_mutex
18 __lock___dd_hash_mutex
20 __lock___arc4random_mutex
25 __retarget_lock_init_recursive
29 __retarget_lock_close_recursive
31 __retarget_lock_acquire
33 __retarget_lock_acquire_recursive
35 __retarget_lock_try_acquire
37 __retarget_lock_try_acquire_recursive
39 __retarget_lock_release
41 __retarget_lock_release_recursive
45 struct __lock __lock___sfp_recursive_mutex;
46 struct __lock __lock___atexit_recursive_mutex;
47 struct __lock __lock___at_quick_exit_mutex;
48 struct __lock __lock___malloc_recursive_mutex;
49 struct __lock __lock___env_recursive_mutex;
50 struct __lock __lock___tz_mutex;
51 struct __lock __lock___dd_hash_mutex;
52 struct __lock __lock___arc4random_mutex;
54 void __retarget_lock_init (_LOCK_T * <[lock_ptr]>);
55 void __retarget_lock_init_recursive (_LOCK_T * <[lock_ptr]>);
56 void __retarget_lock_close (_LOCK_T <[lock]>);
57 void __retarget_lock_close_recursive (_LOCK_T <[lock]>);
58 void __retarget_lock_acquire (_LOCK_T <[lock]>);
59 void __retarget_lock_acquire_recursive (_LOCK_T <[lock]>);
60 int __retarget_lock_try_acquire (_LOCK_T <[lock]>);
61 int __retarget_lock_try_acquire_recursive (_LOCK_T <[lock]>);
62 void __retarget_lock_release (_LOCK_T <[lock]>);
63 void __retarget_lock_release_recursive (_LOCK_T <[lock]>);
66 Newlib was configured to allow the target platform to provide the locking
67 routines and static locks at link time. As such, a dummy default
68 implementation of these routines and static locks is provided for
69 single-threaded application to link successfully out of the box on bare-metal
72 For multi-threaded applications the target platform is required to provide
73 an implementation for @strong{all} these routines and static locks. If some
74 routines or static locks are missing, the link will fail with doubly defined
78 These locking routines and static lock are newlib-specific. Supporting OS
79 subroutines are required for linking multi-threaded applications.
82 /* dummy lock routines and static locks for single-threaded apps */
84 #ifndef __SINGLE_THREAD__
92 struct __lock __lock___sfp_recursive_mutex
;
93 struct __lock __lock___atexit_recursive_mutex
;
94 struct __lock __lock___at_quick_exit_mutex
;
95 struct __lock __lock___malloc_recursive_mutex
;
96 struct __lock __lock___env_recursive_mutex
;
97 struct __lock __lock___tz_mutex
;
98 struct __lock __lock___dd_hash_mutex
;
99 struct __lock __lock___arc4random_mutex
;
102 __retarget_lock_init (_LOCK_T
*lock
)
107 __retarget_lock_init_recursive(_LOCK_T
*lock
)
112 __retarget_lock_close(_LOCK_T lock
)
117 __retarget_lock_close_recursive(_LOCK_T lock
)
122 __retarget_lock_acquire (_LOCK_T lock
)
127 __retarget_lock_acquire_recursive (_LOCK_T lock
)
132 __retarget_lock_try_acquire(_LOCK_T lock
)
138 __retarget_lock_try_acquire_recursive(_LOCK_T lock
)
144 __retarget_lock_release (_LOCK_T lock
)
149 __retarget_lock_release_recursive (_LOCK_T lock
)
153 #endif /* !defined(__SINGLE_THREAD__) */