常用的Xenomai 原生API:
1、任务管理
Xenomai 本身提供的一系列多任务调度机制,主要有以下一些函数:
int rt_task_create (RT_TASK *task, const char *name, int stksize,int prio, int mode) ; 任务的创建;
int rt_task_start (RT_TASK *task, void(*entry)(void *cookie),void *cookie) ; 开始任务调度;
int rt_task_suspend (RT_TASK *task); 挂起任务;
int rt_task_delete (RT_TASK *task) ; 删除任务;
int rt_task_set_periodic (RT_TASK *task, RTIME idate, RTIMEperiod) ;设置任务运行周期;
int rt_task_wait_period (unsigned long *overruns_r);挂起任务到下个周期再运行;
int rt_task_set_priority (RT_TASK *task, int prio);设置任务优先级;
2、内存堆服务
int rt_heap_create (RT_HEAP *heap, const char *name, size_theapsize, int mode) 创建一个内存堆空间或一个共享内存片段;
int rt_heap_delete (RT_HEAP*heap) 删除一个内存堆空间或一个共享内存片段;
int rt_heap_bind (RT_HEAP *heap, const char *name, RTIMEtimeout) 绑定共享内存空间;
int rt_heap_unbind (RT_HEAP *heap) 接触共享内存空间的绑定;
3、信息管道服务
int rt_pipe_create (RT_PIPE *pipe, const char *name, int minor,size_t poolsize) 创建通讯管道;
int rt_pipe_delete (RT_PIPE *pipe) 删除通讯管道;
ssize_t rt_pipe_receive (RT_PIPE *pipe, RT_PIPE_MSG **msgp, RTIME timeout)从管道接受一条信息;
ssize_t rt_pipe_send (RT_PIPE *pipe, RT_PIPE_MSG *msg, size_tsize, int mode) 向管道发送一条信息;
Xenomai 在实时内核之上还提供了多组API 模拟多种不同的实时操作系统和编程规范,包括POSIX、VxWorks 和RTAI等。这使得实时应用系统的开发和移植变得非常方便。