 | Discussion Forum |  |
|
|
Ensure thread safety in ARM C/C++ librariesNext Thread | Thread List | Previous Thread Start a Thread | Settings | Details | Message |
|---|
Read-Only Author Jan Raddatz Posted 29-Jan-2010 16:42 GMT Toolset ARM |  Ensure thread safety in ARM C/C++ libraries Jan Raddatz Dear forum, right now I am struggling with enabling thread safety for my ARM C/C++ libraries. Here's the problem I am facing: Actually I am running a multithreaded application on my Cortex-M3 device. I am facing spontaneous crashes and suspect the source of these crashes rooted inside the C or C++ library. As a solution I am trying to make the libraries thread safe as described here: [1] http://www.keil.com/support/man/docs/armlib/armlib_Chdcgdbh.htm and here: [2] http://www.keil.com/support/man/docs/armlib/armlib_Chdfjddj.htm Actually I tried to implement [2] by writing extern "C" int _mutex_initialize(int* p_pMutex) { return 1; } inside my main.cpp file. The problem is that _mutex_initialize is never called. Is there a special switch or anything that I have turn to force the C library calling my _mutex_initialize function? Many thanks in advance and best regards Jan | | Read-Only Author David Dominguez Posted 9-Feb-2010 09:42 GMT Toolset ARM |  RE: Ensure thread safety in ARM C/C++ libraries David Dominguez Hello The ARM library references _mutex_initialize with a weak reference. Therefore, the linker will remove this function unless your code references it. I don't remember how I solved it in my code, but maybe it is as simple as calling it in your main with null arguments. Remember to return 1 from the function, if you don't the library won't use the mutex. void main(void) { _mutex_initialize(NULL); .... } | |
Next Thread | Thread List | Previous Thread Start a Thread | Settings |
|