firmware
IEM Firmware Documentation
Loading...
Searching...
No Matches
newlib_lock_glue.c File Reference

Implementation of newlib lock interface. More...

#include <cmsis_compiler.h>
#include <newlib.h>
#include <stdatomic.h>
#include "stm32_lock.h"
#include <reent.h>
Include dependency graph for newlib_lock_glue.c:

Data Structures

struct  CxaGuardObject_t

Functions

__WEAK void Error_Handler (void)
 Global Error_Handler.
void __malloc_lock ()
 Acquire malloc lock.
void __malloc_unlock ()
 Release malloc lock.
void __env_lock (struct _reent *reent)
 Acquire env lock.
void __env_unlock (struct _reent *reent)
 Release env lock.
void __tz_lock ()
 Acquire tz lock.
void __tz_unlock ()
 Release tz lock.
int __cxa_guard_acquire (CxaGuardObject_t *guard_object)
 Acquire __cxa_guard mutex.
void __cxa_guard_abort (CxaGuardObject_t *guard_object)
 Abort __cxa_guard mutex.
void __cxa_guard_release (CxaGuardObject_t *guard_object)
 Release __cxa_guard mutex.

Variables

static LockingData_t __lock___malloc_recursive_mutex = LOCKING_DATA_INIT
static LockingData_t __lock___env_recursive_mutex = LOCKING_DATA_INIT
static LockingData_t __lock___tz_mutex = LOCKING_DATA_INIT
static LockingData_t __cxa_guard_mutex = LOCKING_DATA_INIT

Detailed Description

Implementation of newlib lock interface.

Author
STMicroelectronics

This file implements locking glue necessary to protect C library functions and initialization of local static objects in C++. Lock strategies are defined in stm32_lock.h that implements different level of thread-safety.

For more information about which C functions need which of these low level functions, please consult the newlib libc manual, see https://sourceware.org/newlib/libc.html

For more information about the one-time construction API for C++, see https://itanium-cxx-abi.github.io/cxx-abi/abi.html#once-ctor

Attention

© Copyright (c) 2021 STMicroelectronics. All rights reserved.

This software component is licensed by ST under BSD 3-Clause license, the "License"; You may not use this file except in compliance with the License. You may obtain a copy of the License at: opensource.org/licenses/BSD-3-Clause

Function Documentation

◆ Error_Handler()

__WEAK void Error_Handler ( void )

Global Error_Handler.

This function is executed in case of error occurrence.