现象:
1. 在内核正常读文件,没有问题。
2. 通过ADB把这个文件更新了。
3. 再读这个文件时,没有更新,还是和第一步读的一样!
程序如下:
static unsigned char cmd_buf_op[COMMAND_BUF_SIZE];
static char* pcmd_buf;
load_file(char * FileName)
{
static struct inode inode = NULL;
static struct file *fp;
static mm_segment_t fs;
static loff_t pos;
int iSize, cmd_num,i;
pcmd_buf = (char)cmd_buf_op;
fs=get_fs();
set_fs(KERNEL_DS);
fp = filp_open( FileName, O_RDONLY, 0644);
if(IS_ERR(fp)){
printk("create file error\n");
return -1;
}
inode = fp->f_dentry->d_inode;
iSize = inode->i_size;
printk("file(%s) size=%d\n", FileName, iSize);
vfs_read(fp,(char*)cmd_buf_op,iSize,&pos);
printk("pos =%x\n", pos );
filp_close(fp, 0);
set_fs(fs);
pcmd_buf[iSize] = 0;
printk("cmd_buf %s: %s\n", __func__, (char*)cmd_buf_op );
return 0;
}
指针没有移动,肯定没法读取其他的数据啊
不是这个意思。
是我读出的数据都是一样的,不需要处理cmd_buf_op这个里面的数据。
比如Filename的数据是如下:
1st data
第一次读出来是 :1st data
然后在外部更改Filename的数据如下:
2nd data
第二次读的数据:1st data
就是第二次读的数据还是第一次的数据
但是我把这个模块卸载,然后再加载,就是可以读到2nd data.
问题 Close.
Pos要付值