我正在尝试在Linux ubuntu-studio中创建一个系统调用,它具有以下功能:
带来虚拟内存更大的进程和它所占用的字节数。
下面是系统调用的实现代码:
#include <linux/module.h>
#include <linux/printk.h>
#include <linux/sched.h>
struct pid_size{
int pid;
unsigned long size;
};
struct pid_size pid maiorMemoriaVirtual(void)
{
struct task_struct *task;
struct task_struct *maior = NULL;
for_each_process(task)
{
if(maior == NULL)
maior = task;
else if(task->it_virt_value > maior->it_virt_value)
maior = task;
}
struct pid_size retorno;
retorno.pid = maior->pid;
retorno.size = maior->it_virt_value;
return retorno;
}当编译尝试编译内核时,得到以下错误:
kernel/maiorMemoriaVirtual.c: In function ‘sys_maiorMemoriaVirtual’:
kernel/maiorMemoriaVirtual.c:19:21: error: ‘struct task_struct’ has no member named ‘it_virt_value’
else if(task->it_virt_value > maior->it_virt_value)
^
kernel/maiorMemoriaVirtual.c:19:44: error: ‘struct task_struct’ has no member named ‘it_virt_value’
else if(task->it_virt_value > maior->it_virt_value)
^
kernel/maiorMemoriaVirtual.c:23:5: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
struct pid_size retorno;
^
kernel/maiorMemoriaVirtual.c:25:25: error: ‘struct task_struct’ has no member named ‘it_virt_value’
retorno.size = maior->it_virt_value;
^
make[1]: ** [kernel/maiorMemoriaVirtual.o] Erro 1发布于 2016-08-21 01:46:33
我在做作业时遇到了类似的问题,我意识到“task_struct”结构的定义有相当多的变化。
我的猜测是,您正在查找累积的虚拟内存使用情况。你可能会发现这个链接很有用。Accumulated Virtual Memory usage
Link to the task_struct definition in kernel 2.6.36
https://stackoverflow.com/questions/34344588
复制相似问题