设为首页  
联系我们  
加入收藏  
网页制作 冲浪宝典 图形图像 操作系统 软件教学 编程开发 认证考试 安全技术 站长专区 文学驿站 娱乐天地 游戏天地 办公软件
文章搜索
您的位置: 首页 >> 文章首页 >> 操作系统 >> OpenBSD >> OpenBSD可加载内核模块编程完全指南
精品推荐
OpenBSD点击TOP10
·Free BSD,Linux之比较
·freebsd VPN 搭建
·freebsd系统时间同步及ntp服务的提供
·freebsd ipf+ipnat+ipfw建立带流量控制的透明网关
·FreeBSD的配置
·ipf+ipnat+ipfw建立带流量控制的透明网关
·POSTFIX下的反垃圾反病毒邮件系统
·FreeBSD 5.2.1R Web Server架设实例过程
·OpenBSD可加载内核模块编程完全指南
·FreeBSD+IPFILTER实现整网(N个Vlan)透明代理上网
操作系统点击TOP10
·Windows Vista完全硬盘安装法
·Windows Vista 激活不求人
·Windows Vista局域网网络连接设置
·Windows Vista系统动态桌面截图欣赏
·Windows XP中磁盘的分区应用
·Windows NT/2000/XP 出现蓝屏并显示“STOP 0x0000007f”错误
·让Windows XP变身Vista
·一招搞定Vista系统软件不兼容问题
·教你如何正确配置和优化Windows Vista
·只转两圈 加快Windows XP启动速度
精选专题

OpenBSD可加载内核模块编程完全指南

作者: 来源:网络文章 时间:2005-12-13 0:45:31

OpenBSD可加载内核模块编程完全指南(11)
        return 0;
}

好了,最后我们可以用modload的-p参数来安装我们的设备模块,我可以写一个脚本来完成编译安装我们的设备的任务.脚本利用mknod在

/dev目录里面创建了一个设备,就叫
'/dev/ourdev'.在此安装脚本中,我们用模块号作为第一个参数,模块的类型作为第二个参数.如果模块是一个系统调用,我们还需要指定系统

调用号作为第三个参数这里,我
们的第三个参数是主设备号.
以下就是该安装脚本(dev-install.sh):

#!/bin/sh
MAJOR=`modstat -n ourdev tail -1 awk '{print $3}'`
mknod -m 644 /dev/ourdev c $MAJOR 0
echo "created device /dev/ourdev, major number $MAJOR"
ls -l /dev/ourdev

好,开始安装.
首先编译源码:
[e4gle@openbsd29]# gcc -D_KERNEL -I/sys -c chardev.c
[e4gle@openbsd29]#

安装模块:
[e4gle@openbsd29]# modload -o ourdev.o -eourdev -p ./dev-install.sh chardev.o
Module loaded as ID 0
created device /dev/ourdev, major number 29
crw-r--r--  1 root  wheel   29,   0 Jul 10 05:16 /dev/ourdev
[e4gle@openbsd29]#

看看日志确定模块是否被正常加载:
[e4gle@openbsd29]# dmesg tail -2
loading module ourdev
DDB symbols added: 140232 bytes
[e4gle@openbsd29]#

好,我们测试一下我们新创建的设备,用dd命令来测试:
[e4gle@openbsd29]# dd if=/dev/ourdev of=/dev/fd/1 count=1 bs=100
hello world!
1+0 records in
1+0 records out
100 bytes transferred in 1 seCS (100 bytes/sec)
[e4gle@openbsd29]#

现在我来通过一个测试程序来测试一下我们的ioctl调用是否工作.测试程序必须包括模块代码和头文件common.h:

#define MAXMSGLEN 100

struct ourdev_io {
        int value;
        char msg[MAXMSGLEN];
};

#define ODREAD  _IOR('O', 0, struct ourdev_io)
#define ODWRITE _IOW('O', 1, struct ourdev_io)

#ifdef _KERNEL

/* open, close, read, ioctl */
#define cdev_ourdev_init(c,n) {
        dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read),
        (dev_type_write((*))) lkmenodev, dev_init(c,n,ioctl),

1.OpenBSD可加载内核模块编程完全指南(1)
2.OpenBSD可加载内核模块编程完全指南(2)
3.OpenBSD可加载内核模块编程完全指南(3)
4.OpenBSD可加载内核模块编程完全指南(4)
5.OpenBSD可加载内核模块编程完全指南(5)
6.OpenBSD可加载内核模块编程完全指南(6)
7.OpenBSD可加载内核模块编程完全指南(7)
8.OpenBSD可加载内核模块编程完全指南(8)
9.OpenBSD可加载内核模块编程完全指南(9)
10.OpenBSD可加载内核模块编程完全指南(10)
11.OpenBSD可加载内核模块编程完全指南(11)
12.OpenBSD可加载内核模块编程完全指南(12)
13.OpenBSD可加载内核模块编程完全指南(13)
14.OpenBSD可加载内核模块编程完全指南(14)
15.OpenBSD可加载内核模块编程完全指南(15)
16.OpenBSD可加载内核模块编程完全指南(16)
17.OpenBSD可加载内核模块编程完全指南(17)
18.OpenBSD可加载内核模块编程完全指南(18)
19.OpenBSD可加载内核模块编程完全指南(19)
共19页 9 7 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [198 :>

OpenBSD可加载内核模块编程完全指南 相关文章:
OpenBSD可加载内核模块编程完全指南 相关软件:
特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
转载请注明来源:http://www.xgdown.com