我正在研究内核编程(Nachos),并且在将一组参数从用户程序传递到内核域时遇到了一些麻烦。与C、C++中的argc、argv类似,用户程序通过:
char *args
进入系统调用。在内核中,我只得到 args 所在的地址。现在,我的想法是我可以将此 int 转换为 char*,然后像在用户程序中一样通过下标访问数组。但这给了我无法访问内存错误。
有什么想法吗?
我尝试了几种访问 args 的方法,它们显示在这里:
char *argv = (char *) ReadRegister() // ReadRegister returns an int, addr of args
此外
char **argv = (char **) ReadRegister()
然后我尝试通过任一方式获取每个参数
argv[i]
或者
&argv[i]
两者都给出内存访问错误。