1. 任务状态
• #define T_BLOCKED XNPEND
• #define T_DELAYED XNDELAY
• #define T_READY XNREADY
• #define T_DORMANTXNDORMANT
• #define T_STARTEDXNSTARTED
• #define T_BOOST XNBOOST
• #define T_LOCK XNLOCK
• #define T_NOSIG XNASDI
• #define T_WARNSW XNTRAPSW
• #define T_RPIOFF XNRPIOFF
2. Alarm服务
• int rt_alarm_create (RT_ALARM ∗alarm,const char ∗name, rt_alarm_t handler, void ∗cookie)
Alarm |
存储alarm相关数据的描述符地址 |
Name |
Alarm变量名 |
Handler |
Alarm结束时调用地址 |
Cookie |
传递给alarm handler作为第二个参数 |
•int rt_alarm_delete (RT_ALARM ∗alarm)
Alarm |
待删除alarm描述符地址 |
•int rt_alarm_start (RT_ALARM ∗alarm,RTIME value, RTIME interval)
Alarm |
Alarm描述符地址 |
Value |
初始alarm shot的相关数据 |
Interval |
Alarm重载值 |
•int rt_alarm_stop (RT_ALARM ∗alarm)
Alarm |
待释放alarm描述符地址 |
•int rt_alarm_inquire (RT_ALARM ∗alarm,RT_ALARM_INFO ∗info)
Alarm |
请求alarm的描述符地址 |
Info |
待写入alarm信息的结构地址 |
•int rt_alarm_create (RT_ALARM ∗alarm,const char ∗name)
Alarm |
Alarm描述符地址 |
Name |
Alarm变量名 |
•int rt_alarm_wait (RT_ALARM ∗alarm)
Alarm |
等待alarm描述符地址 |
3. Buffer服务
•int rt_buffer_create (RT_BUFFER ∗bf,const char ∗name,size_t bufsz, int mode)
Bf |
存储buffer相关数据描述符地址 |
Name |
Buffer变量名 |
Bufsz |
可用空间大小,该区域在系统堆中 |
Mode |
Buffer创建模式 |
•int rt_buffer_delete (RT_BUFFER ∗bf)
Bf |
待删除buffer描述符地址 |
•ssize_t rt_buffer_write (RT_BUFFER ∗bf, const void ∗ptr, size_t len, RTIMEtimeout)
Bf |
Buffer描述符地址 |
Ptr |
待写入buffer数据的地址 |
Len |
信息数据字节长度 |
Timeout |
等待时间限度 |
• ssize_trt_buffer_write_until (RT_BUFFER ∗bf, const void ∗ptr,size_t len, RTIME timeout)
Bf |
描述符地址 |
Ptr |
待写入buffer数据的地址 |
Len |
信息数据字节长度 |
Timeout |
等待buffer有足够空间的绝对时间限度 |
•ssize_t rt_buffer_read (RT_BUFFER ∗bf, void ∗ptr, size_t len, RTIME timeout)
Bf |
待读buffer描述符地址 |
Ptr |
指向内存区域的指针,该区域可以写入收到的数据 |
Len |
Ptr指向数据的长度 |
Timeout |
等待buffer可用信息的时间限度 |
•int rt_buffer_clear (RT_BUFFER ∗bf)
Bf |
待清空buffer的描述符地址 |
•int rt_buffer_inquire (RT_BUFFER ∗bf,RT_BUFFER_INFO ∗info)
Bf |
请求buffer的描述符地址 |
Info |
Buffer信息将写入的结构地址 |
•int rt_buffer_bind (RT_BUFFER ∗bf,const char ∗name,RTIME timeout)
Bf |
Buffer描述符地址 |
Name |
有效非空待绑定buffer变量名 |
Timeout |
等待注册发生时间限度 |
•static int rt_buffer_unbind (RT_BUFFER ∗bf)
Bf |
解绑buffer的描述符地址 |
4. 条件变量服务
•int rt_cond_create (RT_COND ∗cond,const char ∗name)
Cond |
存储相关数据的条件变量描述符地址 |
Name |
条件变量变量名 |
•int rt_cond_delete (RT_COND ∗cond)
Cond |
待删除变量的描述符地址 |
•int rt_cond_signal (RT_COND ∗cond)
Cond |
变量描述符地址 |
•int rt_cond_broadcast (RT_COND ∗cond)
Cond |
变量描述符地址 |
•int rt_cond_wait (RT_COND ∗cond,RT_MUTEX ∗mutex,RTIME timeout)
Cond |
变量描述符地址 |
Mutex |
互斥变量描述符 |
Timeout |
条件变量被signal的时间限度 |
•int rt_cond_wait_until (RT_COND ∗cond,RT_MUTEX ∗mutex,RTIME timeout)
Cond |
变量描述符地址 |
Mutex |
互斥变量描述符 |
Timeout |
条件变量被signal的绝对时间限度 |
•int rt_cond_inquire (RT_COND ∗cond,RT_COND_INFO ∗info)
Cond |
变量描述符地址 |
Info |
条件变量信息被写入的结构地址 |
•int rt_cond_bind (RT_COND ∗cond,const char ∗name,RTIME timeout)
Cond |
描述符地址 |
Name |
变量名 |
Timeout |
等待绑定的时间限度 |
•static int rt_cond_unbind (RT_COND ∗cond)
Cond |
等待解绑的变量描述符地址 |
5. 事件标志组服务
• int rt_event_create(RT_EVENT ∗event, const char ∗name, unsigned longivalue, int mode)
Event |
创建事件的描述符地址 |
Name |
事件变量名 |
Ivalue |
组事件的初始值 |
Mode |
事件组的创建模式 |
•int rt_event_delete (RT_EVENT ∗event)
Event |
待删除描述符地址 |
•int rt_event_signal (RT_EVENT ∗event,unsigned long mask)
Event |
事件描述符 |
Mask |
事件集合 |
•int rt_event_wait (RT_EVENT ∗event,unsigned long mask, unsigned long ∗mask_r, int mode, RTIME timeout)
Event |
事件组描述符 |
Mask |
等待bit集 |
Mask_r |
任务被读取的时候事件的值 |
Mode |
挂起模式 |
Timeout |
满足请求等待的时间限度 |
•int rt_event_wait_until (RT_EVENT ∗event, unsigned long mask, unsigned long ∗mask_r, int mode, RTIMEtimeout)
Event |
事件组描述符 |
Mask |
等待bit集 |
Mask_r |
任务被读取的时候事件的值 |
Mode |
挂起模式 |
Timeout |
满足请求等待的绝对时间限度 |
•int rt_event_clear (RT_EVENT ∗event,unsigned long mask, unsigned long ∗mask_r)
Event |
时间描述符地址 |
Mask |
待清理事件集 |
Mask_r |
事件组擦除前的内存地址 |
•int rt_event_inquire (RT_EVENT ∗event,RT_EVENT_INFO ∗info)
Event |
请求事件组描述符 |
Info |
待写入事件组信息的结构地址 |
•int rt_event_bind (RT_EVENT ∗event,const char ∗name,RTIME timeout)
Event |
描述符地址 |
Name |
变量名 |
Timeout |
等待绑定的时间限度 |
•static int rt_event_unbind (RT_EVENT ∗event)
Event |
描述符地址 |
6. 内存堆服务
•int rt_heap_create (RT_HEAP ∗heap,const char ∗name,size_t heapsize, int mode)
Heap |
描述符地址 |
Name |
变量名 |
Heapsize |
待分配内存块大小 |
Mode |
Heap的创建模式 |
•int rt_heap_delete (RT_HEAP ∗heap)
Heap |
描述符 |
•int rt_heap_alloc (RT_HEAP ∗heap,size_t size, RTIME timeout, void ∗∗blockp)
Heap |
描述符 |
Size |
请求块大小 |
Timeout |
等待分配请求内存的时间限度 |
Blockp |
指向分配内存地址的指针 |
•int rt_heap_free (RT_HEAP ∗heap,void ∗block)
Heap |
描述符 |
Block |
待释放块地址 |
•int rt_heap_inquire (RT_HEAP ∗heap,RT_HEAP_INFO ∗info)
Heap |
描述符 |
Info |
待写入堆信息的结构地址 |
•int rt_heap_bind (RT_HEAP ∗heap,const char ∗name,RTIME timeout)
Heap |
描述符 |
Name |
变量名 |
Timeout |
等待绑定的时间限度 |
•int rt_heap_unbind (RT_HEAP ∗heap)
Heap |
描述符 |
7. 中断管理服务
• intrt_intr_create (RT_INTR ∗intr,const char ∗name,unsigned irq, rt_isr_t isr, rt_iack_t iack, int mode)
Intr |
描述符 |
Name |
变量名 |
Irq |
硬件中断 |
Isr |
内核空间有效中断服务地址 |
Iack |
可选中断地址(取代默认值) |
Mode |
中断创建模式 |
•int rt_intr_delete (RT_INTR ∗intr)
Intr |
描述符 |
•int rt_intr_enable (RT_INTR ∗intr)
Intr |
描述符 |
•int rt_intr_disable (RT_INTR ∗intr)
Intr |
描述符 |
•int rt_intr_inquire (RT_INTR ∗intr,RT_INTR_INFO ∗info)
Intr |
描述符 |
Info |
待写入中断信息的结构地址 |
•int rt_intr_create (RT_INTR ∗intr,const char ∗name,unsigned irq, int mode)
Intr |
描述符 |
Name |
变量名 |
Irq |
硬件中断 |
Mode |
中断创建模式 |
•int rt_intr_wait (RT_INTR ∗intr,RTIME timeout)
Intr |
描述符 |
Timeout |
等待中断发生的时间限度 |
•int rt_intr_bind (RT_INTR ∗intr,const char ∗name,RTIME timeout)
Intr |
描述符 |
Name |
变量名 |
Timeout |
等待绑定的时间限度 |
•static int rt_intr_unbind (RT_INTR ∗intr)
Intr |
描述符 |
8. 互斥服务
•int rt_mutex_create (RT_MUTEX ∗mutex,const char ∗name)
Mutex |
描述符 |
Name |
变量名 |
•int rt_mutex_delete (RT_MUTEX ∗mutex)
Mutex |
描述符 |
•int rt_mutex_acquire (RT_MUTEX ∗mutex,RTIME timeout)
Mutex |
描述符 |
Timeout |
等待互斥变量可用的时间限度 |
•int rt_mutex_acquire_until (RT_MUTEX ∗mutex, RTIME timeout)
Mutex |
描述符 |
Timeout |
等待互斥变量可用的绝对时间限度 |
•int rt_mutex_release (RT_MUTEX ∗mutex)
Mutex |
描述符 |
•int rt_mutex_inquire (RT_MUTEX ∗mutex,RT_MUTEX_INFO ∗info)
Mutex |
描述符 |
Info |
待写入互斥信息的结构地址 |
•int rt_mutex_bind (RT_MUTEX ∗mutex,const char ∗name,RTIME timeout)
Mutex |
描述符 |
Name |
变量名 |
Timeout |
等待绑定的时间限度 |
•static int rt_mutex_unbind (RT_MUTEX ∗mutex)
Mutex |
描述符 |
9. 信息管道服务
•int rt_pipe_create (RT_PIPE ∗pipe,const char ∗name,int minor, size_t poolsize)
Pipe |
描述符 |
Name |
变量名 |
Minor |
和pipe相关设备数量 |
Poolsize |
Buffer pool内为pipe预留容量 |
•int rt_pipe_delete (RT_PIPE ∗pipe)
Pipe |
描述符 |
•ssize_t rt_pipe_receive (RT_PIPE ∗pipe,RT_PIPE_MSG ∗∗msgp,RTIME timeout)
Pipe |
描述符 |
Msgp |
指向内存的指针,该内存可以写入收到的信息 |
Timeout |
等待信息到达的时间限度 |
•ssize_t rt_pipe_read (RT_PIPE ∗pipe,void ∗buf, size_tsize, RTIME timeout)
Pipe |
描述符 |
Buf |
指向信息目录内存位置的指针 |
Size |
把收到的信息读入buf的字节数量 |
Timeout |
等待信息到达的时间限度 |
•ssize_t rt_pipe_send (RT_PIPE ∗pipe,RT_PIPE_MSG ∗msg,size_t size, int mode)
Pipe |
描述符 |
Msg |
待发送信息的地址 |
Size |
信息的字节大小 |
Mode |
标志位集 |
•ssize_t rt_pipe_write (RT_PIPE ∗pipe,const void ∗buf,size_t size, int mode)
Pipe |
描述符 |
Buf |
Send的数据地址 |
Size |
信息的字节大小 |
Mode |
标志位集 |
•ssize_t rt_pipe_stream (RT_PIPE ∗pipe,const void ∗buf,size_t size)
Pipe |
描述符 |
Buf |
Send数据的地址 |
Size |
Buffer的字节大小 |
•RT_PIPE_MSG ∗rt_pipe_alloc (RT_PIPE ∗pipe,size_t size)
Pipe |
描述符 |
Size |
Buffer请求字节容量 |
•int rt_pipe_free (RT_PIPE ∗pipe,RT_PIPE_MSG ∗msg)
Pipe |
描述符 |
Msg |
待释放信息地址 |
•int rt_pipe_flush (RT_PIPE ∗pipe,int mode)
Pipe |
描述符 |
Mode |
擦除模式 |
•int rt_pipe_monitor (RT_PIPE ∗pipe,int(∗fn)(RT_PIPE∗pipe, intevent, long arg))
Pipe |
描述符 |
Fn |
通知句柄 |
10. 信息队列服务
•int rt_queue_create (RT_QUEUE ∗q,const char ∗name,size_t poolsize, size_t qlimit, int mode)
Q |
描述符 |
Name |
变量名 |
Poolsize |
预分配缓冲池字节大小 |
Qlimit |
限制信息量的最大值 |
Mode |
队列创建模式 |
•int rt_queue_delete (RT_QUEUE ∗q)
Q |
描述符 |
•void ∗rt_queue_alloc (RT_QUEUE ∗q,size_t size)
Q |
描述符 |
Size |
请求buffer字节大小 |
•int rt_queue_free (RT_QUEUE ∗q,void ∗buf)
Q |
描述符 |
Buf |
待释放缓冲区地址 |
•int rt_queue_send (RT_QUEUE ∗q,void ∗mbuf,size_t size, int mode)
Q |
描述符 |
Mbuf |
待发送信息缓冲区地址 |
Size |
信息字节大小 |
Mode |
标志集 |
•int rt_queue_write (RT_QUEUE ∗q,const void ∗buf,size_t size, int mode)
Q |
描述符 |
Buf |
待写入队列信息数据地址 |
Size |
信息数据字节大小 |
Mode |
标志集 |
•ssize_t rt_queue_receive (RT_QUEUE ∗q, void ∗∗bufp,RTIME timeout)
Q |
描述符 |
Bufp |
指向待收信息数据地址的指针 |
Timeout |
等待信息到达的时间限度 |
•ssize_t rt_queue_receive_until (RT_QUEUE ∗q, void ∗∗bufp, RTIME timeout)
Q |
描述符 |
Bufp |
指向待收信息数据地址的指针 |
Timeout |
等待信息到达的绝对时间限度 |
•ssize_t rt_queue_read (RT_QUEUE ∗q,void ∗buf, size_tsize, RTIME timeout)
Q |
描述符 |
Buf |
指向一片可写内存区的指针 |
Size |
Buf指向的内存大小 |
Timeout |
等待信息到达的时间限度 |
•ssize_t rt_queue_read_until (RT_QUEUE ∗q, void ∗buf,size_t size, RTIME timeout)
Q |
描述符 |
Buf |
指向一片可写内存区的指针 |
Size |
Buf指向的内存大小 |
Timeout |
等待信息到达的绝对时间限度 |
•int rt_queue_flush (RT_QUEUE ∗q)
Q |
描述符 |
•int rt_queue_inquire (RT_QUEUE ∗q,RT_QUEUE_INFO ∗info)
Q |
描述符 |
Info |
待写入队列信息的结构地址 |
•int rt_queue_bind (RT_QUEUE ∗q,const char ∗name,RTIME timeout)
Q |
描述符 |
Name |
变量名 |
Timeout |
等待注册发生的时间限度 |
•int rt_queue_unbind (RT_QUEUE ∗q)
Q |
描述符 |
11. 信号量服务
•int rt_sem_create (RT_SEM ∗sem,const char ∗name,unsigned long icount, int mode)
Sem |
描述符 |
Name |
变量名 |
Icount |
信号量初始值 |
Mode |
信号量创建模式 |
•int rt_sem_delete (RT_SEM ∗sem)
Sem |
描述符 |
•int rt_sem_p (RT_SEM ∗sem,RTIME timeout)
Sem |
描述符 |
Timeout |
等待信号量有效的时间限度 |
•int rt_sem_p_until (RT_SEM ∗sem,RTIME timeout)
Sem |
描述符 |
Timeout |
等待信号量有效的时间限度 |
•int rt_sem_v (RT_SEM ∗sem)
Sem |
描述符 |
•int rt_sem_broadcast (RT_SEM ∗sem)
Sem |
描述符 |
•int rt_sem_inquire (RT_SEM ∗sem,RT_SEM_INFO ∗info)
Sem |
描述符 |
Info |
待写入信号量信息的结构地址 |
•int rt_sem_bind (RT_SEM ∗sem,const char ∗name,RTIME timeout)
Sem |
描述符 |
Name |
变量名 |
Timeout |
等待事件发生的时间限度 |
•static int rt_sem_unbind (RT_SEM ∗sem)
Sem |
描述符 |
12. 任务管理服务
•int rt_task_create (RT_TASK ∗task,const char ∗name,int stksize, int prio, int mode)
Task |
描述符 |
Name |
变量名 |
Stksize |
新任务栈大小 |
Prio |
新任务的优先级 |
Mode |
任务创建模式 |
•int rt_task_start (RT_TASK ∗task,void(∗entry)(void∗cookie),void ∗cookie)
Task |
描述符 |
Entry |
任务入口点 |
Cookie |
作为入口点参数 |
•int rt_task_suspend (RT_TASK ∗task)
Task |
描述符 |
•int rt_task_resume (RT_TASK ∗task)
Task |
描述符 |
•int rt_task_delete (RT_TASK ∗task)
Task |
描述符 |
•int rt_task_yield (void)
把当前任务移到该优先级的末尾 |
•int rt_task_set_periodic (RT_TASK ∗task, RTIME idate, RTIME period)
Task |
描述符 |
Idate |
第一次释放点的初始值 |
Period |
任务周期 |
•int rt_task_wait_period (unsigned long ∗overruns_r)
Overruns_r |
指向overrun挂起内存地址的指针 |
•int rt_task_set_priority (RT_TASK ∗task, int prio)
Task |
描述符 |
Prio |
新任务的优先级 |
•int rt_task_sleep (RTIME delay)
Delay |
等待resume任务的时间 |
•int rt_task_sleep_until (RTIME date)
Date |
等待resume任务的绝对时间 |
•int rt_task_unblock (RT_TASK ∗task)
Task |
描述符 |
•int rt_task_inquire (RT_TASK ∗task,RT_TASK_INFO ∗info)
Task |
描述符 |
Info |
待写入任务信息的结构地址 |
•int rt_task_add_hook (int type, void(∗routine)(void ∗cookie))
Type |
定义待安装hook类型 |
Routine |
用户提供调用地址 |
•int rt_task_remove_hook (int type, void(∗routine)(void ∗cookie))
Type |
定义卸载hook的类型 |
Routine |
用户提供卸载hook的地址 |
•int rt_task_catch (void(∗handler)(rt_sigset_t))
Handler |
用户提供安装signal handler的地址 |
•int rt_task_notify (RT_TASK ∗task,rt_sigset_t signals)
Task |
描述符 |
Signals |
挂起任务的signals集 |
•int rt_task_set_mode (int clrmask, int setmask, int ∗mode_r)
Clrmask |
清理当前任务的模式位 |
Setmask |
为当前任务设置模式位 |
Mode_r |
指向之前模式位集的指针 |
•RT_TASK ∗rt_task_self (void)
取回当前任务 |
•int rt_task_slice (RT_TASK ∗task,RTIME quantum)
Task |
描述符 |
Quantum |
轮询调度的时间片长度 |
•ssize_t rt_task_send (RT_TASK ∗task,RT_TASK_MCB ∗mcb_s,RT_TASK_MCB ∗mcb_r,RTIME timeout)
Task |
描述符 |
Mcb_s |
信息控制块引用被发送信息的地址 |
Mcb_r |
可选信息控制块引用回应信息区的地址 |
Timeout |
等待远程任务回应初始信息的时间限度 |
•int rt_task_receive (RT_TASK_MCB ∗mcb_r,RTIME timeout)
Mcb_r |
信息控制块引用收到信息区的地址 |
Timeout |
等待收到信息的时间 |
•int rt_task_reply (int flowid, RT_TASK_MCB ∗mcb_s)
Flowid |
识别当前的事物 |
Mcb_s |
可选信息控制块引用送回信息的地址 |
•static int rt_task_spawn (RT_TASK ∗task, const char ∗name, int stksize, int prio,int mode, void(∗entry)(void∗cookie),void ∗cookie)
Task |
描述符 |
Name |
变量名 |
Stksize |
新任务栈大小 |
Prio |
新任务优先级 |
Mode |
任务创建模式 |
Entry |
任务入口点 |
Cookie |
入口点参数 |
•int rt_task_shadow (RT_TASK ∗task,const char ∗name,int prio, int mode)
Task |
描述符 |
Name |
变量名 |
Prio |
为当前任务设置的优先级 |
Mode |
任务创建模式 |
把当前Linux任务转换成xenomai任务
•int rt_task_bind (RT_TASK ∗task,const char ∗name,RTIME timeout)
Task |
描述符 |
Name |
变量名 |
Timeout |
等待事件发生的时间限制 |
•static int rt_task_unbind (RT_TASK ∗task)
Task |
描述符 |
•int rt_task_join (RT_TASK ∗task)
Task |
描述符 |
•int rt_task_same (RT_TASK ∗task1,RT_TASK ∗task2)
13. 时序管理服务
•SRTIME rt_timer_ns2tsc (SRTIME ns)
Ns |
转换的纳秒数 |
•SRTIME rt_timer_tsc2ns (SRTIME ticks)
Ticks |
待转换的CPU时间片数量 |
•RTIME rt_timer_tsc (void)
返回当前tsc时间 |
•RTIME rt_timer_read (void)
返回当前系统时间 |
•SRTIME rt_timer_ns2ticks (SRTIME ns)
Ns |
转换的纳秒数 |
•SRTIME rt_timer_ticks2ns (SRTIME ticks)
Ticks |
待转换的交互时间片数量 |
•int rt_timer_inquire (RT_TIMER_INFO ∗info)
Info |
待写入时序信息的结构地址 |
•void rt_timer_spin (RTIME ns)
Ns |
等待CPU的纳秒级时间 |
•int rt_timer_set_mode (RTIME nstick)
Nstick |
时间基的纳秒时序 |