sudohayato
2017年7月12日 21時26分
お世話になっております。須藤と申します。
スケジューリングポリシーの「SCHED_DEADLINE」を使用したいと考えております。
http://events.linuxfoundation.org/sites/events/files/slides/SCHED_DEADL…
https://linuxjm.osdn.jp/html/LDP_man-pages/man2/sched_setattr.2.html
↑
この辺を参考に実装しているのですが、以下のようなエラーが出てしまいビルドが通りません。
カーネルはlinux-3.14-at7を使っているので対応していると思うのですが、
ビルドが通らない理由はわかりますでしょうか?
=====
error: storage size of ‘attr’ isn’t known
error: invalid application of ‘sizeof’ to incomplete type ‘struct attr’
error: ‘SCHED_DEADLINE’ undeclared (first use in this function)
=====
なお、以下の構成で開発しております。
=====
開発環境:atde5-amd64-20160225
カーネル:linux-3.14-at7
Atmark Dist:atmark-dist-20160830
=====
以上、よろしくお願いいたします。
コメント
sudohayato
溝渕さん
須藤です。ご返信ありがとうございます。
"linux/sched.h"はincludeしており、構造体は書式通りにstruct sched_attr attrと宣言しております。
気になった部分としてsched.hの状況は以下となっています。
/home/atmark/atmark-dist-20160830/include/linux/sched.h
⇒SCHED_DEADLINE 定義あり
/usr/arm-linux-gnueabi/include/linux/sched.h
⇒SCHED_DEADLINE 未定義
makefileで/usr/arm-linux-gnueabi/include/linux/sched.hを参照しているように思えますが、
/home/atmark/atmark-dist-20160830/include/linux/sched.hを
参照するにはどのようなMakefileを記載すれば良いのでしょうか?
サンプルなどはありますでしょうか?
以上、よろしくお願いいたします。
at_mizo
2017年7月20日 10時53分
溝渕です。
> ビルドが通らない理由はわかりますでしょうか?
ヘッダファイルまたはサーチパスが適切に指定されていないためと思われます。
> =====
> error: storage size of ‘attr’ isn’t known
> error: invalid application of ‘sizeof’ to incomplete type ‘struct attr’
なぜ"struct attr"を使っているのでしょうか。
sched_setattr(2)の第2引数の型は、"struct sched_attr"です。
> error: ‘SCHED_DEADLINE’ undeclared (first use in this function)
SCHED_DEADLINEは"linux/sched.h"に定義されています。