中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > 综合其它
VxWorks操作系统指南(附) 常用系统调用
作者:未知 时间:2005-07-27 23:10 出处:CSDN 责编:chinaitpower
              摘要:VxWorks操作系统指南(附) 常用系统调用

附:常用系统调用

1.taskSpawn       创建(产生并激活)新任务

  int    taskSpawn

   (

    char   *name, /*新任务名称*/

    int priority,  /*任务的优先级*/

    int options,   /*任务可选项*/

    int stackSize, /*任务堆栈大小*/

    FUNCPTR    entryPt,   /*任务入口函数*/

    int arg1,      /*任务入口函数所带参数1~10*/

    int arg2,  int arg3,            

    int arg4,  int arg5,

    int arg6,  int arg7,

    int arg8,  int arg9,

    int arg10

   )

  函数运行成功返回任务ID号,否则为ERROR

任务可选项的几种模式如下表:

   

                

                                           

VX_FP_TASK

VX_NO_STACK_FILL

VX_PRIVATE_ENV

VX_UNBREAKABLE

VX_SUPERVISOR_MODE

0x8

0x100

0x80

0x2

运行带浮点的协处理器

不使用0xee填充堆栈

用私有环境运行任务

断点失效

用户任务常用值

 

 

2.taskDelete  删除一个任务

 STATUS    taskDelete

 (

  int    tid   /*删除任务的ID*/

 )

  删除指定ID号的任务,并释放任务所占有的内存

3.taskDelay     延迟任务

 STATUS    taskDelay

 (

  int    ticks /*延迟的时间滴答数*/

 )

    任务延迟为某一任务休眠一定时间提供了简单的处理方法,一般用于任务的周期性循环执行。当输入参数为NO_WAIT(其值为零)时,表示将所延迟的任务切换到同一优先级就绪队列的尾部。

4.taskSuspend 任务悬置

  STATUS   taskSuspend

    (

    int tid /*被悬置的任务ID*/

     )

5.taskResume  恢复任务

  STATUS   taskResume

    (

    int tid /*恢复的任务ID*/

     )

6.msgQCreate  创建并初始化消息队列

  #include <msgQLib.h>  

  MSG_Q_ID msgQCreate

   (

    int maxMsgs,      /*队列所能容纳的最大消息数目*/

    int maxMsgLength, /*每一消息的最大长度*/

    int options       /*消息入列方式*/

   )      

消息入列方式有两种:MSG_Q_FIFO 先进先出,按时间先后顺序考虑;MSG_Q_PRIORITY 按消息优先级考虑。

7.msgQSend    向一消息队列发送消息包

   STATUS  msgQSend

    (

    MSG_Q_ID   msgQId,    /*所发向的消息队列名*/

    char   *   buffer,    /*消息包所在缓冲区指针*/

    UINT       nBytes,    /*消息包长度*/

    int    timeout,   /*等待的时间长度*/

    int    priority   /*优先级*/

   )  

    该函数将长度为nBytes的缓冲区buffer消息包发向消息队列msgQId. 如果任务正在等待接收该消息队列的消息包,消息将立即被送到第一个等待的任务。如果没有任务等待此消息,消息包被保留在消息队列中。

    参数timeout指明:当消息队列已满时,等待消息队列有空间时所等待的时间。超过该时间还没空间可用的话,消息包被舍弃。它有两个特殊值:NO_WAIT0)立即返回,不管消息包是否被发送;WAIT_FOREVER-1)一直等待消息队列有空间可用。

    参数priority指明发送的消息的优先级,可能值有:MSG_PRI_NORMAL(0)正常优先级,将消息置于消息队列的尾部;MSG_PRI_URGENT(1)紧急消息,将消息置于消息队列的首部。

8.msgQReceive 接收消息

  int msgQReceive

   (

    MSG_Q_ID   msgQId,    /*接收消息的消息队列ID*/

    char   *   buffer,    /*接收消息的缓冲区指针*/

    UINT       maxNBytes, /*缓冲区长度*/

    int    timeout    /*等待时间*/

   )

   该函数从消息队列msgQId接收消息,将其拷贝到最大长度为maxNBytes的缓冲区buffer。如果消息包长度超过maxNBytes,多余部分被舍弃。等待时间timeout有两个特殊值: NO_WAIT0)立即返回;WAIT_FOREVER-1)一直等待消息队列有消息可取。

9.msgQDelete  删除一个消息队列

   STATUS  msgQDelete

    (

    MSG_Q_ID   msgQId /*要删除的消息队列ID*/

    )  

   任何因发送或接收该消息队列的消息的任务都将解阻,并返回错误errno.

10. wdCreate      创建看门狗定时器

   WDOG_ID wdCreate(void)

11. wdStart       启动定时器

   STATUS  wdStart

   

    WDOG_ID    wdId,      /*看门狗定时器ID*/

    int    delay, /*延迟值,以滴答计*/

    FUNCPTR    pRoutine,  /*超时函数*/

    int    parameter  /*超时函数的参数*/

    

12. wdCancel  取消一个当前工作的定时器

     STATUS      wdCancel

    (

      WDOG_ID  wdId   /*被取消的定时器ID*/

    )

  该函数只是让定时器的延迟值为零来取消其工作。

13. wdDelete  删除定时器

     STATUS      wdDelete

    (

      WDOG_ID  wdId   /*被删除的定时器ID*/

    )

14. semBCreate    创建并初始化二进制信号量

     SEM_ID      semBCreate

    (

      int         options,      /*信号量选项*/

      SEM_B_STATE initialState  /*信号量初始化状态值*/

    )

   信号量初始化状态值有两种:SEM_FULL1)或SEM_EMPTY0)。选项参数指明被阻塞任务的入列方式:基于优先级(SEM_Q_PRIORITY)和先进先出(SEM_Q_FIFO).

15. semCCreate    创建并初始化计数信号量

     SEM_ID      semCCreate

    (

      int      options,      /*信号量选项*/

      int      initialCount  /*信号量初始化计数值*/

    )

   选项参数指明被阻塞任务的入列方式:基于优先级(SEM_Q_PRIORITY)和先进先出(SEM_Q_FIFO).

16. semGive       给出信号量

     STATUS      semGive

    (

     SEM_ID    semId  /*所给出的信号量ID*/

    )

17. semTake       获得信号量

     STATUS      semTake

    (

     SEM_ID    semId  /*所要得到的信号量ID*/

     int       timeout /*等待时间*/

    )

   如果任务在规定时间内未得到信号量,函数semTake返回错误。等待时间值WAIT_FOREVERNO_WAIT分别表示一直等待和不等待。

18. semDelete     删除信号量

     STATUS      semDelete

    (

     SEM_ID    semId  /*要删除的信号量ID*/

    )

该函数释放与此信号量相关的资源,所有等待此信号量的任务解阻。
关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有