From cbfac406cd6bce20cb0468769c454dc0d2125167 Mon Sep 17 00:00:00 2001 From: gatieme Date: Mon, 16 May 2016 22:14:05 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=AF=B9=E6=AF=94crs?= =?UTF-8?q?=E5=92=8Cpgd=E7=9A=84=E5=80=BC=E7=9A=84=E9=A9=B1=E5=8A=A8...?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- study/kernel/memory/cr3_pgd/Makefile | 18 ++++++++++++++++ study/kernel/memory/cr3_pgd/crs_pgd.c | 31 +++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 study/kernel/memory/cr3_pgd/Makefile create mode 100644 study/kernel/memory/cr3_pgd/crs_pgd.c diff --git a/study/kernel/memory/cr3_pgd/Makefile b/study/kernel/memory/cr3_pgd/Makefile new file mode 100644 index 0000000..c655fa9 --- /dev/null +++ b/study/kernel/memory/cr3_pgd/Makefile @@ -0,0 +1,18 @@ +ifneq ($(KERNELRELEASE),) + +obj-m := crs_pgd.o + +else + +KERNELDIR ?= /lib/modules/$(shell uname -r)/build + +PWD := $(shell pwd) + +all: + make -C $(KERNELDIR) M=$(PWD) modules + +clean: + make -C $(KERNELDIR) M=$(PWD) clean + + +endif diff --git a/study/kernel/memory/cr3_pgd/crs_pgd.c b/study/kernel/memory/cr3_pgd/crs_pgd.c new file mode 100644 index 0000000..6cd2b1a --- /dev/null +++ b/study/kernel/memory/cr3_pgd/crs_pgd.c @@ -0,0 +1,31 @@ +//#include +#include +#include +#include +#include + +static unsigned long read_pgd(void) +{ + return (unsigned long)current->mm->pgd; +} + +static int __init init_cr3_pgd(void) +{ + unsigned long cr3; + unsigned long pgd = 0; + + cr3 = read_cr3(); + printk("cr3----------------->0x%lx\n",cr3); + pgd = __pa(read_pgd()); + printk("pgd----------------->0x%lx\n",pgd); + return 0; +} + +static void __exit exit_cr3_pgd(void) +{ + printk("--------------------->exit!\n"); + return ; +} + +module_init(init_cr3_pgd); +module_exit(exit_cr3_pgd);