EDF中的Ada调度

时间:2014-05-25 19:58:21

标签: scheduled-tasks ada

由于某些原因,此EDF示例无法编译。我正在使用GNAT我在Windows 8.1中尝试过,Debian没有结果。

 with Ada.Real_Time, ada.Task_Identification,ada.Dispatching.EDF; use Ada.Real_Time, ada.Task_Identification,ada.Dispatching.EDF; 
Procedure exemple_ordon is
   Task tache_Periodique;

   Task body tache_Periodique is
       Echeance: Time_Span := Milliseconds(30); heure: Time;
   Begin
       heure:= Clock; Set_Deadline(Clock + Echeance);
       Loop 
            heure := heure + Echeance;Delay_Until_And_Set_Deadline(heure,Echeance); 
       end loop;
   End tache_Periodique;
Begin Null; End exemple_ordon ;

错误消息:

gnatmake -d -PC:\Users\Awk\default.gpr exemple_ordon.adb
gcc -c -g -O2 -I- -gnatA C:\Users\Awk\exemple_ordon.adb
Edf is not supported in this configuration
compilation abandoned
gnatmake: "C:\Users\Awk\exemple_ordon.adb" compilation error

1 个答案:

答案 0 :(得分:3)

消息Edf is not supported in this configuration讲述了这个故事!

我无法访问任何受支持的GNAT版本,但FSF GCC 4.9.0中的文件a-disedf.adsAda.Dispatching.EDF的规范)包含注释

--  This unit is not implemented in typical GNAT implementations that lie on
--  top of operating systems, because it is infeasible to implement in such
--  environments.

--  If a target environment provides appropriate support for this package,
--  then the Unimplemented_Unit pragma should be removed from this spec and
--  an appropriate body provided.

所以AdaCore可能会为付费客户提供一些更实时的目标(例如VxWorks)的实现。

您是否可以访问AdaCore的学术课程(GAP)?

如果你真的需要EDF调度,Burns和Wellings的 Ada 中的并发有一个例子(我有平装第二版);你可以在AbeBooks上便宜地买到它。

如果您只是需要有关一般任务的信息,Ada Information Clearinghouse列出了几个来源。

许多在Ada中开发高完整性实时软件的人都使用Ravenscar Profile