我试图将int []的地址传递给系统调用。但是,消息只有char指针的字段。
我已经尝试将int指针转换为char指针并再次返回,但数组中的结果不正确。
int pidarray[j];
m.m1_p3 = (char*)pidarray;
此外,我尝试将数组的地址存储为整数,并将其传递给消息整数字段。
int pidarray[j];
m.m1_i3 = &pidarray;
编辑:
这将是我创建的系统调用,旨在用pids填充数组并将数据复制回进程,因此我需要传递数组的地址。我打电话给系统调用,
_syscall(PM_PROC_NR, GETCHILDPIDS, &m);
它填充数组并尝试将其复制回调用进程拥有的内存空间。这样做:
sys_vircopy(SELF, (vir_bytes) &test, who_e,(vir_bytes) m_in.m1_i3, sizeof(test));
其中test是int []。
如何以这种格式发送int []的地址?
答案 0 :(得分:1)
在C中,数组被衰减为指针,特别是作为参数传递时。
所以只需将其作为指针处理。您可能需要更改新系统调用的接口(例如,可能会给它一个指针和一个大小,或者有一个约定,即pidarray
应该被终止)。
/proc/
通过现有syscalls(2)在用户土地上的Linux上执行所有操作(请参阅proc(5) ...)。