[Armadillo:03185] semtimedopの使用方法について
Takenoshita Koyo
email@hidden
2008年 7月 26日 (土) 20:10:18 JST
semtimedop()の挙動を調べてみたところ、
semtimedop()
-> sys_ipc()
-> sys_semtimedop()
という順番でシステムコールが呼ばれていました。
sys_ipc()に入った直後で各引数の値を確認したところ、
6番めの引数(timeout)の値が、
semtimedop()に渡した値とは異なっており、
正しいアドレスになっていなかったため、
EFAULTが発生していました。
linux-2.6.12では、6個の引数を取るシステムコールは、
上手く扱えないものがあるようです。
(linux-2.6.18では修正されています。)
この問題を修正するpatchを添付いたしますので、
お試し下さい。
2008-07-25 (金) の 14:28 +0900 に 相田 仁 さんは書きました:
> お世話になります。
>
> semopを使用した場合は、問題なく処理できたのですが
> semtimedopを使用した場合は
> errno=14
> semaphore: Bad address
> が、表示されてしまいました。
>
> どのようにすれば、semtimedopを利用できるのかご教授願います。
>
>
> --- ソースコード抜粋 ---
>
> {
> struct sembuf sem_b;
> sem_b.sem_num = 0;
> sem_b.sem_op = -1;
> sem_b.sem_flg = SEM_UNDO;
> int res;
> #if 0
> res = semtimedop(m_semaphore, &sem_b, 1, NULL);
> #else
> res = semop(m_semaphore, &sem_b, 1);
> #endif
> if (res == -1) {
> printf("\nerrno=%d\n", errno);
> perror("semaphore");
> }
> }
>
> --- END ---
>
> 開発環境は
> ・Armadillo-9
> ・atmark-dist-20070727
> ・linux-2.6.12.3-a9-13
>
>
> 以上、よろしくお願いいたします。
>
>
> _______________________________________________
> armadillo mailing list
> email@hidden
> http://lists.atmark-techno.com/mailman/listinfo/armadillo
--
Takenoshita Koyo
-------------- next part --------------
テキスト形式以外の添付ファイルを保管しました...
ファイル名: fix_sys_call.patch
型: text/x-patch
サイズ: 842 バイト
説明: 無し
URL: <http://lists.atmark-techno.com/pipermail/armadillo/attachments/20080726/d6cb83a6/attachment.bin>
armadillo メーリングリストの案内