因课题需要,经过一段时间的研究,终于把Xen下自带的arinc653算法跑起来了,总结了几点要素如下:
1. 必须是单核,现在找单核的机器不现实,可以在计算机启动时,按Del键进入BIOS设置,可以只运行一个CPU。
2. 默认的arinc653算法只支持一个Domain0,想将DomainU加入到调度队列中必须使用xenctrl编程接口来动态配置。可以参考:http://wiki.xen.org/wiki/ARINC653_Scheduler
3. 编译时命令:gcc test.c -lxenctrl -o test
下面加上我写的一个可以运行的例子以备忘:
#include <string.h>
#include <xenctrl.h>
#define NUM_MINOR_FRAMES 4
typedef int64_t s_time_t;
#define MILLISECS(_ms) (((s_time_t)(_ms)) * 1000000UL )
#define DOMN_RUNTIME MILLISECS(10)
//UUID
//"00000000-0000-0000-0000-000000000000"
//"0e03b3f4-35f8-f4ab-9159-69d5ce0158d4"
//"afdcba83-69ba-b342-ba51-d6fbb9c62b52"
//"0a02d612-15d7-6e61-235e-fa049e66f441"
//下面的16进制数其实就是上面相应的UUID两个两个一组
char dom_uuid[4][16] = {
{0},{0x0e,0x03,0xb3,