Armadilloフォーラム

SCHED_DEADLINEの使用方法について

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
=====

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

コメント

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"に定義されています。

sudohayato

2017年7月21日 15時48分

溝渕さん

須藤です。ご返信ありがとうございます。

"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を記載すれば良いのでしょうか?
サンプルなどはありますでしょうか?

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