2015-12-10 4 views
0

Я работаю над проектом №2 Пинтоса. Я реализовал большую часть системных вызовов. В ехесе системного вызова, есть тест Exec-недостающий который согласно комментировать проверки файлов этого:Что нужно сделать в exec-missing в PINTOS

/* Tries to execute a nonexistent process. 
    The exec system call must return -1. */ 

#include <syscall.h> 
#include "tests/lib.h" 
#include "tests/main.h" 

void 
test_main (void) 
{ 
    msg ("exec(\"no-such-file\"): %d", exec ("no-such-file")); 
} 

Я не могу понять наши, как проверить это в моем ехесе коде. Я правильно поставил указатель на фрейм, чего не хватает?

ответ

1

Исполняемый файл, указанный в качестве первого аргумента для «exec», загружается из функции load(), присутствующей в функции start_process().

Чтобы напомнить вам, start_process() - это функция, которая запускается как часть вновь созданного процесса. Эта функция отвечает за загрузку исполняемого файла в память и начало его запуска.

Если исполняемый файл не найден, функция load() сообщит об ошибке, возвращая 0. После этого вам необходимо освободить всю память, которая была выделена для процесса, и завершить ее, вызвав системный вызов exit() или вызвав функцию process_exit().

Вы можете начать с отладки статуса возврата функции load().