c语言 - minix - 将数据从系统调用地址复制回调用进程



因此,我需要使用 MINIX 内核调用sys_vircopy将填充数组(int)从我正在编写的系统调用中复制回调用过程。

当前设置如下,在调用过程中(省略了任何不重要的内容):

int *results = malloc(...); // allocate required mem
message m;
m.m1_i1 = *results; 
// is this the correct way to send the address of the array via a message?
_syscall(..., MYSYSCALL, &m); // syscall to relevant server

因此,由于我无法直接发送int数组(没有消息类型),因此我正在尝试在消息中发送数组的地址。

然后,在我的系统调用中:

int nelements;
int *results = &m_in.m1_i1;
// is this the correct way to receive the array at the address in the message?
// Some code here filling the array
sys_vircopy(SELF, *results, who_e, m_in.m1_i1, sizeof(int) * nelements);
// is this the correct way to send the address of the filled array...
// ...back to the address holding the array in the calling process?

所以在这里我尝试使用sys_vircopy然后将我的数组的地址 (*results), 从当前进程 (SELF) 发送回调用进程 (who_e),地址指向其数组 (m_in.m1_i1)。

但是,这似乎不起作用。我觉得我一定误解了消息,和/或将地址从一个进程发送到另一个进程。不幸的是,网上没有太多关于使用这个sys_vircopy功能的记录来帮助我。谁能提供任何指示?

此外,我必须在这里使用sys_vircopy

没有旧D的痕迹 |T|S段,所以我想这是MINIX 3.2或更新的。您可能需要使用内存授予(又名安全副本)来处理保护问题,而不是尝试使用较低级别的vircopy

相关内容

  • 没有找到相关文章

最新更新