vxworks6.9内核编程指导之读书笔记--vxworkskernelapplication

黑暗帝国 黑暗帝国     2022-08-06     545

关键词:

#1 内核对象的静态实例化

内核对象的静态实例化

任务的静态实例化

VX_TASK宏用来在编译时声明一个任务对象。该宏带有2个参数:任务名和栈大小。不像taskSpawn函数,任务名称可以是NULL。VX_TASK的任务名称必须指定。栈大小是非零值并且是编译时常量。

VX_TASK_INSTANTIATE宏被VX_TASK用来初始化和创建任务,等价于taskSpawn函数的功能。VX_TASK_INITIALIZE宏杯VX_TASK初始化任务并让任务处于SUSPEND状态,直到稍后调用taskActivate函数来激活。

VX_TASK_INSTANTIATE返回发起的任务ID,或者错误码。VX_TASK和VX_TASK_INITIALIZE必须使用相同的任务名。

#include <vxWorks.h>
#include <taskLib.h>
VX_TASK(myTask,4096);
int myTaskId;

STATUS initializeFunction (void)
    {
    myTaskId = VX_TASK_INSTANTIATE(myTask, 100, 0, 4096, pEntry,                                    0,1,2,3,4,5,6,7,8,9);
   if (myTaskId != ERROR)
       return (OK);                /* instantiation succeeded */
   else
       return (ERROR);
    }

为了初始化任务并使它处于SUSPEND状态,必须使用VX_TASK_INITALIZE宏。并在稍后使用taskActivate函数来运行该任务。VX_TASK_INSTANIATE和taskActivate使用相同的参数。

#include <vxWorks.h>
#include <taskLib.h>
VX_TASK(myTask,4096);
int myTaskId;
STATUS initializeFunction (void)
{
    myTaskId = VX_TASK_INITIALIZE(myTask, 100, 0, 4096, pEntry,                                   0,1,2,3,4,5,6,7,8,9);
   if (myTaskId != NULL)
       {
       taskActivate (myTaskId);
       return (OK);
       }
   else
       return (ERROR);
}

更多信息,请参阅taskLib的API手册。

信号量的静态实例化

VX_BINARY_SEMAPHORE,VX_COUNTING_SEMAPHORE,VX_MUTEX_SEMAPHORE和VX_READ_WRITE_SEMAPHORE宏分别用来在编译时定义二进制信号量、计数信号量、互斥信号量。这些必须以信号量名称作为参数。

这些信号量通过semBInitialize,semCInitialzie,semMInitialize和semRWInitialize函数来初始化定义的信号量。semXInitialize函数等价于semXCreate函数。

VX_XXX_SEMAPHORE和semXInitialize函数必须使用相同的信号量名称。semXInitialize函数返回信号量的ID。

#include <vxWorks.h>
#include <semLib.h>

VX_BINARY_SEMAPHORE(mySemB);   /* declare the semaphore */
SEM_ID mySemBId;               /* semaphore ID for further operations */
STATUS initializeFunction (void)
{
    if ((mySemBId = semBInitialize (mysemB, options, 0)) == NULL)
         return (ERROR);      /* initialization failed */
    else
         return (OK);
}

消息队列的静态实例化

VX_MSG_Q用来在编译时声明消息队列对象。带有3个参数:名称,消息队列最大数量及每个消息的最大尺寸。msgQInitialize函数在运行时初始化消息队列使之可用。宏和函数的参数必须保持一致。

 

#include <vxWorks.h>
#include <msgQLib.h>
VX_MSG_Q(myMsgQ,100,16);         /* declare the msgQ */
MSG_Q_ID myMsgQId;               /* MsgQ ID to send/receive messages */
STATUS initializeFunction (void)
{
    if ((myMsgQId = msgQInitialize (myMsgQ, 100, 16, options)) == NULL)
         return (ERROR);      /* initialization failed */
    else 
         return (OK);
}

看门狗时钟的静态实例化

VX_WDOG在编译时声明看门狗时钟。带有一个参数,看门狗名称。wdInitialize函数在运行时初始化看门狗时钟。

#include <vxWorks.h>
#include <wdLib.h>
VX_WDOG(myWdog);    /* declare the watchdog */
WDOG_ID myWdogId;   /* watchdog ID for further operations */
STATUS initializeFunction (void)
{
    if ((myWdogId = wdInitialize (myWdog)) == NULL) 
         return (ERROR);       /* initialization failed */
    else
         return (OK);
}

  

 

java并发编程实战读书笔记之futuretask(代码片段)

在《AndroidAsyncTask源代码浅析》一文中介绍了AndroidAsyncTask的原理,里面也初步介绍了FutureTask的使用方法。在创建Future的时候,根据其构造器来看需要传一个Callable对象,其构造器如下。publicFutureTask(Callable<V>callable)this.callable=c... 查看详情

java并发编程实战读书笔记之futuretask(代码片段)

在《AndroidAsyncTask源代码浅析》一文中介绍了AndroidAsyncTask的原理,里面也初步介绍了FutureTask的使用方法。在创建Future的时候,根据其构造器来看需要传一个Callable对象,其构造器如下。publicFutureTask(Callable<V>callable)this.callable=c... 查看详情

读书笔记(构建之法-11.19)

...不规范的毛病,以后这种毛病要改掉。  下面说说结对编程,结对编程有如下的好处:1.在开发层次,结对编程能提供很好的设计质量,两个人解决问题的能力更强。2.对开发人员自身来说,能带来自信。 查看详情

