内核模式下 读文件没有同步

现象:
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要付值