MTライブラリ化

VisualDSP++のMT(Multi-Thread)ライブラリはVDK前提なので、TOPPERS/JSPで利用するのはあまりに困難です。現在のサンプルはVDKのライブラリでお茶を濁していますが、これは浮動小数点ライブラリを使うとエラーが出るなどアドホックなものでしかありません。
ST(Single-Thread)ライブラリをベースに最小限のMT化ライブラリを作るため、以下の関数の書き換えを考えています。

  • malloc()
  • calloc()
  • realloc()
  • free()

これらの関数はheap_xxx()関数を呼び出すだけですので書き換えは実に簡単です。15分もかかりません。問題は置き換えです。VisualDSP++のライブラリは同じシンボルが複数ライブラリに存在する場合にも、ライブラリファイルの出現順序に応じてそのうちのひとつを選ぶ機能があります。残念ながら今のところ私がやったときに限り正しく動作しません。LDFの中には複数シンボルが同じ名前を持つケースがたくさんあるのですが、私のやり方の何が悪いのかはまだわかっていません。
最悪の場合は

elfar d

コマンドを使ってオリジナルのmalloc()などを削除することになります。