《c#高级编程》读书笔记(十五):任务线程和同步之四同步

  lock语句,Interlocked类和Monitor类可用于进程内部的同步。Mutex类、Event类、SemaphoreSlim类和ReaderWriterLockSlim类提供个过个线程之间的线程同步。1,Interlocked类  Interlocked类用于使变量的简单语句原子化。Interlocked类提供... 查看详情

读书笔记之《操作系统概念》

...改编为课程最需要的内容,这本引导市场潮流的教材继续指导着操作系统课程。第二部分进程管理第四章进程进程状态创建、运行、等待、就绪、终止进程:一个具有单个控制线程的执行程序。第五章线程线程:是CPU使用的基本... 查看详情

《python黑帽子:黑客与渗透测试编程之道》读书笔记:web攻击(代码片段)

...HTML表格认证结语前言《Python黑帽子:黑客与渗透测试编程之道》的读书笔记,会包括书中源码,并自己将其中一些改写成Python3版本。书是比较老了,anyway,还是本很好的书本篇是第5章web攻击,包括urllib2... 查看详情

[读书笔记]java编程思想第3章之操作符(代码片段)

==和!=比较对象时比较的是对象的引用,引用到相同的对象时逻辑比较结果为true;如果想比较对象的实际内容是否相同,必须使用所有对象都适用的特殊方法equals(),此方法不适用于基本类型的比较。classV... 查看详情

第二周读书笔记《构建之法》(代码片段)

...、五两个个章节。这三个章节主要讲述了代码规范、结对编程、团队模式、开发流程。 第四章两人合作首先提到的是代码规范,程序员写的代码不仅要给机器看,还要给人看。好的代码规范能事半功倍。代码规范有分为代 查看详情

《python黑帽子:黑客与渗透测试编程之道》读书笔记:windows提权(代码片段)

...2、赢得竞争结语前言《Python黑帽子:黑客与渗透测试编程之道》的读书笔记,会包括书中源码,并自己将其中一些改写成Python3版本。书是比较老了,anyway,还是本很好的书本篇是第10章Windows提权,主要是... 查看详情

《python黑帽子:黑客与渗透测试编程之道》读书笔记:扩展burp代理(代码片段)

...成密码字典结语前言《Python黑帽子:黑客与渗透测试编程之道》的读书笔记,会包括书中源码,并自己将其中一些改写成Python3版本。书是比较老了,anyway,还是本很好的书本篇是第6章扩展burp代理,包括利... 查看详情

《逐梦旅程windows游戏编程之从零开始》读书笔记1——创建窗口

步骤:窗口类的设计窗口类的注册窗口的正式创建窗口的显示与更新1.设计:使用WNDCLASSEX结构体,这里注意的是C++中的结构体中的成员默认是共有的,所以可以直接通过.来调用。typedefstructtagWNDCLASSEX{UINTcbSize;//UINT类型的cbSize,表... 查看详情

《python黑帽子:黑客与渗透测试编程之道》读书笔记:基于github的木马(代码片段)

...b通信的木马结语前言《Python黑帽子:黑客与渗透测试编程之道》的读书笔记,会包括书中源码,并自己将其中一些改写成Python3版本。书是比较老了,anyway,还是本很好的书本篇是第7章基于github的木马1、github... 查看详情

《python黑帽子:黑客与渗透测试编程之道》读书笔记:自动化攻击取证(代码片段)

...插入shellcode结语前言《Python黑帽子:黑客与渗透测试编程之道》的读书笔记,会包括书中源码,并自己将其中一些改写成Python3版本。书是比较老了,anyway,还是本很好的书本篇是第11章自动化攻击取证,主... 查看详情

《构建之法》第四章读书笔记

本章理论和知识点有:代码规范、极限编程、结对编程、两人合作的不同阶段、影响他人的技巧一、代码规范1、代码风格规范。主要是文字上的规定,看似表面文章,实际上非常重要。代码风格的原则是:简明,易读,无二义... 查看详情

[读书笔记]java编程思想第8章之多态(代码片段)

多态是继数据抽象和继承之后的第三种基本特征。多态通过分离做什么和怎么做,从另一角度将接口和实现分离开来。多态不仅能够改善代码的组织结构和可读性,还可以创建可扩展程序。“封装”通过合并特征和行为... 查看详情

《构建之法》读书笔记

...件工程的阶段...1好的单元测试标准:...1代码复审...2结对编程...2软件开发流程...3敏捷流程   Scrum..3MSF.5需求分析...5典型用户和场景...6规格说明书(Spec)--包括功能说明书和技术说明书(设计文档)8用户体验...9软件测试... 查看详情

《python黑帽子:黑客与渗透测试编程之道》读书笔记:scapy——网络的掌控者(代码片段)

...PCAP文件处理结语前言《Python黑帽子:黑客与渗透测试编程之道》的读书笔记,会包括书中源码,并自己将其中一些改写成Python3版本。书是比较老了,anyway,还是本很好的书本篇是第4章scapy:网络的掌控者&... 查看详情

[读书笔记]java编程思想第9章之接口(代码片段)

Java提供了一个叫做抽象方法的机制,这种方法是不完整的;仅有声明而没有方法体。包含抽象方法的类叫做抽象类。如果一个类包含一个或多个抽象方法,该类必须被限定为抽象的。如果从一个抽象类继承,并想... 查看详情