1.5.9 再実装したミューテックス関数を確実に呼び出す方法

再実装した _mutex_*() 関数がライブラリファイル内のオブジェクト内にある場合、リンカでは自動的にオブジェクトがインクルードされません。

このため、_mutex_*() 関数が、ビルトしたイメージから除外される可能性があります。
_mutex_*() 関数が確実に呼び出されるようにするには、以下のいずれかの方法を使用します。
  • ミューテックス関数をライブラリオブジェクトファイル以外のファイルに保存します。これにより、ミューテックス関数がリンク時に解決されるようになります。
  • ミューテックス関数をライブラリオブジェクトファイルに保存し、オブジェクト内への非 weak 型の参照を編成します。
  • ミューテックス関数をライブラリオブジェクトファイルに保存し、リンカの起動時に「 libraryname.a(objectfilename.o)」と記述することにより、リンカが特定のオブジェクトをライブラリから明示的に抽出できるようにコマンドラインで指定します。
関連する概念
1.5.11 ARM C ライブラリでのスレッドセーフティ
1.5.12 ARM C++ ライブラリでのスレッドセーフティ
関連する参考文書
1.5.10 マルチスレッド環境での ARM C ライブラリの使用
1.5.8 マルチスレッドアプリケーションにおけるロックの管理
非機密扱いPDF file icon PDF 版ARM DUI0808CJ
Copyright © 2014, 2015 ARM.All rights reserved.