编写模块
#include <linux/module.h>
#include <linux/init.h>
#include <linux/interrupt.h>
#include <linux/sched.h>
static int pid;
module_param(pid,int,0644);
static int __init memtest_init(void)
{
struct task_struct* p;
struct vm_area_struct* temp;
printk("The virtual memory areas(VMA) are:\n");
p=pid_task(find_vpid(pid),PIDTYPE_PID);
temp=p->mm->mmap;
while(temp)
{
printk("start:%p\tend:%p\n",(unsigned long *)temp->vm_start,(unsigned long *)temp->vm_end);
temp=temp->vm_next;
}
return 0;
}
static void __exit memtest_exit(void)
{
printk("Unloading my module.\n");
return;
}
module_init(memtest_init);
module_exit(memtest_exit);
MODULE_LICENSE("GPL");
./exam &
insmod exam.ko pid=3694
dmesg
dmesg结果
proc/3694/maps结果
进程代码
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc,char* argvs)
{
int i;
unsigned char* buff;
buff=(char *)malloc(sizeof(char)*1024);
printf("My pid is %d \n",getpid());
for(i=0;i<60;i++)
{
sleep(60);
}
return 0;
}