《rawosAPI使用手册.doc》由会员分享,可在线阅读,更多相关《rawosAPI使用手册.doc(21页珍藏版)》请在三一办公上搜索。
1、文档作者:常鹏飞函数 raw_enter_interrupt() 在raw_system.c文件中参数 无功能 此函数在进入中断一开始的时候调用说明 调用此函数的时候必须处于关中断关状(响应中断的,最开始进入中断时硬件保证是关中断状态)因为其函数体中没有 RAW_SR_ALLOC(); RAW_CRITICAL_ENTER(); RAW_CRITICAL_EXIT();函数 raw_finish_int() 在raw_system.c文件中参数 无功能 当中断退出的时候调用说明 在抢占模式下,在最外层中断退出时可能引发任务切换函数 raw_time_tick() 在raw_system.c文件
2、中参数 无功能 在时钟中断处理函数中调用说明 在时钟中断处理函数中调用函数 raw_system_time_get() 在raw_system.c文件中参数 无功能 返回系统的已经运行时钟数说明 系统运行时钟数在达到0xffffffff后会翻头到0函数 RAW_U32 raw_system_time_set(RAW_U32 time) 在raw_system.c文件中参数 RAW_U32 time功能 设置系统运行时钟数说明 函数 RAW_U16 raw_os_init() 在raw_sched.c文件中参数 无功能 raw_os初始化时调用,成功返回RAW_SUCCESS说明函数 RAW_U
3、16 raw_os_start() 在raw_sched.c文件中参数 无功能 raw_os正式启动运行说明 理论上讲这个函数永远不会返回,若返回说明出错,返回RAW_SYSTEM_ERROR函数 raw_task_create 在raw_task.c文件中参数 RAW_TASK_OBJ *task_obj 指向要创建任务的RAW_TASK_OBJ的指针 RAW_U8 *task_name 任务的名字 RAW_VOID *task_arg 传给任务的参数 RAW_U8 task_prio 任务的优先级,数越小优先级越大 RAW_U16 time_slice 分配给任务的时间片,用于时间片调度,
4、指定意味用默认值 PORT_STACK *task_stack_base 堆栈的起始地址 RAW_U32 stack_size 堆栈的大小 RAW_TASK_ENTRY task_entry 任务的入口 RAW_U8 auto_start 标记是否立即运行?RAW_AUTO_START1 (task_state会置为RAW_RDY状态,将该任务加入就绪队列,最后进行调度检查) RAW_DONT_START0 (task_state会置为RAW_SUSPENDED状态)功能 创建一个任务,如果创建这个任务有更高的优先级,那么它会立即得到运行返回值 RAW_IDLE_EXIT 空闲任务的优先级独占
5、,不允许其它任务再使用这个优先级 RAW_OS_STOPPED raw_os还没有开始运行 RAW_SUCCESS 成功创建任务RAW_NULL_OBJECT RAW_TASK_OBJ类型指针为空RAW_BYOND_MAX_PRIORITY 优先级溢出RAW_NULL_POINTER 空指针(task_stack_base、task_entry为空时)函数 raw_task_stack_check 在raw_task.c中参数 RAW_TASK_OBJ *task_obj 指向要检查堆栈任务的RAW_TASK_OBJ的指针 RAW_U32 *free_stack 指向的变量用于保存剩余堆栈元素
6、数(注,不是字节数)功能 检测指定任务剩余堆栈元素数说明 此函数需在RAW_SYSTEM_CHECK宏开关打开情况下,才能使用返回值 RAW_NULL_OBJECT 当task_obj为空指针时 RAW_NULL_POINTER 当free_stack为空指针时 RAW_SUCCESS 调用成功返回函数 raw_disable_sche 在raw_task.c文件中参数 无功能 禁止调度器调度说明 此函数不能在中断处理函数中调用(为什么?) 我认为是因为raw_disable_sche和raw_enable_sche设计的本意是在任务态下配对使用达到临界区(大范围/粒度性的原子性操作)的目的,
7、防止其之间的执行被其它任务打断。所以可以在中断处理函数中调用,只是没有逻辑意义。返回值 RAW_NOT_CALLED_BY_ISR 在中断处理函数中调用(不应在ISR中调用) RAW_SCHED_OVERFLOW raw_disable_sche调用次数溢出 RAW_SUCCESS 调用成功返回函数 raw_enable_sche 在raw_task.c文件中参数 无功能 开启调度器调度说明 此函数不能在中断处理函数中调用(原因同raw_disable_sche)返回值 RAW_NOT_CALLED_BY_ISR 在中断处理函数中调用(不应在ISR中调用) RAW_SCHED_INVALID
8、raw_enable_sche和raw_disable_sche没有严格配对使用 RAW_SCHED_LOCKED 调度器仍处于上锁状态 RAW_SUCCESS 调用成功返回函数 raw_sleep 在raw_task.c文件中参数 RAW_U32 dly 睡眠的时钟数(非0) 将当前任务放在同等优先级就绪队列最后(0)功能 让调用此函数的任务睡眠指定时间说明返回值 RAW_NOT_CALLED_BY_ISR 在中断处理函数中调用(不应在ISR中调用) RAW_SUCCESS 成功调用返回函数 raw_task_suspend 在raw_task.c文件中参数 RAW_TASK_OBJ *ta
9、sk_ptr 指向要暂停挂起的任务的RAW_TASK_OBJ功能 挂起暂停指定的任务说明 不能挂起IDLE空闲任务返回值 RAW_NULL_OBJECT 当task_ptr为空指针时 RAW_SUSPEND_TASK_NOT_ALLOWED 试图挂起暂停IDLE空闲任务(不能挂起IDLE空闲任务) RAW_SCHED_LOCKED 调度器处于上锁状态 RAW_SUSPENDED_AGAIN 重复让指定任务暂停挂起 RAW_STATE_UNKNOWN 未知状态 RAW_SUCCESS 成功调用返回函数 raw_task_resume 在raw_task.c文件中参数 RAW_TASK_OBJ *
10、task_ptr 指向要唤醒的任务的RAW_TASK_OBJ功能 唤醒被raw_task_suspend暂停挂起的任务(应只唤醒被raw_task_suspend暂停挂起的任务)说明 返回值 RAW_NULL_OBJECT 当task_ptr为空指针时 HAS_NOT_SUSPEND 指定任务没有处于suspend状态 RAW_STATE_UNKNOWN 未知状态 RAW_SUCCESS 成功调用返回函数 raw_task_priority_change 在raw_task.c文件中参数 RAW_TASK_OBJ *task_ptr 指向要改变优先级任务的RAW_TASK_OBJ RAW_U8
11、 new_priority 指定的新优先级 RAW_U8 *old_priority 指定的变量用于保存老优先级功能 动态改变指定任务的优先级说明 返回值 RAW_NULL_OBJECT task_prt或old_priority为空指针时 RAW_CHANGE_PRIORITY_NOT_ALLOWED 原来任务的优先级越界或新指定为空闲任务的优先级 RAW_SUCCESS 成功调用返回函数 raw_task_delete 在raw_task.c文件中参数 RAW_TASK_OBJ *task_ptr 指向要删除任务的RAW_TASK_OBJ功能 删除指定任务并引发任务切换说明 不能删除占有互
12、斥量或信号量的任务?不能在ISR中调用该函数(逻辑不符?)返回值 RAW_NULL_OBJECT task_ptr指针为空 RAW_NOT_CALLED_BY_ISR 不能在ISR中调用 RAW_DELETE_TASK_NOT_ALLOWED 不允许删除空闲任务 RAW_SCHED_LOCKED 调度器处于上锁状态 RAW_STATE_UNKNOWN 任务处于未知状态 RAW_SUCCESS 成功调用返回函数 raw_set_task_user_point 在raw_task.c文件中参数 RAW_TASK_OBJ *task_ptr, 指向要设置用户数据区任务的RAW_TASK_OBJRAW
13、_VOID *user_point 指向用户数据区功能 设置用户数据区说明返回值 函数 raw_get_task_user_point 在raw_task.c文件中参数 RAW_TASK_OBJ *task_ptr, 指向要返回用户数据区任务的RAW_TASK_OBJ功能 返回用户数据区说明 返回值 指向用户数据区的指针函数 raw_task_time_slice_change 在raw_task.c文件中参数 RAW_TASK_OBJ *task_ptr, 指向要改变时间片任务的RAW_TASK_OBJRAW_U16 new_time_slice 新的时间片(为0,则用TIME_SLICE_
14、DEFAULT设置)功能 改变指定任务的时间片说明 返回值 RAW_NULL_OBJECT task_ptr指针为空指针 RAW_SUCCESS 成功调用返回函数 raw_set_sched_way 在raw_task.c文件中参数 RAW_TASK_OBJ *task_ptr, 指向要改变调度方式任务的RAW_TASK_OBJ RAW_U8 policy 调度方式 SCHED_FIFO SCHED_RR功能 改变指定任务的调度方式说明 返回值 RAW_NULL_OBJECT task_ptr为空指针 RAW_INVALID_SCHED_WAY 无效调用方式,目前只能为(SCHED_FIFO或
15、SCHED_RR) RAW_SUCCESS 成功调用返回函数 raw_get_sched_way 在raw_task.c文件中参数 RAW_TASK_OBJ *task_ptr, 指向要获取调度方式任务的RAW_TASK_OBJ RAW_U8 *policy_ptr 指向的变量用来保存调度方式功能 获取指定任务的调度方式说明返回值 RAW_NULL_OBJECT task_ptr或policy_ptr为空指针 RAW_SUCCESS 成功调用返回函数 raw_task_wait_abort 在raw_task.c文件中参数 RAW_TASK_OBJ *task_ptr 指向要中止任务的RAW_
16、TASK_OBJ功能 中止指定任务等待睡眠挂起状态,进入就绪状态说明 只能中止处于DLY或SUSPEND或PEND状态的任务?返回值 RAW_NULL_OBJECT task_ptr为空指针 RAW_STATE_UNKNOWN 任务处于未知状态 RAW_SUCCESS 调用成功返回函数 raw_task_identify 在raw_task.c文件中参数 无功能 获取当前运行的任务说明 返回值 返回当前运行的任务函数 raw_iter_block_task 在raw_task.c文件中参数 LIST *object_head, 等待任务队列的头结点RAW_VOID (*debug_functi
17、on)(RAW_TASK_OBJ *), 对每个任务的debug函数RAW_U8 opt 0唤醒每个等待任务,0则什么也不做功能 对处于等待semphore,event,mutex,queue,block,byte memory上任务进行调试说明 返回值 无函数 raw_get_system_global_space 在raw_task.c文件中参数 无功能 获取raw_os (系统全局变量)数据段+bss段空间大小说明 主要是计算raw_os系统内部全局变量所占空间大小返回值 raw_os数据段+bss段空间大小函数 raw_mutex_create 在raw_mutex.c文件中参数 RA
18、W_MUTEX *mutex_ptr, 指向要创建的互斥量RAW_MUTEXRAW_U8 *name_ptr, 互斥量的名字RAW_U8 policy, RAW_U8 ceiling_prio功能 创建一个互斥量(感觉用初始化更为恰当)说明返回值 RAW_NULL_OBJECT mutex_ptr为空指针时 RAW_MUTEX_NO_POLICY policy不合法,其只能为 RAW_MUTEX_CEILING_POLICY(优先级天花板模式) RAW_MUTEX_INHERIT_POLICY(优先级继承模式) RAW_MUTEX_NONE_POLICY 三者之一 RAW_SUCCESS 成功
19、调用返回函数 raw_mutex_get 在raw_mutex.c文件中参数 RAW_MUTEX *mutex_ptr, 指向要获取的互斥量 RAW_U32 wait_option 获取方式选项(或超时值) RAW_NO_WAIT 0x00000000 不等待 RAW_WAIT_FOREVER 0xFFFFFFFF 永久等待 闭区间0x00000001,0xFFFFFFFE 为超时值功能 尝试获取指定互斥量说明返回值 RAW_NULL_OBJECT mutex_ptr为空指针时 RAW_NOT_CALLED_BY_ISR 在ISR中调用(此函数不允许在ISR中调用) RAW_ERROR_OBJ
20、ECT_TYPE mutex_ptr指向的不是MUTEX互斥量类型 RAW_NO_PEND_WAIT 没有成功获取MUTEX互斥量,无等待返回 RAW_SCHED_DISABLE 调度器处于上锁状态 RAW_SUCCESS 成功调用返回函数 raw_mutex_put 在raw_mutex.c文件中参数 RAW_MUTEX *mutex_ptr 指向要释放的MUTEX互斥量功能 释放指定的MUTEX互斥量说明 返回值 RAW_NULL_OBJECT mutex_ptr为空指针 RAW_ERROR_OBJECT_TYPE 类型错误,mutex_ptr指向的对象不是RAW_MUTEX_OBJ_TY
21、PE类型 RAW_MUTEX_NOT_RELEASE_BY_OCCYPY 不是由占用该MUTEX互斥量的任务进行释放 RAW_SUCCESS 成功调用返回函数 raw_mutex_delete 在raw_mutex.c文件中参数 RAW_MUTEX *mtxcb 指向要删除的MUTEX互斥量功能 删除指定的MUTEX互斥量说明返回值 RAW_NULL_OBJECT mtxcb为空指针 RAW_ERROR_OBJECT_TYPE mtxcb指向的对象不是MUTEX互斥量类型函数 raw_semaphore_create 在raw_sem.c文件中参数 RAW_SEMAPHORE *semapho
22、re_ptr, 指向要创建初始化指定的SEM信号量RAW_U8 *name_ptr, SEM信号量的名字RAW_U32 initial_count SEM信号量可用资源数,取值范围0, 0xFFFFFFFE功能 创建初始化指定的SEM信号量说明 返回值 RAW_NULL_OBJECT semaphore_ptr为空指针 RAW_SEMAPHORE_OVERFLOW 当SEM信号量资源数量初始化值initial_value为0xFFFFFFFF时,溢出 RAW_SUCCESS 成功调用返回函数 raw_semaphore_put 在raw_sem.c文件中参数 RAW_SEMAPHORE *se
23、maphore_ptr 指向要释放的SEM信号量功能 释放指定的SEM信号量,并唤醒优先级最高的等待任务说明返回值 RAW_NULL_OBJECT semaphore_ptr为空指针 RAW_ERROR_OBJECT_TYPE semaphore_ptr指向的对象不是SEM信号量类型 RAW_SEMAPHORE_OVERFLOW SEM信号量的值已经是0xFFFFFFFF,溢出 RAW_SUCCESS 成功调用返回函数 raw_semaphore_put_all 在raw_sem.c文件中参数 RAW_SEMAPHORE *semaphore_ptr 指向要释放的SEM信号量功能 释放指定的S
24、EM信号量,并唤醒所有的等待任务说明返回值 RAW_NULL_OBJECT semaphore_ptr为空指针 RAW_ERROR_OBJECT_TYPE semaphore_ptr指向的对象不是SEM信号量类型 RAW_SEMAPHORE_OVERFLOW SEM信号量的值已经是0xFFFFFFFF,溢出 RAW_SUCCESS 成功调用返回函数 raw_semaphore_get 在raw_sem.c文件中参数 RAW_SEMAPHORE *semaphore_ptr 指向尝试要获取的SEM信号量RAW_U32 wait_option RAW_NO_WAIT 0x00000000 不能获取
25、时,立即返回 RAW_WAIT_FOREVER 0xFFFFFFFF 不能获取时,永久等待 1,0xFFFFFFFE 不能获取时,超时等待时间功能 尝试获取指定SEM信号量说明返回值 RAW_NULL_OBJECT semaphore_ptr为空指针时 RAW_NOT_CALLED_BY_ISR 此函数不应在ISR中调用(作为一个通用原则,凡是会引起睡眠等待(任务切换的)不应该在ISR中调用) RAW_ERROR_OBJECT_TYPE semaphore_ptr指向的对象不是SEM互斥量类型 RAW_SUCCESS 成功调用返回函数 raw_semaphore_delete 在raw_sem
26、.c文件中参数 RAW_SEMAPHORE *semaphore_ptr 指向要删除的SEM信号量功能 删除指定的SEM信号量说明 返回值 RAW_NULL_OBJECT semaphore_ptr为空指针 RAW_ERROR_OBJECT_TYPE semaphore_ptr指向的对象不是SEM信号量类型 RAW_SUCCESS 成功调用返回函数 raw_event_create 在raw_event.c文件中参数 RAW_EVENT *event_ptr, 指向要创建初始化的EVENT事件标志组RAW_U8 *name_ptr, EVENT事件标志组名字RAW_U32 flags_init
27、 EVENT事件标志组的初始值功能 创建初始化指定的EVENT事件标志组说明 返回值 RAW_NULL_OBJECT event_ptr为空指针时 RAW_SUCCESS 成功调用返回函数 raw_event_get 在raw_event.c文件中参数 RAW_EVENT *event_ptr, 指向尝试获取的EVENT事件标志组RAW_U32 requested_flags, EVENT事件标志组中要检查的标志RAW_U8 get_option, RAW_AND 所有标志全部满足 RAW_AND_CLEAR 所有标志全部满足且清除 RAW_OR 所有标志满足之一即可 RAW_OR_CLEAR
28、 所有标志满足之一即可且清除RAW_U32 wait_option RAW_NO_WAIT 0x00000000 若不能获取,立即返回 RAW_WAIT_FOREVER 0xFFFFFFFF 若不能获取,永久等待 0x00000001,0xFFFFFFFE 若不能获取,超时等待时间功能 尝试获取指定的EVENT事件标志组说明 返回值 RAW_NULL_OBJECT event_ptr为空指针 RAW_NOT_CALLED_BY_ISR 此函数不能在ISR中调用 RAW_NO_THIS_OPTION get_option不是下列值之一 RAW_AND RAW_OR RAW_AND_CLEAR R
29、AW_OR_CLEAR RAW_ERROR_OBJECT_TYPE event_ptr指向的对象不是EVENT事件组类型 RAW_NO_PEND_WAIT 不能正确获取,立即返回 RAW_SCHED_DISABLE 调度器处于上锁状态 RAW_SUCCESS 成功调用返回函数 raw_event_set 在raw_event.c文件中参数 RAW_EVENT *event_ptr, 指向要设置的EVENT事件标志组RAW_U32 flags_to_set, 标记要操作的位RAW_U8 set_option RAW_AND 清除指定位 RAW_OR 设置指定位功能 对指定的EVENT事件标志组进
30、行设置清除操作说明 返回值 RAW_NULL_OBJECT event_ptr为空指针 RAW_NO_THIS_OPTION set_option只能为RAW_AND或RAW_OR之一 RAW_EVENT_OBJ_TYPE event_ptr指向的对象不是EVENT事件标志组类型 RAW_SUCCESS 成功调用返回函数 raw_event_delete 在raw_event.c文件中参数 RAW_EVENT *event_ptr 指向要删除的RAW_EVENT事件标志组功能 删除指定的RAW_EVENT事件标志组说明 返回值 RAW_NULL_OBJECT event_ptr指向空指针 RA
31、W_ERROR_OBJECT_TYPE event_ptr指向的对象不是EVENT事件标志组类型 RAW_SUCCESS 成功调用返回函数 raw_queue_create 在raw_queue.c文件中参数 RAW_QUEUE *p_q, 指向要创建初始化的QUEUE消息队列数RAW_U8 *p_name, QUEUE消息队列数的名字RAW_VOID *msg_start, QUEUE消息队列数的起始地址RAW_U32 number QUEUE消息队列中的消息数功能 创建初始化指定的QUEUE的消息队列说明 返回值 RAW_NULL_OBJECT p_q为空指针 RAW_NULL_POINT
32、ER msg_start为空指针 RAW_ZERO_NUMBER number为0 RAW_SUCCESS 成功调用返回函数 raw_queue_front_post 在raw_queue.c文件中参数 RAW_QUEUE *p_q, 指向要添加消息的QUEUE消息队列RAW_VOID *p_void 指向要添加的消息功能 向指定的QUEUE消息队列头添加消息,(如果有等待的任务)唤醒优先级最高的等待任务说明返回值 RAW_NULL_OBJECT p_q为空指针 RAW_NULL_POINTER p_void为空指针 RAW_ERROR_OBJECT_TYPE p_q指向的对象不是QUEUE消
33、息队列类型 RAW_SUCCESS 成功调用返回 RAW_MSG_MAX QUEUE消息队列已满函数 raw_queue_end_post 在raw_queue.c文件中参数 RAW_QUEUE *p_q, 指向要添加消息的QUEUE消息队列RAW_VOID *p_void 指向要添加的消息功能 向指定的QUEUE消息队列尾添加消息,(如果有等待的任务)唤醒优先级最高的等待任务说明返回值 RAW_NULL_OBJECT p_q为空指针 RAW_NULL_POINTER p_void为空指针 RAW_ERROR_OBJECT_TYPE p_q指向的对象不是QUEUE消息队列类型 RAW_SUCC
34、ESS 成功调用返回 RAW_MSG_MAX QUEUE消息队列已满函数 raw_queue_all_post 在raw_queue.c文件中参数 RAW_QUEUE *p_q, 指向要添加消息的QUEUE消息队列RAW_VOID *p_void 指向要添加的消息RAW_U8 opt SEND_TO_END 尾部添加FIFO SEND_TO_FRONT 头添加LIFO功能 向指定的QUEUE消息队列添加消息(LIFO头添加或FIFO尾添加),(如果有等待的任务)唤醒所有的等待任务说明返回值 RAW_NULL_OBJECT p_q为空指针 RAW_NULL_POINTER p_void为空指针
35、RAW_ERROR_OBJECT_TYPE p_q指向的对象不是QUEUE消息队列类型 RAW_SUCCESS 成功调用返回 RAW_MSG_MAX QUEUE消息队列已满函数 raw_queue_receive 在raw_queue.c文件中参数 RAW_QUEUE *p_q, 指向要从中获取消息的QUEUE消息队列RAW_U32 wait_option, RAW_NO_WAIT 0x00000000 不能正确获取时,立即返回 RAW_WAIT_FOREVER 0xFFFFFFFF 不能正确获取时,永久等待 0x00000001,0xFFFFFFFE 不能正确获取时,超时等待时间RAW_VO
36、ID *msg 指向的变量用于保存消息的起始地址功能 从指定的QUEUE消息队列中获取一则消息说明 当没有正确获取消息时,msg指向的变量保存的NULL空指针返回值 RAW_NOT_CALLED_BY_ISR 该函数不能在ISR中调用 RAW_NULL_OBJECT p_q为空指针 RAW_NULL_POINTER msg为空指针 RAW_ERROR_OBJECT_TYPE p_q指向的对象不是RAW_QUEUE_OBJ_TYPE类型 RAW_NO_PEND_WAIT 没有正确获取消息,不等待,立即返回 RAW_SCHED_DISABLE 调度器处于上锁状态 RAW_SUCCESS 成功调用返
37、回函数 raw_queue_flush 在raw_queue.c文件中参数 RAW_QUEUE *p_q 指向要清除所有消息的QUEUE消息队列功能 清除指定的QUEUE消息队列中的所有消息(复位处理,复位成初始化状态)说明 注意,唯独没有对peak_numbers字段进行复位处理返回值 RAW_NULL_OBJECT p_q为空指针 RAW_ERROR_OBJECT_TYPE p_q指向的对象不是RAW_QUEUE消息队列类型 RAW_SUCCESS 成功调用返回函数 raw_queue_delete 在raw_queue.c文件中参数 RAW_QUEUE *p_q 指向要删除的QUEUE消
38、息队列功能 删除指定的QUEUE消息队列说明 返回值 RAW_NULL_OBJECT p_q为空指针 RAW_ERROR_OBJECT_TYPE p_q指向的对象不是QUEUE消息队列类型 RAW_SUCCESS 成功调用返回函数 raw_queue_get_information 在raw_queue.c文件中参数 RAW_QUEUE *p_q, 指向要获取信息的QUEUE消息队列 RAW_MSG_INFO *msg_information 用于保存获取的QUEUE消息队列的信息功能 获取指定的QUEUE消息说明返回值 RAW_NULL_OBJECT p_q为空指针 RAW_NULL_POI
39、NTER msg_information为空指针 RAW_ERROR_OBJECT_TYPE p_q指向的对象不是QUEUE消息队列类型 RAW_SUCCESS 成功调用返回函数 raw_mq_init 在raw_mqueue.c文件中参数 RAW_MQUEUE *mqueue, 指向要创建初始化的MQUEUE动态消息队列RAW_U8 *name_ptr, MQUEUE动态消息队列的名字USER_MALLOC malloc_fun, 内存分配函数USER_FREE free_fun, 内存释放函数RAW_VOID *msg_start, MQUEUE消息队列的起始地址RAW_U32 msg_size MQUEUE动态消息队列能容纳的最大消息数功能 创建初始化指定的MQUEUE动态消息队列说明返回值 RAW_SUCCESS 成功调用返回函数 raw_mq_send 在raw_mqueue.c文件中参数 RAW_MQUEUE *mqueue, 向mqueu