Vfs_write возвращает EINVAL? - PullRequest
       75

Vfs_write возвращает EINVAL?

0 голосов
/ 21 октября 2019

Я пытаюсь написать драйвер с модулем ядра Linux. Я создал специальный файл с mknod, который называется «newfile». Я выполнил команду chmod для этого файла, чтобы включить разрешение на запись, и я установил 777. Я пытаюсь записать в этот файл эту команду из терминала: echo «Запись в файл»> newfile, но я получил ошибку, и из моегоДрайвер я получил -EINVAL в vfs_write. Это мой код:

static ssize_t device_write(struct file *flip, const char *buffer, size_t len, loff_t *offset) {

    printk(KERN_INFO "writing on file; buffer is: %s   len is: %d    offest is:  %lld \n",buffer,len,offset);


    return file_write(flip, offset,buffer,len); 
}




int file_write(struct file *file, unsigned long long offset, unsigned 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);

    if(ret == -EINVAL)
    printk(KERN_INFO "is EINVAL!");

    else
     printk(KERN_INFO "not EINVAL!");
 return ret;
}

В чем проблема? Я не могу понять

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...