Xenomai native API

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

时间基的纳秒时序

 

你可能感兴趣的:(Xenomai native API)