如何注册一个内核模块,能够进行网络通信
时间:2006-03-19
来源:互联网
作者: macping 发布时间: 2006-03-19
作者: camelguo 发布时间: 2006-03-19
大哥,我有些不明白,内核太调用系统调用怎么调用,举个最简单的例子,比如说向网络广播一个udp数据包(hello world)。。。
怎么编写这个内核模块。。。。(内核不和函数库相连,所以内核模块不能包含通常的头文件是把)
万分感谢大哥。。。
作者: macping 发布时间: 2006-03-19
大哥,我有些不明白,内核太调用系统调用怎么调用,举个最简单的例子,比如说向网络广播一个udp数据包(hello world)。。。
怎么编写这个内核模块。。。。(内核不和函数库相连,所以内核模块不能包含通常的头文件是把)
万分感谢大哥。。。
作者: macping 发布时间: 2006-03-19
大哥,我有些不明白,内核太调用系统调用怎么调用,举个最简单的例子,比如说向网络广播一个udp数据包(hello world)。。。
怎么编写这个内核模块。。。。(内核不和函数库相连,所以内核模块不能包含通常的头文件是把)
万分感谢大哥。。。
作者: macping 发布时间: 2006-03-19
#include <linux/fs.h>
static int __init vman_init(void)
{
printk("<1>Hello,world\n");
int fd;
fd=open("/root/result.tr",O_CREAT|O_RDWR,S_IRWXU);
close(fd);
return 0;
}
这是一个简单的打开和关闭文件的内核实现,,,可是编译不过去,,,,,,网络的系统调用我还搞不清楚在哪里呢......
各位大哥帮帮小弟.........
作者: macping 发布时间: 2006-03-20
作者: camelguo 发布时间: 2006-03-20
我知道你说的这些道理,,
那如果要打开文件,用_syscall6(int, open, char*, name, int , flag)还是用open(我自己觉的应该用open,因为这个宏已经展开了,调用一下就行)
但是,两种方法都试了,怎么都编译不过去,,
另外,网络相关的我没太接触过,,,请你帮忙指点一下大概那几个是,,,是不是还要自己添加一些_syscall
作者: macping 发布时间: 2006-03-20
作者: camelguo 发布时间: 2006-03-20
感谢你的回帖,小弟愚笨,接触linux不久,所以。。。
不好意思,,,求你给小弟讲一下,到底怎么用,直接调用么。。。。。但是我怎么open不了呢
?????
我知道你说的这些道理,,
那如果要打开文件,用_syscall6(int, open, char*, name, int , flag)还是用open(我自己觉的应该用open,因为这个宏已经展开了,调用一下就行)
但是,两种方法都试了,怎么都编译不过去,,
另外,网络相关的我没太接触过,,,请你帮忙指点一下大概那几个是,,,是不是还要自己添加一些_syscall
作者: macping 发布时间: 2006-03-20
#define __KERNEL__
#endif
#ifndef MODULE
#define MODULE
#endif
#include <linux/module.h>
#include <linux/init.h>
#include <linux/config.h>
#include <asm/uaccess.h>
#define __KERNEL_SYSCALLS__
#include <linux/fs.h>
static int __init vman_init(void)
{
printk("<1>Hello,world\n");
int fd;
fd=open("/root/result1.tr",O_CREAT|O_RDWR,S_IRWXU);
return 0;
}
static void __exit vman_exit(void)
{
printk("<1>Goodbye cruel world\n");
}
MODULE_DESCRIPTION("MAC-filter by Yuelei VMANE project, Northeastern University");
MODULE_AUTHOR("Yuelei");
#ifdef MODULE_LICENSE
MODULE_LICENSE("GPL");
#endif
module_init(vman_init);
module_exit(vman_exit);
作者: macping 发布时间: 2006-03-20
gcc -Wall -O -D__KERNEL__ -DMODULE -DMODVERSIONS -include /usr/src/linux-2.4/include/linux/modversions.h -nostdinc -I /usr/lib/gcc-lib/i386-redhat-linux/3.2.2/include -I/usr/src/linux-2.4/include -c test.c -o test.o
test.c: In function `vman_init':
test.c:23: warning: implicit declaration of function `open'
为什么会是这样
作者: macping 发布时间: 2006-03-20
#define __KERNEL__
#endif
#ifndef MODULE
#define MODULE
#endif
#include <linux/module.h>
#include <linux/init.h>
#include <linux/config.h>
#include <asm/uaccess.h>
#include <asm/unistd.h>
_syscall2(int,open,const char*,name,int,flags)
#define __KERNEL_SYSCALLS__
#include <linux/fs.h>
static int __init vman_init(void)
{
printk("<1>Hello,world\n");
int fd;
fd=open("/root/result1.tr",O_CREAT|O_RDWR,S_IRWXU);
return 0;
}
static void __exit vman_exit(void)
{
printk("<1>Goodbye cruel world\n");
}
MODULE_DESCRIPTION("MAC-filter by Yuelei VMANE project, Northeastern University");
MODULE_AUTHOR("Yuelei");
#ifdef MODULE_LICENSE
MODULE_LICENSE("GPL");
#endif
module_init(vman_init);
module_exit(vman_exit);
作者: camelguo 发布时间: 2006-03-21
我试试
作者: macping 发布时间: 2006-03-21
gcc -Wall -O -D__KERNEL__ -DMODULE -DMODVERSIONS -include /usr/src/linux-2.4/include/linux/modversions.h -nostdinc -I /usr/lib/gcc-lib/i386-redhat-linux/3.2.2/include -I/usr/src/linux-2.4/include -c test.c -o test.o
test.c: In function `open':
test.c:21: `errno' undeclared (first use in this function)
test.c:21: (Each undeclared identifier is reported only once
test.c:21: for each function it appears in.)
make: *** [test.o] Error 1
还是过不去!!为什么,,,,,,郁闷死了
#ifndef __KERNEL__
#define __KERNEL__
#endif
#ifndef MODULE
#define MODULE
#endif
#include <linux/module.h>
#include <linux/init.h>
#include <linux/config.h>
#include <asm/uaccess.h>
#include <asm/unistd.h>
_syscall3(int,open,const char *,file,int,flag,int,mode)
#define __KERNEL_SYSCALLS__
#include <linux/fs.h>
static int __init vman_init(void)
{
printk("<1>Hello,world\n");
int fd;
fd=open("/root/result1.tr",O_CREAT|O_RDWR,S_IRWXU);
return 0;
}
static void __exit vman_exit(void)
{
printk("<1>Goodbye cruel world\n");
}
MODULE_DESCRIPTION("MAC-filter by Yuelei VMANE project, Northeastern University");
MODULE_AUTHOR("Yuelei");
#ifdef MODULE_LICENSE
MODULE_LICENSE("GPL");
#endif
module_init(vman_init);
module_exit(vman_exit);
作者: macping 发布时间: 2006-03-21
作者: macping 发布时间: 2006-03-21
#define __KERNEL__
#endif
#ifndef MODULE
#define MODULE
#endif
#include <linux/module.h>
#include <linux/init.h>
#include <linux/config.h>
#include <asm/uaccess.h>
#include <asm/unistd.h>
_syscall3(int,open,const char *,file,int,flag,int,mode)
int errno;
#define __KERNEL_SYSCALLS__
#include <linux/fs.h>
static int __init vman_init(void)
{
printk("<1>Hello,world\n");
int fd;
fd=open("/root/result1.tr",O_CREAT|O_RDWR,S_IRWXU);
return 0;
}
static void __exit vman_exit(void)
{
printk("<1>Goodbye cruel world\n");
}
MODULE_DESCRIPTION("MAC-filter by Yuelei VMANE project, Northeastern University");
MODULE_AUTHOR("Yuelei");
#ifdef MODULE_LICENSE
MODULE_LICENSE("GPL");
#endif
module_init(vman_init);
module_exit(vman_exit);
作者: camelguo 发布时间: 2006-03-21
但是加载过模块,还是没有建立相应的文件。。。。。。。。。。
肯请camelguo把qq或别的即时联系方式留下。。。。
小弟好即时联系请教
作者: macping 发布时间: 2006-03-22
作者: camelguo 发布时间: 2006-03-22
作者: yulc 发布时间: 2006-03-29
作者: yulc 发布时间: 2006-03-29
fd=open("/root/result1.tr",O_CREAT|O_RDWR,S_IRWXU);
will return -1, and the errno is set 14 (Bad address),
ps, if open success, i think it must call close() that finished create.
作者: camelguo
ifndef __KERNEL__
#define __KERNEL__ #endif #ifndef MODULE #define MODULE #endif #include <linux/module.h> #include <linux/init.h> #include <linux/config.h> #include <asm/uaccess.h> #include <asm/unistd.h> _syscall3(int,open,const char *,file,int,flag,int,mode) int errno; #define __KERNEL_SYSCALLS__ #include <linux/fs.h> static int __init vman_init(void) { printk("<1>Hello,world\n"); int fd; fd=open("/root/result1.tr",O_CREAT|O_RDWR,S_IRWXU); return 0; } static void __exit vman_exit(void) { printk("<1>Goodbye cruel world\n"); } MODULE_DESCRIPTION("MAC-filter by Yuelei VMANE project, Northeastern University"); MODULE_AUTHOR("Yuelei"); #ifdef MODULE_LICENSE MODULE_LICENSE("GPL"); #endif module_init(vman_init); module_exit(vman_exit); |
作者: yulc 发布时间: 2006-03-29
你这个,好用么,如果write,close也好用么
作者: macping 发布时间: 2006-04-04
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28