首页 > 解决方案 > 为什么我用ramfs将数据写入页面时vim会报告错误

问题描述

我使用 my_do_sync_read 和 my_do_sync_write 函数替换 ramfs 源代码中的 do_sync_read 和 do_sync_write 来加密写入页面的数据。从 nano 写入文件或从 dd 指令块是成功的。但是当我使用vim保存文件时,它无法写入并显示:ml_upd_block0():没有得到块0? 在此处输入图像描述.

以下代码是我的简单测试并遇到了同样的问题:


ssize_t my_do_sync_read(struct file *filp,  char __user *buf, size_t len, loff_t *ppos)
{
  ssize_t size_ret; 
  int i;
  size_ret=do_sync_read(filp, buf, len, ppos);
  for(i=0;i<size_ret;i++)
      buf[i]^=0xff;
  return size_ret;
}

ssize_t my_do_sync_write(struct file *filp,  char __user *buf, size_t len, loff_t *ppos)
{
  int i;
  for(i=0;i<len;i++)
      buf[i]^=0xff;
  return do_sync_write(filp, buf, len, ppos);
}

标签: linux-kernelfilesystemslinux-device-driverembedded-linux

解决方案


推荐阅读