当用户应用程序发生页面错误时,当内核处理此错误时,当前的pid是什么

时间:2014-12-16 02:52:40

标签: linux process linux-kernel malloc page-fault

我像这样运行用户应用程序:

char *buf = malloc(sizeof(int) * 100000);
int *a = (int *)buf;
int i = 0;
for(; i < 100000; i++)
{
    a[i] = i;
}

我认为它肯定会触发页面错误,因为在我们触摸这些数据之前,malloc不会分配真实的物理空间。

我修改了linux内核(3.17.6) mm / memory.c:handle_pte_fault()就像这样

if (targetPid == current->pid)
    printk(KERN_ALERT "soso : targetPid : %d, current->pid : %d\n", targetPid, current->pid); 

这里“tartgetPid”是我传入内核的用户app pid, “current”是内核的宏

但这行永远不会触发,因为当内核处理页面错误时,它的当前pid将不会是触发页面错误的用户应用程序的pid。

我想问一下 当用户应用程序发生页面错误时,当内核处理此错误时,当前的pid是什么

0 个答案:

没有答案