Я работаю над программированием ядра (Nachos) и испытываю некоторые затруднения при передаче массива аргументов из пользовательской программы в ядро ядра. Подобно argc, argv в C, C ++, пользовательская программа передает:
char *args
в системный вызов. В ядре я получаю только адрес, где находится аргумент args. Теперь мои мысли заключаются в том, что я могу привести это int к типу char *, а затем получить доступ к массиву через индекс, как в пользовательской программе. Но это дает мне не может получить доступ к ошибкам памяти.
Какие-нибудь мысли?
Я попытался получить доступ к аргументам несколькими способами, они показаны здесь:
char *argv = (char *) ReadRegister() // ReadRegister returns an int, addr of args
в дополнение к
char **argv = (char **) ReadRegister()
Затем я попытался получить каждый аргумент через
argv[i]
или же
&argv[i]
Оба дают ошибки доступа к памяти.
Задача ещё не решена.