XV6: PWD реализация - PullRequest
       30

XV6: PWD реализация

1 голос
/ 05 апреля 2020

Я пытался реализовать команду pwd в системе xv6. Но я получаю ошибку в исполнении sysfile. c. Следующая функция показывает ошибку: -

int sys_getcwd(void) {
    char *p;
    int n;
    if(argint(1, &n) < 0 || argptr(0, &p, n) < 0)
       return -1;
    return name_for_inode(p, n, proc->cwd);
}

Я получаю ошибку следующим образом:

error: ‘proc’ undeclared (first use in this function)
return name_for_inode(p, n, proc->cwd);

Но я также включил pro c .h в этот файл.

Ответы [ 2 ]

1 голос
/ 06 апреля 2020

proc не определено, и предупреждение, это имя struct.

Вы должны запросить текущий процесс, вы можете сделать это с помощью myproc() function

int sys_getcwd(void) {
    char *p;
    int n;
    struct proc *curproc = myproc();

    if(argint(1, &n) < 0 || argptr(0, &p, n) < 0)
       return -1;

    return name_for_inode(p, n, curproc->cwd);
}
0 голосов
/ 08 апреля 2020

Да, pro c не является глобальной переменной, поэтому инициализируйте ее текущим процессом, на котором работает процессор.

struct proc *proc = myproc();
return name_for_inode(p, n, proc->cwd);
...