file_operations: инициализация из несовместимого типа указателя .read - PullRequest
0 голосов
/ 23 января 2019

Я пытался протестировать функцию proc_create (), поэтому я пытаюсь понять структуру file_operations, но, к сожалению, я продолжаю сталкиваться с ошибками указателя, и на данный момент я не могу понять, что вызывает.Это код:

static size_t read_proc(struct file *filp,char *buf,size_t count, loff_t *offp) 
{

    if(count>temp)
    {
        count=temp;
    }
    temp=temp-count;
    copy_to_user(buf,msg, count);
    if(count==0)
    temp=len;

    return count;
}

struct file_operations proc_fops = {
    .read = read_proc
};

Это перезапуск make-файла:

make -C /lib/modules/4.15.0-29-generic/build M=/home/ubuntu/Desktop/XX3 modules
make[1]: Entering directory '/usr/src/linux-headers-4.15.0-29-generic'
Makefile:976: "Cannot use CONFIG_STACK_VALIDATION=y, please install libelf-dev, libelf-devel or elfutils-libelf-devel"
  CC [M]  /home/ubuntu/Desktop/XX3/proc.o
/home/ubuntu/Desktop/XX3/proc.c:27:9: error: initialization from incompatible pointer type [-Werror=incompatible-pointer-types]
 .read = read_proc
         ^~~~~~~~~
/home/ubuntu/Desktop/XX3/proc.c:27:9: note: (near initialization for ‘proc_fops.read’)
cc1: some warnings being treated as errors
scripts/Makefile.build:339: recipe for target '/home/ubuntu/Desktop/XX3/proc.o' failed
make[2]: *** [/home/ubuntu/Desktop/XX3/proc.o] Error 1
Makefile:1552: recipe for target '_module_/home/ubuntu/Desktop/XX3' failed
make[1]: *** [_module_/home/ubuntu/Desktop/XX3] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-4.15.0-29-generic'
Makefile:4: recipe for target 'all' failed
make: *** [all] Error 2
root@ubuntu:/home/ubuntu/

Просто ясно, что это ядро ​​4.20, работающее на Ubuntu, а другие модули ядра работают без сбоев, поэтому яПредположим, это то, что я вызвал.Приветствия за помощь

РЕДАКТИРОВАТЬ: Да, я вижу это сейчас.Двойное 's' на size_t мой плохой

...