- 论坛徽章:
- 0
|
主要问题是如何在内核里实现向文件里写数据。
通过阅读高手在其他类似贴中留下的内容,我写了下面的代码:
unsigned char writefile(const char *data,int len)
{
mm_segment_t old_fs;
ssize_t result;
struct file *filp=NULL;
char *filename="param.txt";
filp=filp_open(file_name,O_RDWR,0);
if (IS_ERR(filp))
{
printk(KERN_INFO "Unable to load %s.\n",filename);
return -1;
}
if((!filp-> f_op) ¦ ¦(!filp-> f_op-> write))
{
filp_close(filp,NULL);
return -1;
}
old_fs=get_fs();
set_fs(get_ds());
result=filp-> f_op-> write(filp,data,len,&filp-> f_pos);
printk("result=%d\n",result);
set_fs(old_fs);
return 0;
}
编译通过,正常insmod,但是运行时会死掉,自然写文件没有成功。
如果把get_fs,set_fs这些去掉,则不会死,但是write返回一个负值-14,没有写成功。
经过试验我发现好像是set_fs的问题,用他就会死,不知道怎么回事,高手来指点一下吧,不甚感激。 |
|