我正在进行内核编程(Nachos),并且在将一个参数数组从用户程序传递到内核域时遇到了一些麻烦。与cg,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]
两者都会给出内存访问错误。