Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6090639
  • 博文数量: 2759
  • 博客积分: 1021
  • 博客等级: 中士
  • 技术积分: 4091
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-11 14:14
文章分类

全部博文(2759)

文章存档

2019年(1)

2017年(84)

2016年(196)

2015年(204)

2014年(636)

2013年(1176)

2012年(463)

分类: LINUX

2013-05-22 15:52:35

原文地址:一个完整的LMOS驱动框架 作者:lmnos

/****************************************************************
            
主桥驱动程序文件hostbrideg.c
*****************************************************************
                              
彭东 @ 2013.05.21.17.10
****************************************************************/
 
/*一个完整的LMOS驱动框架,当然对于不同的设备,不必写出所有的分发函数,我这里 
*是为了展示一个完整的驱动框架。每个驱动分发函数都是4个参数,后面两个不用管
*这个是为了以后扩展升级用的。当然对于x86上的主桥驱动来说,最最重要的只有两个 
*分发函数,设备枚举函数,电源管理函数。对于分发函数用到的参数全部在ioinfo_t
 
*结构体中。当然我这个驱动什么也不能做。
 
*注意的是,LMOS的驱动程序,一旦被装载,就是内核的一部分,和内核代码一起运行
*在CPU的最高特权级,可以访问所有的系统资源。就是说,你驱动程序的一点点错误都 
*能导致机器崩溃,内核没有任何挽救措施。当然你的代码写不好但没有错误,这也许只
 
*会影响内核的执行性能。所以要明白的是,开发驱动就是开发内核,你的每行代码都至
 
*关重要。
 
*当然也不必紧张,LMOS内核会提供一系列接口,比如同步原语,内存分配与释放,进程
 
*间数据的传输,设备的注册与撤销等……以最大可能保证驱动编写的正确性。让其只专注
 
*于设备部分。
 
*/

#include "drivers.h"


PUBLIC
 drvstus_t hostbrideg_entry(driver_t* drvobjp)
{

                
return DFCOKSTUS;
}
PUBLIC drvstus_t hostbrideg_exit(driver_t* drvobjp)
{
                return DFCOKSTUS;
}
PUBLIC drvstus_t hostbrideg_open(device_t* devobjp,ioinfo_t* ioifobjp,uint_t extval,void* extp)
{
                return DFCOKSTUS;
}
PUBLIC drvstus_t hostbrideg_close(device_t* devobjp,ioinfo_t* ioifobjp,uint_t extval,void* extp)
{

                
return DFCOKSTUS;
}
PUBLIC drvstus_t hostbrideg_read(device_t* devobjp,ioinfo_t* ioifobjp,uint_t extval,void* extp)
{
                return DFCOKSTUS;
}
PUBLIC drvstus_t hostbrideg_write(device_t* devobjp,ioinfo_t* ioifobjp,uint_t extval,void* extp)
{
                return DFCOKSTUS;
}
PUBLIC drvstus_t hostbrideg_ioctrl(device_t* devobjp,ioinfo_t* ioifobjp,uint_t extval,void* extp)
{
                return DFCOKSTUS;
}
PUBLIC drvstus_t hostbrideg_lseek(device_t* devobjp,ioinfo_t* ioifobjp,uint_t extval,void* extp)
{

                
return DFCOKSTUS;
}
PUBLIC drvstus_t hostbrideg_dev_start(device_t* devobjp,ioinfo_t* ioifobjp,uint_t extval,void* extp)
{
                return DFCOKSTUS;
}
PUBLIC drvstus_t hostbrideg_dev_stop(device_t* devobjp,ioinfo_t* ioifobjp,uint_t extval,void* extp)
{

                return DFCOKSTUS;
}
PUBLIC drvstus_t hostbrideg_enmu(device_t* devobjp,ioinfo_t* ioifobjp,uint_t extval,void* extp)
{
                return DFCOKSTUS;
}

PUBLIC drvstus_t hostbrideg_setpower(device_t* devobjp,ioinfo_t* ioifobjp,uint_t extval,void* extp)
{
                return DFCOKSTUS ;
}

PUBLIC
 drvstus_t hostbrideg_flush(device_t* devobjp,ioinfo_t* ioifobjp,uint_t extval,void* extp)
{
                return DFCOKSTUS;
}

PUBLIC
 drvstus_t hostbrideg_shutdown(device_t* devobjp,ioinfo_t* ioifobjp,uint_t extval,void* extp)
{
                return DFCOKSTUS;
}

DEFINE_STATIC_KERMODUS
(hostbrideg,"hostbrideg",KMATB_FLG_DRIVER,hostbrideg_entry,hostbrideg_exit);
阅读(1154) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~