Environment; Hexagon SDK 3.2, Toolset 8.0.10
For various reasons we need to create a background processing task in a dynamically loaded (.so) CAPIv2 multi-module/node (using inter-module communication)
Is is possible and what thread (or other) mechanism would be most appropriate? (qurt native, posix pthread, c++11 thread) What libraries would have to be linked in to achieve this?
I was unable to find CAPIv2 examples of this in the SDK.
Update: I've been able to build a CAPIv2 module using pthread functions, however the unit tests fail with the following error;
dlopen capi_v2_elliptic_engine.so failed undefined PLT symbol #40 pthread_join in capi_v2_elliptic_engine.so
Is there a way to make CAPIv2 unit test framework work with pthread? (in the hexagon simulator?) And what about on-device?
Thanks,
Thomas
You can use qurt_thread APIs. In SDK, you need to add qurt header files dependency in Makefile like..
INCDIRS += \
inc \
src \
<C:\Qualcomm\Hexagon_SDK\3.1\libs\common\qurt\ADSPv60MP\include \>
Thank you for the answer, however it does not change the situation apparently; using the qurt_thread functions creates a similar issue except the unresolved symbol is now the qurt_thread functions when the unit tests are run;
dlopen capi_v2_elliptic_engine.so failed undefined PLT symbol #4 qurt_thread_create in capi_v2_elliptic_engine.so