[Suzaku:01109] Threadを用いたアプリケーションの開発について

奥野 弘嗣 email@hidden
2008年 2月 5日 (火) 18:06:22 JST


はじめまして。
大阪大学の奥野と申します。

現在、atmarkdist + SZ410の開発を行っているのですが、
Threadを用いたアプリケーションの開発について
教えて頂けないでしょうか。
uClinux-dist + SZ310では
問題なく動いたプログラムが動きません。

uClinux-dist + SZ310での開発におけるMakefileは
uClinux-distマニュアルにある「pthread対応」欄と基本的に同じで、
"$(LIBPTHREAD)" の部分だけは直接 "-lpthread" と指定していました。
(「pthread対応」欄の存在を知らなかったので…)

atmarkdist + SZ410で、上記と同じくMakefileに"-lpthread"
と記入してコンパイルすると、コンパイルは成功するのですが、
SUZAKU上で、下記の行でSIGSEGVを起こします。

status1 = pthread_create(&thread_id1, NULL, ThreadProc1, (void *)NULL);

次に、"-lpthread" を "$(LIBPTHREAD)" として
コンパイルしようとすると、エラーになりました。
確認すると"$(LIBPTHREAD)"という変数が空になっているようです。

そこで質問なのですが、
1. $(LIBPTHREAD)変数を使うために、何か下準備は必要でしょうか
2. $(LIBPTHREAD)を用いた場合、
  "-lpthread"と異なるライブラリが組み込まれるのでしょうか

もし、質問2の答えが「同じ」だとすると、
$(LIBPTHREAD)変数が使えてもSUZAKU上で同様のエラーが予想されるので

3. カーネル2.6系では、pthread_create使用時の注意点等あるのでしょうか

カーネル2.4系と2.6系では、Threadの実装が違うようなので
そのあたりが原因なんでしょうか??

開発環境は、Debian 4.0 及び、CentOS 5.0です。
双方、同様の症状となりました。

参考となるURL、スレッドなどでもかまいませんので、
ご教授頂ければ幸いです。

以上、よろしくお願いします。



suzaku メーリングリストの案内