Vxworks驱动程序的结构
dosFsDevInit()使用。以下为块设备的初始化示例代码:
struct MyDevice{ //自定义的设备结构
BLK_DEV dev; 必须在结构的开始
Int interrupt;设备使用的中断号
....
}
int mylnit(){ //初始化函数
MyDevicelnit();//硬件初始化函数
MyDevice* Device =(MyDevice*)malloc(sizeof(MyDevice));
//为设备结构分配内存
Device->dev.bd_blkRd = Read;//初始化设备结构
Device->dev_blkWrt= Write;
intConnect(imToVec(9),my_ISR);//连接中断向量和中断服务程序ISR
)
ISR处理硬件中断,管理具体的硬件输入输出,同时和驱动程序的其它部分通信。ISR中第一条指令用来读APIC的中断服务寄存器,以通知CPU已经接到中断请求。
my_ISR(int va1)//中断断服务函数
sysOutByte(0xa0,0x02);//中断响应
.....
semGive(my_sem);//通知其它程序中断处理完毕
}
函数功能部分完成系统指定的功能,对于字符设备,这些函数就是指定的7个标准函数;对于块设备,则是在BLK_DEV或SEQ_DEV结构中指定的功能函数。应当注意的是,系统在调用块标准函数时,传递的设备结构指针是设备结构中BLK_DEV结构的指针,由于BLK_DEV定义在设备结构的开始处,该指针实际上也就是设备结构的指针。
STATUS Read (MyDevice* pDev,int startBlk,int numBlk,char*pBuf)
{
........
SemTake(my sem,WAI1 OREVER);//等待设备IO执行完成
)
Vxworks驱动程序的结构的更多相关文章
- 网络设备驱动程序-netdevice结构体关键部分注释
仅仅做个记录,内核4.19 struct net_device { char name[IFNAMSIZ]; //网络设备的名称 struct hlist_node name_hlist; char ...
- VxWorks 任务
任务:在执行时每个程序都被称之为任务.VxWorks操作系统中,任务可以直接地或者以共享方式访问大多数系统资源,为了维护各自的线程,每个任务必须保持有足够的上下文环境.(1) 任务状态:就绪(R ...
- Linux下的网卡驱动程序的编写过程(转)
工作需要写了我们公司一块网卡的linux驱动程序.经历一个从无到有的过程,深感技术交流的重要.Linux作为挑战微软垄断的强有力武器,日益受到大家的喜爱.真希望她能在中国迅速成长.把程序文档贴出来,希 ...
- Linux设备模型(总线、设备、驱动程序和类)
Linux设备驱动程序学习(13) -Linux设备模型(总线.设备.驱动程序和类)[转] 文章的例子和实验使用<LDD3>所配的lddbus模块(稍作修改). 提示:在学习这部分内容是一 ...
- WDF模型驱动程序开发
WDF驱动程序开发 1. 引言 设备驱动程序是硬件设备连接到计算机系统的软件接口,任何设备都必须有相应的驱动程序才能在计算机系统上正常工作.设备驱动程序的优劣直接关系到整个系统的性能和稳定性,因此,设 ...
- 利用WinDriver开发PCI设备驱动程序
摘要 WinDriver是Jungo公司出版的一个设备驱动程序开发组件,它可以大大加速PCI设备驱动程序的开发.作者在实际的项目中采用了WinDriver来开发设备驱动程序,取得了相当好的运行效果.从 ...
- 《Linux Device Drivers》第十八章 TTY驱动程序——note
简单介绍 tty设备的名称是从过去的电传打字机缩写而来,最初是指连接到Unix系统上的物理或虚拟终端 Linux tty驱动程序的核心紧挨在标准字符设备驱动层之下,并提供了一系列的功能,作为接口被终端 ...
- 标记化结构初始化语法 在结构体成员前加上小数点 如 “.open .write .close ”C99编译器 .
今天在看串口驱动(四)的时候 有这样一个结构体初始化 我很不理解 如下: static struct s3c24xx_uart_port s3c24xx_serial_ports[NR_PORTS] ...
- 转:Linux网卡驱动程序编写
Linux网卡驱动程序编写 [摘自 LinuxAID] 工作需要写了我们公司一块网卡的Linux驱动程序.经历一个从无到有的过程,深感技术交流的重要.Linux作为挑战微软垄断的强有力武器,日益受到大 ...
随机推荐
- c# excel print 打印 将所有列调整为一页
excel有时候列数比较多,行数也比较多,转换成xps文档的时候,一般是通过打印来实现. 由于打印的范围限制,所以会出现本来在一行的数据,由于列数比较多,溢出范围,被打印到两页了. 为解决这个问题,需 ...
- 使用Z3破解简单的XOR加密
使用Z3破解简单的XOR加密 翻译:无名侠 原文地址: https://yurichev.com/blog/XOR_Z3/ 如果我们有一段用简单XOR加密过的文本,怎么寻找密钥呢?密钥的长度可能很长, ...
- Java数据库设计14个技巧
Java数据库设计14个技巧 1. 原始单据与实体之间的关系 可以是一对一.一对多.多对多的关系.在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体.在特殊情况下,它们可能是一对 ...
- androidstudio canary5一个bug
Android Studio最新开发版一直跟着升级.到Canary5的时候出了一个bug. app build.gradle添加自己编译的aar库,原本一直使用: compile(name:'ijkp ...
- .Neter玩转Linux系列之三:Linux下的分区讲解
基础篇 .Neter玩转Linux系列之一:初识Linux .Neter玩转Linux系列之二:Linux下的文件目录及文件目录的权限 .Neter玩转Linux系列之三:Linux下的分区讲解 .N ...
- K-means聚类的Python实现
生物信息学原理作业第五弹:K-means聚类的实现. 转载请保留出处! K-means聚类的Python实现 原理参考:K-means聚类(上) 数据是老师给的,二维,2 * 3800的数据.plot ...
- shell编程值之正则表达式与字符截取(6)
正则表达式与通配符 正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配.grep.awk.sed等命令可以支持正则表达式 通配符用来匹配符合条件的文件名,通配符是完全匹配.ls.find.cp ...
- [Swift]UIKit学习之警告框:UIAlertController和UIAlertView
Important: UIAlertView is deprecated in iOS 8. (Note that UIAlertViewDelegate is also deprecated.) T ...
- SpringMvc出现Jsp页面不能正常解析成html网页
<!-- Spring mvc配置 --> <servlet> <servlet-name>springMvc</servlet-name> <s ...
- Date 类 02
Date类 在JDK1.0中,Date类是唯一的一个代表时间的类,但是由于Date类不便于实现国际化,所以从JDK1.1版本开始,推荐使用Calendar类进行时间和日期处理.这里简单介绍一下Date ...