当前位置: 技术问答>linux和unix
谁来救救我?
来源: 互联网 发布时间:2016-12-18
本文导语: #ifndef __KERNEL__ #define __KERNEL__ #endif #ifndef MODULE #define MODULE #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include s...
#ifndef __KERNEL__
#define __KERNEL__
#endif
#ifndef MODULE
#define MODULE
#endif
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
struct shuju
{
char ip[30];
char mac[30];
struct shuju *next;
};
struct shuju *head;
int hello_init(void)
{
ssize_t res;
char *cp;
int n=0;
struct shuju *p1,*p2,*q;
struct file *fp;
mm_segment_t fs;
loff_t pos;
head=NULL;
fp = filp_open("/root/test", O_RDWR | O_CREAT, 0644);
if (IS_ERR(fp)) {
printk("create file errorn");
return -1;
}
fs = get_fs();set_fs(KERNEL_DS);
p1=(struct shuju *)kmalloc(sizeof(struct shuju),0);
cp=p1->ip;
pos = 0;
while(res!=0)
{
res=vfs_read(fp,cp, 1, &pos);
if((*cp)==' ')
{
*cp='';
cp=p1->mac;
continue;
}
if((*cp)=='n')
{
*cp='';
n=n+1;
if(n==1)head=p1;
else p2->next=p1;
p2=p1;
p1=(struct shuju *)kmalloc(sizeof(struct shuju),0);
cp=p1->ip;
continue;
}
cp=cp+1;
}
p2->next=NULL;
q=head;
while(q!=NULL)
{
printk("%s %sn",q->ip,q->mac);
q=q->next;
}
filp_close(fp, NULL);
set_fs(fs);
return 0;
}
void __exit hello_exit(void)
{
printk("hello exitn");
}
module_init(hello_init);
module_exit(hello_exit);
这个程序怎么不输出结果啊?
#define __KERNEL__
#endif
#ifndef MODULE
#define MODULE
#endif
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
struct shuju
{
char ip[30];
char mac[30];
struct shuju *next;
};
struct shuju *head;
int hello_init(void)
{
ssize_t res;
char *cp;
int n=0;
struct shuju *p1,*p2,*q;
struct file *fp;
mm_segment_t fs;
loff_t pos;
head=NULL;
fp = filp_open("/root/test", O_RDWR | O_CREAT, 0644);
if (IS_ERR(fp)) {
printk("create file errorn");
return -1;
}
fs = get_fs();set_fs(KERNEL_DS);
p1=(struct shuju *)kmalloc(sizeof(struct shuju),0);
cp=p1->ip;
pos = 0;
while(res!=0)
{
res=vfs_read(fp,cp, 1, &pos);
if((*cp)==' ')
{
*cp='';
cp=p1->mac;
continue;
}
if((*cp)=='n')
{
*cp='';
n=n+1;
if(n==1)head=p1;
else p2->next=p1;
p2=p1;
p1=(struct shuju *)kmalloc(sizeof(struct shuju),0);
cp=p1->ip;
continue;
}
cp=cp+1;
}
p2->next=NULL;
q=head;
while(q!=NULL)
{
printk("%s %sn",q->ip,q->mac);
q=q->next;
}
filp_close(fp, NULL);
set_fs(fs);
return 0;
}
void __exit hello_exit(void)
{
printk("hello exitn");
}
module_init(hello_init);
module_exit(hello_exit);
这个程序怎么不输出结果啊?
|
你在函数最开始就加printk吧!然后把printk一步一步后移,看看在哪出的问题。
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。