ошибка: инициализация из несовместимого типа указателя - PullRequest
0 голосов
/ 11 октября 2019

В рамках проекта домашней работы мне нужно создать 4 новых системных вызова в XV6. Я написал и нашел инструкции о том, как добавить системный вызов в XV6. Во время компиляции xv6 я получаю сообщение об ошибке

 [SYS_incrementMagic] sys_incrementMagic,
 ^
syscall.c:128:1: error: (near initialization for ‘syscalls[22]’) [-Werror]
syscall.c:130:1: error: initialization from incompatible pointer type [-Werror]
 [SYS_getCurrentProcessName] sys_getCurrentProcessName,
 ^
syscall.c:130:1: error: (near initialization for ‘syscalls[24]’) [-Werror]
syscall.c:131:1: error: initialization from incompatible pointer type [-Werror]
 [SYS_modifyCurrentProcessName] sys_modifyCurrentProcessName,
 ^
syscall.c:131:1: error: (near initialization for ‘syscalls[25]’) [-Werror]

, поскольку один из системных вызовов не сообщает об ошибке при компиляции. Я сравниваю этот с другими системными вызовами, чтобы найти различия между ними.

Я ссылался на видео и веб-сайты, чтобы увидеть, как другие создают свои системные вызовы, чтобы убедиться, что я делаю это правильно.

В sysproc.c это строки сообщения об ошибке

extern int sys_getMagic(void);
extern void sys_getCurrentProcessName(void);
extern void sys_modifyCurrentProcessName(char*);

static int (*syscalls[])(void) = {
[SYS_incrementMagic] sys_incrementMagic,
[SYS_getMagic] sys_getMagic,
[SYS_getCurrentProcessName] sys_getCurrentProcessName,
[SYS_modifyCurrentProcessName] sys_modifyCurrentProcessName,
};

Чего мне не хватает, и возможно ли, что сообщение об ошибке возникло в другом файле, отличном от sysproc.c?

...