BSW Multicore Library (Bmc)
AUTOSAR Classic Libraries-Modul BSW Multicore Library (Bmc, Spezifikation: AUTOSAR_CP_SWS_BSWMulticoreLibrary.pdf, AUTOSAR_SWS_BSWMulticoreLibrary.pdf).
Funktionen — Übersicht
boolean Bmc_FlagTestAndSet (volatile Bmc_AtomicFlagType* Object);Atomically sets the value pointed to by Object to true.void Bmc_FlagClear (volatile Bmc_AtomicFlagType* Object);Atomically sets the value pointed to by Object to false.<Type> Bmc_Load_<TypeMn> (const volatile <Type>* Object); ⚠️Atomically loads the value pointed to by Object and returns it.void Bmc_Store_<TypeMn> (volatile <Type>* Object, <Type> Desired); ⚠️Atomically replaces the value pointed to by Object with the value of Desired.<Type> Bmc_Exchange_<TypeMn> (const volatile <Type>* Object, <Type> Desired); ⚠️Atomically replaces the value pointed to by Object with the value of Desired and returns the value pointed to by Object...boolean Bmc_CompareExchange_<TypeMn> (volatile <Type>* Object, <Type>* Expected, <Type> Desired); ⚠️Atomically compares the value pointed to by Object for equality with that in Expected, and if true, replaces the value pointed...<Type> Bmc_FetchAdd_<TypeMn> (volatile <Type>* Object, <Type> Operand); ⚠️Atomically replaces the value pointed to by Object with the result of the addition applied to the value pointed to by Object...<Type> Bmc_FetchSub_<TypeMn> (volatile <Type>* Object, <Type> Operand); ⚠️Atomically replaces the value pointed to by Object with the result of the subtraction applied to the value pointed to by...<Type> Bmc_FetchOr_<TypeMn> (volatile <Type>* Object, <Type> Operand); ⚠️Atomically replaces the value pointed to by Object with the result of the or-operation applied to the value pointed to by...<Type> Bmc_FetchXor_<TypeMn> (volatile <Type>* Object, <Type> Operand); ⚠️Atomically replaces the value pointed to by Object with the result of the xor-operation applied to the value pointed to by...<Type> Bmc_FetchAnd_<TypeMn> (volatile <Type>* Object, <Type> Operand); ⚠️Atomically replaces the value pointed to by Object with the result of the and-operation applied to the value pointed to by...void Bmc_ThreadFence (void);Creates a sequentially consistent acquire and release fence.void Bmc_GetVersionInfo (Std_VersionInfoType* Versioninfo);Returns the version information of this library.Bmc_AtomicUType Bmc_Load_u (const volatile Bmc_AtomicUType* Object);Atomically loads the value pointed to by Object and returns it.Bmc_AtomicSType Bmc_Load_s (const volatile Bmc_AtomicSType* Object);Atomically loads the value pointed to by Object and returns it.void Bmc_Store_u (volatile Bmc_AtomicUType* Object, Bmc_AtomicUType Desired);Atomically replaces the value pointed to by Object with the value of Desired.void Bmc_Store_s (volatile Bmc_AtomicSType* Object, Bmc_AtomicSType Desired);Atomically replaces the value pointed to by Object with the value of Desired.boolean Bmc_CompareExchange_u (volatile Bmc_AtomicUType* Object, Bmc_AtomicUType* Expected, Bmc_AtomicUType Desired);Atomically compares the value pointed to by Object for equality with that in Expected, and if true, replaces the value pointed...boolean Bmc_CompareExchange_s (volatile Bmc_AtomicSType* Object, Bmc_AtomicSType* Expected, Bmc_AtomicSType Desired);Atomically compares the value pointed to by Object for equality with that in Expected, and if true, replaces the value pointed...Bmc_AtomicUType Bmc_Exchange_u (const volatile Bmc_AtomicUType* Object, Bmc_AtomicUType Desired);Atomically replaces the value pointed to by Object with the value of Desired and returns the value pointed to by Object...Bmc_AtomicSType Bmc_Exchange_s (const volatile Bmc_AtomicSType* Object, Bmc_AtomicSType Desired);Atomically replaces the value pointed to by Object with the value of Desired and returns the value pointed to by Object...Bmc_AtomicUType Bmc_FetchAdd_u (volatile Bmc_AtomicUType* Object, Bmc_AtomicUType Operand);Atomically replaces the value pointed to by Object with the result of the addition applied to the value pointed to by Object...Bmc_AtomicSType Bmc_FetchAdd_s (volatile Bmc_AtomicSType* Object, Bmc_AtomicSType Operand);Atomically replaces the value pointed to by Object with the result of the addition applied to the value pointed to by Object...Bmc_AtomicUType Bmc_FetchAnd_u (volatile Bmc_AtomicUType* Object, Bmc_AtomicUType Operand);Atomically replaces the value pointed to by Object with the result of the and-operation applied to the value pointed to by...Bmc_AtomicSType Bmc_FetchAnd_s (volatile Bmc_AtomicSType* Object, Bmc_AtomicSType Operand);Atomically replaces the value pointed to by Object with the result of the and-operation applied to the value pointed to by...Bmc_AtomicUType Bmc_FetchOr_u (volatile Bmc_AtomicUType* Object, Bmc_AtomicUType Operand);Atomically replaces the value pointed to by Object with the result of the or-operation applied to the value pointed to by...Bmc_AtomicSType Bmc_FetchOr_s (volatile Bmc_AtomicSType* Object, Bmc_AtomicSType Operand);Atomically replaces the value pointed to by Object with the result of the or-operation applied to the value pointed to by...Bmc_AtomicUType Bmc_FetchSub_u (volatile Bmc_AtomicUType* Object, Bmc_AtomicUType Operand);Atomically replaces the value pointed to by Object with the result of the subtraction applied to the value pointed to by...Bmc_AtomicSType Bmc_FetchSub_s (volatile Bmc_AtomicSType* Object, Bmc_AtomicSType Operand);Atomically replaces the value pointed to by Object with the result of the subtraction applied to the value pointed to by...Bmc_AtomicUType Bmc_FetchXor_u (volatile Bmc_AtomicUType* Object, Bmc_AtomicUType Operand);Atomically replaces the value pointed to by Object with the result of the xor-operation applied to the value pointed to by...Bmc_AtomicSType Bmc_FetchXor_s (volatile Bmc_AtomicSType* Object, Bmc_AtomicSType Operand);Atomically replaces the value pointed to by Object with the result of the xor-operation applied to the value pointed to by...
Typen — Übersicht
struct Bmc_AtomicUTypeThe type shall be used for all unsigned data items, which are used for Bmc library functions.struct Bmc_AtomicSTypeThe type shall be used for all signed data items, which are used for Bmc library functions.struct Bmc_AtomicFlagTypeThe type shall be used for all Flag data items, which are used for Bmc library functions.
Anforderungen — Übersicht
SWS_BMC_00001The Bmc module shall provide the following files: C files Bmc_.SWS_BMC_00002DRAFT No error classification definition – like DET error IDs – shall be supported by library.SWS_BMC_00003DRAFT Error detection: Functions should check at runtime (both in production and in development code) the value of input...SWS_BMC_00004DRAFT The functions shall not call the DET for error notifica- tion.SWS_BMC_00005The Bmc library shall not require an initialization phase.SWS_BMC_00006The Bmc library shall not require a shutdown operation phase.SWS_BMC_00007The Bmc API can be directly called from BSW modules or SWCs.SWS_BMC_00008Using a library should be documented.SWS_BMC_00009The Bmc library shall be implemented in a way that the code can be shared among callers in different memory partitions.SWS_BMC_00010Usage of macros should be avoided.SWS_BMC_00011A library function shall not call any BSW modules functions, e.SWS_BMC_00012The library, written in the C programming language, should con- form to the MISRA C Standard.SWS_BMC_00013Each AUTOSAR library Module implementation *.SWS_BMC_00014Each AUTOSAR library Module implementation *.SWS_BMC_00015All AUTOSAR library Modules should use the AUTOSAR data types (integers, boolean) instead of native C data types unless this...SWS_BMC_00016All AUTOSAR library Modules should avoid direct use of com- piler and platform specific keywords unless this library is...SWS_BMC_00017The Bmc module shall provide the C macros ATOMIC__LOCK_FREE which shall expand to constant expressions suit- able for use in...SWS_BMC_00019The function Bmc_FlagTestAndSet atomically sets the value pointed to by Object to TRUE.SWS_BMC_00021The function Bmc_FlagClear atomically sets the value pointed to by Object to FALSE.SWS_BMC_00023The Bmc_Load_ functions atomically load the value pointed to by Object and return it.SWS_BMC_00025The Bmc_Store_ functions atomically replace the value pointed to by Object with the value of Desired.SWS_BMC_00027The Bmc_Exchange_ functions atomically replace the value pointed to by Object with the value of Desired and return the value...SWS_BMC_00029The Bmc_CompareExchange_ functions atomically compare the value pointed to by Object for equality with that in Expected, and...SWS_BMC_00031The Bmc_FetchAdd_ functions atomically replace the value pointed to by Object with the result of the addition applied to the...SWS_BMC_00033The Bmc_FetchSub_ functions atomically replace the value pointed to by Object with the result of the subtraction applied to...SWS_BMC_00035The Bmc_FetchOr_ functions atomically replace the value pointed to by Object with the result of the or-operation applied to...SWS_BMC_00037The Bmc_FetchXor_ functions atomically replace the value pointed to by Object with the result of the xor-operation applied to...SWS_BMC_00039The Bmc_FetchAnd_ functions atomically replace the value pointed to by Object with the result of the and-operation applied to...SWS_BMC_00041The function Bmc_ThreadFence creates a sequentially consis- tent acquire and release fence.SWS_BMC_00043If source code for caller and callee of Bmc_GetVersionInfo is available, the Bmc library should realize Bmc_GetVersionInfo as...SWS_BMC_00044The standardized common published parameters as required by SRS_BSW_00402 in the General Requirements on Basic Software...SWS_BMC_00045The Bmc library shall not have any configuration options that may affect the functional behavior of the routines.SWS_BMC_00046All load and store routines shall implicitly make use of the feature explicitly introduced by Bmc_ThreadFence.SWS_BMC_00047All fetch routines shall implicitly make use of the feature explicitly introduced by Bmc_ThreadFence.SWS_BMC_00999These requirements are not applicable to this specification.
Funktionen & Typen — Detailansicht
function Bmc_FlagTestAndSet [SWS_Bmc_91003] 📄 PDF
boolean Bmc_FlagTestAndSet(volatile Bmc_AtomicFlagType* Object);
Atomically sets the value pointed to by Object to true.
function Bmc_FlagClear [SWS_Bmc_91004] 📄 PDF
void Bmc_FlagClear(volatile Bmc_AtomicFlagType* Object);
Atomically sets the value pointed to by Object to false.
function Bmc_Load_<TypeMn> [SWS_Bmc_91005] 📄 PDF
<Type> Bmc_Load_<TypeMn>(const volatile <Type>* Object); ⚠️
Atomically loads the value pointed to by Object and returns it.
function Bmc_Store_<TypeMn> [SWS_Bmc_91006] 📄 PDF
void Bmc_Store_<TypeMn>(volatile <Type>* Object, <Type> Desired); ⚠️
Atomically replaces the value pointed to by Object with the value of Desired.
function Bmc_Exchange_<TypeMn> [SWS_Bmc_91007] 📄 PDF
<Type> Bmc_Exchange_<TypeMn>(const volatile <Type>* Object, <Type> Desired); ⚠️
Atomically replaces the value pointed to by Object with the value of Desired and returns the value pointed to by Object immediately before the effects.
function Bmc_CompareExchange_<TypeMn> [SWS_Bmc_91008] 📄 PDF
boolean Bmc_CompareExchange_<TypeMn>(volatile <Type>* Object, <Type>* Expected, <Type> Desired); ⚠️
Atomically compares the value pointed to by Object for equality with that in Expected, and if true, replaces the value pointed to by Object with Desired, and if false, updates the value in Expected with the value pointed to by Object.
function Bmc_FetchAdd_<TypeMn> [SWS_Bmc_91009] 📄 PDF
<Type> Bmc_FetchAdd_<TypeMn>(volatile <Type>* Object, <Type> Operand); ⚠️
Atomically replaces the value pointed to by Object with the result of the addition applied to the value pointed to by Object and the given Operand.
function Bmc_FetchSub_<TypeMn> [SWS_Bmc_91010] 📄 PDF
<Type> Bmc_FetchSub_<TypeMn>(volatile <Type>* Object, <Type> Operand); ⚠️
Atomically replaces the value pointed to by Object with the result of the subtraction applied to the value pointed to by Object and the given Operand.
function Bmc_FetchOr_<TypeMn> [SWS_Bmc_91011] 📄 PDF
<Type> Bmc_FetchOr_<TypeMn>(volatile <Type>* Object, <Type> Operand); ⚠️
Atomically replaces the value pointed to by Object with the result of the or-operation applied to the value pointed to by Object and the given Operand.
function Bmc_FetchXor_<TypeMn> [SWS_Bmc_91012] 📄 PDF
<Type> Bmc_FetchXor_<TypeMn>(volatile <Type>* Object, <Type> Operand); ⚠️
Atomically replaces the value pointed to by Object with the result of the xor-operation applied to the value pointed to by Object and the given Operand.
function Bmc_FetchAnd_<TypeMn> [SWS_Bmc_91013] 📄 PDF
<Type> Bmc_FetchAnd_<TypeMn>(volatile <Type>* Object, <Type> Operand); ⚠️
Atomically replaces the value pointed to by Object with the result of the and-operation applied to the value pointed to by Object and the given Operand.
function Bmc_ThreadFence [SWS_Bmc_91014] 📄 PDF
void Bmc_ThreadFence(void);
Creates a sequentially consistent acquire and release fence. An acquire and release fence instruction prevents the memory reordering of any read or write which precedes it in program order with any read or write which follows it in program order.
function Bmc_GetVersionInfo [SWS_Bmc_91015] 📄 PDF
void Bmc_GetVersionInfo(Std_VersionInfoType* Versioninfo);
Returns the version information of this library.
function Bmc_Load_u [SWS_Bmc_91019] 📄 PDF
Bmc_AtomicUType Bmc_Load_u(const volatile Bmc_AtomicUType* Object);
Atomically loads the value pointed to by Object and returns it.
function Bmc_Load_s [SWS_Bmc_91020] 📄 PDF
Bmc_AtomicSType Bmc_Load_s(const volatile Bmc_AtomicSType* Object);
Atomically loads the value pointed to by Object and returns it.
function Bmc_Store_u [SWS_Bmc_91021] 📄 PDF
void Bmc_Store_u(volatile Bmc_AtomicUType* Object, Bmc_AtomicUType Desired);
Atomically replaces the value pointed to by Object with the value of Desired.
function Bmc_Store_s [SWS_Bmc_91022] 📄 PDF
void Bmc_Store_s(volatile Bmc_AtomicSType* Object, Bmc_AtomicSType Desired);
Atomically replaces the value pointed to by Object with the value of Desired.
function Bmc_CompareExchange_u [SWS_Bmc_91023] 📄 PDF
boolean Bmc_CompareExchange_u(volatile Bmc_AtomicUType* Object, Bmc_AtomicUType* Expected, Bmc_AtomicUType Desired);
Atomically compares the value pointed to by Object for equality with that in Expected, and if true, replaces the value pointed to by Object with Desired, and if false, updates the value in Expected with the value pointed to by Object.
function Bmc_CompareExchange_s [SWS_Bmc_91024] 📄 PDF
boolean Bmc_CompareExchange_s(volatile Bmc_AtomicSType* Object, Bmc_AtomicSType* Expected, Bmc_AtomicSType Desired);
Atomically compares the value pointed to by Object for equality with that in Expected, and if true, replaces the value pointed to by Object with Desired, and if false, updates the value in Expected with the value pointed to by Object.
function Bmc_Exchange_u [SWS_Bmc_91025] 📄 PDF
Bmc_AtomicUType Bmc_Exchange_u(const volatile Bmc_AtomicUType* Object, Bmc_AtomicUType Desired);
Atomically replaces the value pointed to by Object with the value of Desired and returns the value pointed to by Object immediately before the effects.
function Bmc_Exchange_s [SWS_Bmc_91026] 📄 PDF
Bmc_AtomicSType Bmc_Exchange_s(const volatile Bmc_AtomicSType* Object, Bmc_AtomicSType Desired);
Atomically replaces the value pointed to by Object with the value of Desired and returns the value pointed to by Object immediately before the effects.
function Bmc_FetchAdd_u [SWS_Bmc_91027] 📄 PDF
Bmc_AtomicUType Bmc_FetchAdd_u(volatile Bmc_AtomicUType* Object, Bmc_AtomicUType Operand);
Atomically replaces the value pointed to by Object with the result of the addition applied to the value pointed to by Object and the given Operand.
function Bmc_FetchAdd_s [SWS_Bmc_91028] 📄 PDF
Bmc_AtomicSType Bmc_FetchAdd_s(volatile Bmc_AtomicSType* Object, Bmc_AtomicSType Operand);
Atomically replaces the value pointed to by Object with the result of the addition applied to the value pointed to by Object and the given Operand.
function Bmc_FetchAnd_u [SWS_Bmc_91029] 📄 PDF
Bmc_AtomicUType Bmc_FetchAnd_u(volatile Bmc_AtomicUType* Object, Bmc_AtomicUType Operand);
Atomically replaces the value pointed to by Object with the result of the and-operation applied to the value pointed to by Object and the given Operand.
function Bmc_FetchAnd_s [SWS_Bmc_91030] 📄 PDF
Bmc_AtomicSType Bmc_FetchAnd_s(volatile Bmc_AtomicSType* Object, Bmc_AtomicSType Operand);
Atomically replaces the value pointed to by Object with the result of the and-operation applied to the value pointed to by Object and the given Operand.
function Bmc_FetchOr_u [SWS_Bmc_91031] 📄 PDF
Bmc_AtomicUType Bmc_FetchOr_u(volatile Bmc_AtomicUType* Object, Bmc_AtomicUType Operand);
Atomically replaces the value pointed to by Object with the result of the or-operation applied to the value pointed to by Object and the given Operand.
function Bmc_FetchOr_s [SWS_Bmc_91032] 📄 PDF
Bmc_AtomicSType Bmc_FetchOr_s(volatile Bmc_AtomicSType* Object, Bmc_AtomicSType Operand);
Atomically replaces the value pointed to by Object with the result of the or-operation applied to the value pointed to by Object and the given Operand.
function Bmc_FetchSub_u [SWS_Bmc_91033] 📄 PDF
Bmc_AtomicUType Bmc_FetchSub_u(volatile Bmc_AtomicUType* Object, Bmc_AtomicUType Operand);
Atomically replaces the value pointed to by Object with the result of the subtraction applied to the value pointed to by Object and the given Operand.
function Bmc_FetchSub_s [SWS_Bmc_91034] 📄 PDF
Bmc_AtomicSType Bmc_FetchSub_s(volatile Bmc_AtomicSType* Object, Bmc_AtomicSType Operand);
Atomically replaces the value pointed to by Object with the result of the subtraction applied to the value pointed to by Object and the given Operand.
function Bmc_FetchXor_u [SWS_Bmc_91035] 📄 PDF
Bmc_AtomicUType Bmc_FetchXor_u(volatile Bmc_AtomicUType* Object, Bmc_AtomicUType Operand);
Atomically replaces the value pointed to by Object with the result of the xor-operation applied to the value pointed to by Object and the given Operand.
function Bmc_FetchXor_s [SWS_Bmc_91036] 📄 PDF
Bmc_AtomicSType Bmc_FetchXor_s(volatile Bmc_AtomicSType* Object, Bmc_AtomicSType Operand);
Atomically replaces the value pointed to by Object with the result of the xor-operation applied to the value pointed to by Object and the given Operand.
type Bmc_AtomicUType [SWS_Bmc_91016] 📄 PDF
The type shall be used for all unsigned data items, which are used for Bmc library functions.
type Bmc_AtomicSType [SWS_Bmc_91017] 📄 PDF
The type shall be used for all signed data items, which are used for Bmc library functions.
type Bmc_AtomicFlagType [SWS_Bmc_91018] 📄 PDF
The type shall be used for all Flag data items, which are used for Bmc library functions.
requirement SWS_BMC_00001 [SWS_BMC_00001] 📄 PDF
The Bmc module shall provide the following files: C files Bmc_<name>.c used to implement the library. All C files shall be pre-fixed with 'Bmc_'. The header file Bmc.h provides all public function prototypes and types defined by the Bmc library specification.
requirement SWS_BMC_00002 [SWS_BMC_00002] 📄 PDF
DRAFT No error classification definition – like DET error IDs – shall be supported by library.
requirement SWS_BMC_00003 [SWS_BMC_00003] 📄 PDF
DRAFT Error detection: Functions should check at runtime (both in production and in development code) the value of input parameters, especially cases where erroneous value can bring to fatal error or unpredictable result, if they have the values allowed by the function specification. All the error cases shall be listed in SWS and the function should return a specified value (in SWS) that is not configurable. This value is dependent of the function and the error case so it is determined case by case. If values passed to the library routines are not in valid range, out of boundary condition and out of the function specification, then such errors are not detected in the library routines.
requirement SWS_BMC_00004 [SWS_BMC_00004] 📄 PDF
DRAFT The functions shall not call the DET for error notifica- tion.
requirement SWS_BMC_00005 [SWS_BMC_00005] 📄 PDF
The Bmc library shall not require an initialization phase. A Li- brary function may be called at the very first step of ECU initialization, e.g. even by the OS or EcuM, thus the library shall be ready.
requirement SWS_BMC_00006 [SWS_BMC_00006] 📄 PDF
The Bmc library shall not require a shutdown operation phase.
requirement SWS_BMC_00007 [SWS_BMC_00007] 📄 PDF
The Bmc API can be directly called from BSW modules or SWCs. No port definition is required. It is a pure function call.
requirement SWS_BMC_00008 [SWS_BMC_00008] 📄 PDF
Using a library should be documented. If a BSW module or a SWC uses a library, the developer should add an ImplementationDependencyOnArti- fact in the BSW/SWC template. minVersion and maxVersion parameters correspond to the supplier version. In case of an AUTOSAR library, these parameters may be left empty because a SWC or BSW module may rely on a library behavior, not on a sup- plier implementation. However, the SWC or BSW modules shall be compatible with the AUTOSAR platform where they are integrated.
requirement SWS_BMC_00009 [SWS_BMC_00009] 📄 PDF
The Bmc library shall be implemented in a way that the code can be shared among callers in different memory partitions.
requirement SWS_BMC_00010 [SWS_BMC_00010] 📄 PDF
Usage of macros should be avoided. The functions should be declared as functions or inline functions.
requirement SWS_BMC_00011 [SWS_BMC_00011] 📄 PDF
A library function shall not call any BSW modules functions, e.g. the DET. A library function can call other library functions because a library function shall be re-entrant. But other BSW modules functions may not be re-entrant.
requirement SWS_BMC_00012 [SWS_BMC_00012] 📄 PDF
The library, written in the C programming language, should con- form to the MISRA C Standard. Please refer to SWS_BSW_00115 for more details.
requirement SWS_BMC_00013 [SWS_BMC_00013] 📄 PDF
Each AUTOSAR library Module implementation <library> * .c and <library> * .h shall map their code to memory sections using the AUTOSAR memory mapping mechanism.
requirement SWS_BMC_00014 [SWS_BMC_00014] 📄 PDF
Each AUTOSAR library Module implementation <library> * .c that uses AUTOSAR integer data types and/or the standard return type, shall include the header file Std_Types.h .
requirement SWS_BMC_00015 [SWS_BMC_00015] 📄 PDF
All AUTOSAR library Modules should use the AUTOSAR data types (integers, boolean) instead of native C data types unless this library is clearly identified to be compliant only with one platform.
requirement SWS_BMC_00016 [SWS_BMC_00016] 📄 PDF
All AUTOSAR library Modules should avoid direct use of com- piler and platform specific keywords unless this library is clearly identified to be com- pliant only with one platform.
requirement SWS_BMC_00017 [SWS_BMC_00017] 📄 PDF
The Bmc module shall provide the C macros ATOMIC_<TYPEMN>_LOCK_FREE which shall expand to constant expressions suit- able for use in #if preprocessing directives and which indicate the lock-free property of the corresponding atomic types. The implemented macros are listed in Table 8.3.
requirement SWS_BMC_00019 [SWS_BMC_00019] 📄 PDF
The function Bmc_FlagTestAndSet atomically sets the value pointed to by Object to TRUE . It returns this value before the operation, i.e., TRUE , if it was already set and FALSE otherwise.
requirement SWS_BMC_00021 [SWS_BMC_00021] 📄 PDF
The function Bmc_FlagClear atomically sets the value pointed to by Object to FALSE .
requirement SWS_BMC_00023 [SWS_BMC_00023] 📄 PDF
The Bmc_Load_<TypeMn> functions atomically load the value pointed to by Object and return it. The implemented functions are listed in Table 8.4.
requirement SWS_BMC_00025 [SWS_BMC_00025] 📄 PDF
The Bmc_Store_<TypeMn> functions atomically replace the value pointed to by Object with the value of Desired. The implemented functions are listed in Table 8.5.
requirement SWS_BMC_00027 [SWS_BMC_00027] 📄 PDF
The Bmc_Exchange_<TypeMn> functions atomically replace the value pointed to by Object with the value of Desired and return the value pointed to by Object immediately before the effects. The implemented functions are listed in Table 8.6.
requirement SWS_BMC_00029 [SWS_BMC_00029] 📄 PDF
The Bmc_CompareExchange_<TypeMn> functions atomically compare the value pointed to by Object for equality with that in Expected, and if true, replace the value pointed to by Object with Desired, and if false, update the value in Expected with the value pointed to by Object. The implemented functions are listed in Table 8.7.
requirement SWS_BMC_00031 [SWS_BMC_00031] 📄 PDF
The Bmc_FetchAdd_<TypeMn> functions atomically replace the value pointed to by Object with the result of the addition applied to the value pointed to by Object and the given Operand and return the value pointed to by Object immedi- ately before the effects. The implemented functions are listed in Table 8.8.
requirement SWS_BMC_00033 [SWS_BMC_00033] 📄 PDF
The Bmc_FetchSub_<TypeMn> functions atomically replace the value pointed to by Object with the result of the subtraction applied to the value pointed to by Object and the given Operand and return the value pointed to by Object immediately before the effects. The implemented functions are listed in Table 8.9.
requirement SWS_BMC_00035 [SWS_BMC_00035] 📄 PDF
The Bmc_FetchOr_<TypeMn> functions atomically replace the value pointed to by Object with the result of the or-operation applied to the value pointed to by Object and the given Operand and return the value pointed to by Object immedi- ately before the effects. The implemented functions are listed in Table 8.10.
requirement SWS_BMC_00037 [SWS_BMC_00037] 📄 PDF
The Bmc_FetchXor_<TypeMn> functions atomically replace the value pointed to by Object with the result of the xor-operation applied to the value pointed to by Object and the given Operand and return the value pointed to by Object immediately before the effects. The implemented functions are listed in Table 8.11.
requirement SWS_BMC_00039 [SWS_BMC_00039] 📄 PDF
The Bmc_FetchAnd_<TypeMn> functions atomically replace the value pointed to by Object with the result of the and-operation applied to the value pointed to by Object and the given Operand and return the value pointed to by Object immediately before the effects. The implemented functions are listed in Table 8.12.
requirement SWS_BMC_00041 [SWS_BMC_00041] 📄 PDF
The function Bmc_ThreadFence creates a sequentially consis- tent acquire and release fence.
requirement SWS_BMC_00043 [SWS_BMC_00043] 📄 PDF
If source code for caller and callee of Bmc_GetVersionInfo is available, the Bmc library should realize Bmc_GetVersionInfo as a macro defined in the module's header file.
requirement SWS_BMC_00044 [SWS_BMC_00044] 📄 PDF
The standardized common published parameters as required by SRS_BSW_00402 in the General Requirements on Basic Software Modules [3] shall be published within the header file of this module and need to be provided in the BSW Module Description. The according module abbreviation can be found in the List of Basic Software Modules
requirement SWS_BMC_00045 [SWS_BMC_00045] 📄 PDF
The Bmc library shall not have any configuration options that may affect the functional behavior of the routines. I.e. for a given set of input parame- ters, the outputs shall be always the same. For example, the returned value in case of error shall not be configurable.
requirement SWS_BMC_00046 [SWS_BMC_00046] 📄 PDF
All load and store routines shall implicitly make use of the feature explicitly introduced by Bmc_ThreadFence .
requirement SWS_BMC_00047 [SWS_BMC_00047] 📄 PDF
All fetch routines shall implicitly make use of the feature explicitly introduced by Bmc_ThreadFence .
requirement SWS_BMC_00999 [SWS_BMC_00999] 📄 PDF
These requirements are not applicable to this specification.
Request a governed re-review of this record. The record is not changed immediately.
- Record
AUTOSAR/AP/record/CP_MOD_Bmc- Status
- unspecified
- Version
AUTOSAR/AP/record/CP_MOD_Bmc@rel:R20-11#9e90959a- Content hash
9e90959a- Source
- https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_BSWMulticoreLibrary.pdf#nameddest=SWS_Bmc_91003