Armadilloフォーラム

timerfd_create() を利用したいのですが、arm-linux-gnueabi-g++ で、timerfd.h がみつかりません

m-fujii

2014年9月4日 10時13分

藤井と申します。

Armadillo-440で、timerfd_create() を利用したいのですが、クロスコンパイラのarm-linux-gnueabi-g++ で”timerfd.h がありません”となります。
どのようにすれば、Armadilloでtimerfd_create() を利用できるようになりますでしょうか?

atde3 で、timerfd.h を find した結果、
  /usr/src/linux-headers-2.6.26-2-686/include/linux/timerfd.h などでは見つかりますが、
  /usr/arm-linux-gnueabi/include/sys などでは見つからない状況です。

何か情報がありましたら、ご教授お願い致します。

コメント

中村です。

> Armadillo-440で、timerfd_create() を利用したいのですが、クロスコンパイラのarm-linux-gnueabi-g++ で”timerfd.h がありません”となります。
> どのようにすれば、Armadilloでtimerfd_create() を利用できるようになりますでしょうか?

ML時代のこの記事は参考になりませんか?

[Armadillo:06661] Re: Armadillo-300 にて、タイマーと select を使うには?
http://lists.atmark-techno.com/pipermail/armadillo/2011-January/006661…
記事の最初のあたりの一部を引用しておきます。
| linux kernel 2.6.26(A4x0やA500)ならば、timerfdやsignalfdが使用可能です。
| ただ、libcにエントリーが無いので、自前でsyscallしてやる必要はあります。
| A440で使用した時には、以下のような関数を自作しました。
| ...
| int timerfd_create(int clockid, int flags) {
| return syscall(SYS_timerfd_create, clockid, flags);
| }
| ...

--
なかむら

藤井です。
中村様、情報ありがとうございます。

syscall()を使う事により、Armadilloでtimerfd_create() を利用できました。

これで一応目的は達成できたのですが、syscall()を使うことにためらっております。

ビルド環境を何とかする事でsyscall()を使わないで済む方法はありませんでしょうか?
環境構築などに詳しい方、ご教授願えませんでしょうか。
それとも、syscall()を使うのは一般的なことなのでしょうか?

よろしくお願いいたします。

> それとも、syscall()を使うのは一般的なことなのでしょうか?

libc が追いつかない時によく使います。一般的なので、安心してお使いください。

藤井です。
at_yashi 様、

返信ありがとうございます。
安心してsyscall()を使う事に致します。

Linux開発の初心者なので、また基本的な質問をさせて頂く事があるかと思いますが、
今後ともよろしくお願いいたします。