社区
Linux_Kernel
帖子详情
谁有“零拷贝”技术有资料,最好有实例或是现成的代码!
szclm
2004-04-16 09:58:39
如题
...全文
47
5
打赏
收藏
谁有“零拷贝”技术有资料,最好有实例或是现成的代码!
如题
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
qiansen
2004-04-22
打赏
举报
回复
http://www.hacker.com.cn/article/list.asp?id=3370
Microsoft
2004-04-19
打赏
举报
回复
//led_int_chdrv.c
#include <linux/malloc.h>
#include <linux/fs.h>
#include <linux/module.h>
#include <asm/segment.h>
#include <unistd.h>
typedef struct {
unsigned int orig_mod; //IOPMOD Register
unsigned int orig_con; //IOPCON Register
unsigned int orig_dbw; //EXTDBWTH Register
unsigned int count;
} led_demo_driver_t;
#define EXTDBWTH *(unsigned int *)0x3FF3010
#define IOPMOD *(unsigned int *)0x3FF5000
#define IOPCON *(unsigned int *)0x3FF5004
#define LED_CHDRV_MAJOR 111
char LED_INT_CHDRV_NAME[] = "LED_Int_DemoDrv";
void led_delay()
{
unsigned int i;
for(i = 0; i < 500000; ++i) ;
}
void led_interrupt( int irq, void *dev_id, struct pt_regs *regs )
{
led_demo_driver_t *dev = (led_demo_driver_t *)dev_id;
dev->count++;
printk("irq %d dev->PC = %08x \n",irq , dev->count++);//for debug interrupt
}
int led_chdev_open( struct inode *inode, struct file *file )
{
led_demo_driver_t *dev;
int flags;
dev = (led_demo_driver_t *)kmalloc(sizeof(led_demo_driver_t), GFP_KERNEL);
if(dev == NULL)
{
return -ENOMEM;
}
dev->orig_mod = IOPMOD;
dev->orig_con = IOPCON;
dev->orig_dbw = EXTDBWTH;
EXTDBWTH |= 0x0FF00000;
led_delay();
IOPMOD &= 0x7FEFF;
led_delay();
IOPCON &= 0xFFFFFFE0;
led_delay();
IOPCON |= 0x1C; //reference s3c4510 spec. page 12-4 about external irq setting
led_delay();
file->private_data = dev;
led_delay();
dev->count = 0x00;
led_delay();
save_flags_cli(flags);
if( request_irq( 0, led_interrupt, SA_INTERRUPT, "led", dev ))
{
printk("kernel: request_irq error!\n");
}
restore_flags(flags);
return 0;
}
void led_chdev_release( struct inode *inode, struct file *file )
{
led_demo_driver_t *dev = (led_demo_driver_t *)file->private_data;
int flags;
save_flags_cli(flags);
free_irq(0, dev);
if(dev) {
//
IOPMOD = dev->orig_mod;
IOPCON = dev->orig_con;
EXTDBWTH = dev->orig_dbw;
kfree(dev);
}
restore_flags(flags);
}
static struct file_operations led_chdrv_fops = {
NULL, /* lseek */
NULL, /* read */
NULL, /* write */
NULL, /* readdir */
NULL, /* select */
NULL, /* ioctl */
NULL, /* mmap */
led_chdev_open, /* open */
led_chdev_release /* release */
};
int led_init()
{
if( register_chrdev(LED_CHDRV_MAJOR, LED_INT_CHDRV_NAME, &led_chdrv_fops) )
{
printk("kernel: %s: Unable to register character device\n", LED_INT_CHDRV_NAME); return -EIO;
}
return 0;
}
此程式齣自
"嵌入式微電腦繫統實習ARM與LINUX",鄭慕德 編著,全華科技圖書股份有限公司
CoolQ
2004-04-16
打赏
举报
回复
http://www.nsfocus.net/index.php?act=sec_doc&do=view&doc_id=880&keyword=%C1%E3%BF%BD%B1%B4
具体是要作驱动的,一个驱动一个样,所以具体实现不通用。
szclm
2004-04-16
打赏
举报
回复
谢谢~
chairou
2004-04-16
打赏
举报
回复
找COOLQ吧,他对IDS有研究.这种东西还想要源码,那别人怎么吃饭啊.
Reversing:逆向工程揭密
对软件而言,逆向工程归结起来就是拿一个既没有源
代码
又没有准确文献
资料
的
现成
程序,尝试恢复出它的设计和实现细节。在某些情况下,可以找到程序的源
代码
,但是找不到最初的开发人员了。本书所讨论的就是通常所说的...
二十三种设计模式【PDF版】
主要是介绍各种格式流行的软件设计模式,对于程序员的进一步提升起推进作用,有时间可以随便翻翻~~ 23种设计模式汇集 如果你还不了解设计模式是什么的话? 那就先看设计模式引言 ! 学习 GoF 设计模式的重要性 ...
如何实现一个深浅拷贝
把深浅拷贝单独作为一讲来专门讲解,是因为在 JavaScript 的编程中经常需要对数据进行复制,什么时候用深拷贝、什么时候用浅拷贝,是开发过程中需要思考的;同时深浅拷贝也是前端面试中比较高频的题目。 因此,深入...
java接口(
实例
运用)
数组我们有一个
现成
的 sort 方法就是可以拿来对数组进行排序操作的,但是能不能对一个对象数组进行排序呢?答案是不可以的!对象数组中的每个元素都是一个
实例
化的对象,对象中的成员属性复杂,你直接调用sort对数组...
属性拷贝工具类封装
集合类型的拷贝也是一样的了,先把集合对象处理为流,对其中的每个对象都执行到拷贝,然后拷贝完后收集起来返回一个拷贝完成后的新的集合。其实原理和上面一样就是利用的反射。一共分为单个对象类拷贝,和集合类型...
Linux_Kernel
4,434
社区成员
17,460
社区内容
发帖
与我相关
我的任务
Linux_Kernel
Linux/Unix社区 内核源代码研究区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章