完善了list/rbtree遍历进程虚拟地址空间vm_area_struct的学习代码--驱动print_vmarea

This commit is contained in:
gatieme committed 2016-07-27 15:15:58 +08:00
1 parent 9a7e6a4362
commit 9dac4b9721
19 files changed
+2304 -67

No files matched your search

@@ -0,0 +1 @@
cmd_/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/find_task/find-task.ko := aarch64-linux-gnu-ld -EL -r -T /usr/src/linux-headers-3.14.0-20150821.kylin.3.desktop/scripts/module-common.lds --build-id -o /home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/find_task/find-task.ko /home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/find_task/find-task.o /home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/find_task/find-task.mod.o
File diff suppressed because it is too large. Load diff
@@ -0,0 +1 @@
cmd_/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/find_task/find-task.o := aarch64-linux-gnu-ld -EL -r -o /home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/find_task/find-task.o /home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/find_task/print_task.o /home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/find_task/print_vmarea.o /home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/find_task/find_task.o
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
@@ -1,8 +1,8 @@
cmd_/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/print_vmarea/print_vmarea.o := aarch64-linux-gnu-gcc -Wp,-MD,/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/print_vmarea/.print_vmarea.o.d -nostdinc -isystem /usr/lib/gcc/aarch64-linux-gnu/4.9/include -I/usr/src/linux-headers-3.14.0-20150821.kylin.3.desktop/arch/arm64/include -Iarch/arm64/include/generated -Iinclude -I/usr/src/linux-headers-3.14.0-20150821.kylin.3.desktop/arch/arm64/include/uapi -Iarch/arm64/include/generated/uapi -I/usr/src/linux-headers-3.14.0-20150821.kylin.3.desktop/include/uapi -Iinclude/generated/uapi -include /usr/src/linux-headers-3.14.0-20150821.kylin.3.desktop/include/linux/kconfig.h -D__KERNEL__ -mlittle-endian -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -mgeneral-regs-only -Wframe-larger-than=2048 -fno-stack-protector -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -g -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -DCC_HAVE_ASM_GOTO -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(print_vmarea)" -D"KBUILD_MODNAME=KBUILD_STR(print_vmarea)" -c -o /home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/print_vmarea/.tmp_print_vmarea.o /home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/print_vmarea/print_vmarea.c
cmd_/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/find_task/print_vmarea.o := aarch64-linux-gnu-gcc -Wp,-MD,/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/find_task/.print_vmarea.o.d -nostdinc -isystem /usr/lib/gcc/aarch64-linux-gnu/4.9/include -I/usr/src/linux-headers-3.14.0-20150821.kylin.3.desktop/arch/arm64/include -Iarch/arm64/include/generated -Iinclude -I/usr/src/linux-headers-3.14.0-20150821.kylin.3.desktop/arch/arm64/include/uapi -Iarch/arm64/include/generated/uapi -I/usr/src/linux-headers-3.14.0-20150821.kylin.3.desktop/include/uapi -Iinclude/generated/uapi -include /usr/src/linux-headers-3.14.0-20150821.kylin.3.desktop/include/linux/kconfig.h -D__KERNEL__ -mlittle-endian -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -mgeneral-regs-only -Wframe-larger-than=2048 -fno-stack-protector -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -g -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -DCC_HAVE_ASM_GOTO -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(print_vmarea)" -D"KBUILD_MODNAME=KBUILD_STR(find_task)" -c -o /home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/find_task/.tmp_print_vmarea.o /home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/find_task/print_vmarea.c
source_/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/print_vmarea/print_vmarea.o := /home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/print_vmarea/print_vmarea.c
source_/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/find_task/print_vmarea.o := /home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/find_task/print_vmarea.c
deps_/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/print_vmarea/print_vmarea.o := \
deps_/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/find_task/print_vmarea.o := \
include/linux/module.h \
$(wildcard include/config/sysfs.h) \
$(wildcard include/config/modules.h) \
@@ -567,50 +567,7 @@ deps_/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01
$(wildcard include/config/vm/event/counters.h) \
include/linux/vm_event_item.h \
$(wildcard include/config/migration.h) \
include/generated/uapi/linux/version.h \
include/linux/proc_fs.h \
include/linux/fs.h \
$(wildcard include/config/fs/posix/acl.h) \
$(wildcard include/config/quota.h) \
$(wildcard include/config/fsnotify.h) \
$(wildcard include/config/ima.h) \
$(wildcard include/config/debug/writecount.h) \
$(wildcard include/config/file/locking.h) \
$(wildcard include/config/fs/xip.h) \
include/linux/kdev_t.h \
include/uapi/linux/kdev_t.h \
include/linux/dcache.h \
include/linux/rculist_bl.h \
include/linux/list_bl.h \
include/linux/lockref.h \
$(wildcard include/config/arch/use/cmpxchg/lockref.h) \
include/linux/path.h \
include/linux/list_lru.h \
include/linux/radix-tree.h \
include/linux/semaphore.h \
/usr/src/linux-headers-3.14.0-20150821.kylin.3.desktop/include/uapi/linux/fiemap.h \
include/linux/migrate_mode.h \
include/linux/percpu-rwsem.h \
include/uapi/linux/fs.h \
/usr/src/linux-headers-3.14.0-20150821.kylin.3.desktop/include/uapi/linux/limits.h \
/usr/src/linux-headers-3.14.0-20150821.kylin.3.desktop/include/uapi/linux/ioctl.h \
arch/arm64/include/generated/asm/ioctl.h \
include/asm-generic/ioctl.h \
include/uapi/asm-generic/ioctl.h \
include/linux/quota.h \
$(wildcard include/config/quota/netlink/interface.h) \
/usr/src/linux-headers-3.14.0-20150821.kylin.3.desktop/include/uapi/linux/dqblk_xfs.h \
include/linux/dqblk_v1.h \
include/linux/dqblk_v2.h \
include/linux/dqblk_qtree.h \
include/linux/projid.h \
include/uapi/linux/quota.h \
include/linux/nfs_fs_i.h \
include/linux/fcntl.h \
include/uapi/linux/fcntl.h \
/usr/src/linux-headers-3.14.0-20150821.kylin.3.desktop/arch/arm64/include/uapi/asm/fcntl.h \
/usr/src/linux-headers-3.14.0-20150821.kylin.3.desktop/include/uapi/asm-generic/fcntl.h \
/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/print_vmarea/print_vmarea.o: $(deps_/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/print_vmarea/print_vmarea.o)
/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/find_task/print_vmarea.o: $(deps_/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/find_task/print_vmarea.o)
$(deps_/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/print_vmarea/print_vmarea.o):
$(deps_/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/find_task/print_vmarea.o):
@@ -0,0 +1,2 @@
/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/find_task/find-task.ko
/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/find_task/print_task.o /home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/find_task/print_vmarea.o /home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/find_task/find_task.o
@@ -18,14 +18,11 @@ static const struct modversion_info ____versions[]
__used
__attribute__((section("__versions"))) = {
{ 0x146be775, __VMLINUX_SYMBOL_STR(module_layout) },
{ 0xb6b46a7c, __VMLINUX_SYMBOL_STR(param_ops_int) },
{ 0x7344e2ef, __VMLINUX_SYMBOL_STR(pid_task) },
{ 0x8e9cdd4c, __VMLINUX_SYMBOL_STR(find_vpid) },
{ 0xe914e41e, __VMLINUX_SYMBOL_STR(strcpy) },
{ 0x98cf60b3, __VMLINUX_SYMBOL_STR(strlen) },
{ 0xe2d5255a, __VMLINUX_SYMBOL_STR(strcmp) },
{ 0xdcb764ad, __VMLINUX_SYMBOL_STR(memset) },
{ 0x27e1a049, __VMLINUX_SYMBOL_STR(printk) },
{ 0x7344e2ef, __VMLINUX_SYMBOL_STR(pid_task) },
{ 0xa5cc83f6, __VMLINUX_SYMBOL_STR(init_task) },
{ 0x47c8baf4, __VMLINUX_SYMBOL_STR(param_ops_uint) },
};
static const char __module_depends[]
@@ -1 +1 @@
kernel//home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/print_vmarea/print_vmarea.ko
kernel//home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/find_task/find-task.ko
@@ -0,0 +1 @@
cmd_/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/list_process/list_process.ko := aarch64-linux-gnu-ld -EL -r -T /usr/src/linux-headers-3.14.0-20150821.kylin.3.desktop/scripts/module-common.lds --build-id -o /home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/list_process/list_process.ko /home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/list_process/list_process.o /home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/list_process/list_process.mod.o
@@ -1,8 +1,8 @@
cmd_/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/print_vmarea/print_vmarea.mod.o := aarch64-linux-gnu-gcc -Wp,-MD,/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/print_vmarea/.print_vmarea.mod.o.d -nostdinc -isystem /usr/lib/gcc/aarch64-linux-gnu/4.9/include -I/usr/src/linux-headers-3.14.0-20150821.kylin.3.desktop/arch/arm64/include -Iarch/arm64/include/generated -Iinclude -I/usr/src/linux-headers-3.14.0-20150821.kylin.3.desktop/arch/arm64/include/uapi -Iarch/arm64/include/generated/uapi -I/usr/src/linux-headers-3.14.0-20150821.kylin.3.desktop/include/uapi -Iinclude/generated/uapi -include /usr/src/linux-headers-3.14.0-20150821.kylin.3.desktop/include/linux/kconfig.h -D__KERNEL__ -mlittle-endian -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -mgeneral-regs-only -Wframe-larger-than=2048 -fno-stack-protector -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -g -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -DCC_HAVE_ASM_GOTO -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(print_vmarea.mod)" -D"KBUILD_MODNAME=KBUILD_STR(print_vmarea)" -DMODULE -c -o /home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/print_vmarea/print_vmarea.mod.o /home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/print_vmarea/print_vmarea.mod.c
cmd_/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/list_process/list_process.mod.o := aarch64-linux-gnu-gcc -Wp,-MD,/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/list_process/.list_process.mod.o.d -nostdinc -isystem /usr/lib/gcc/aarch64-linux-gnu/4.9/include -I/usr/src/linux-headers-3.14.0-20150821.kylin.3.desktop/arch/arm64/include -Iarch/arm64/include/generated -Iinclude -I/usr/src/linux-headers-3.14.0-20150821.kylin.3.desktop/arch/arm64/include/uapi -Iarch/arm64/include/generated/uapi -I/usr/src/linux-headers-3.14.0-20150821.kylin.3.desktop/include/uapi -Iinclude/generated/uapi -include /usr/src/linux-headers-3.14.0-20150821.kylin.3.desktop/include/linux/kconfig.h -D__KERNEL__ -mlittle-endian -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -mgeneral-regs-only -Wframe-larger-than=2048 -fno-stack-protector -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -g -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -DCC_HAVE_ASM_GOTO -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(list_process.mod)" -D"KBUILD_MODNAME=KBUILD_STR(list_process)" -DMODULE -c -o /home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/list_process/list_process.mod.o /home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/list_process/list_process.mod.c
source_/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/print_vmarea/print_vmarea.mod.o := /home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/print_vmarea/print_vmarea.mod.c
source_/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/list_process/list_process.mod.o := /home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/list_process/list_process.mod.c
deps_/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/print_vmarea/print_vmarea.mod.o := \
deps_/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/list_process/list_process.mod.o := \
$(wildcard include/config/module/unload.h) \
include/linux/module.h \
$(wildcard include/config/sysfs.h) \
@@ -544,6 +544,6 @@ deps_/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01
include/linux/vermagic.h \
include/generated/utsrelease.h \
/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/print_vmarea/print_vmarea.mod.o: $(deps_/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/print_vmarea/print_vmarea.mod.o)
/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/list_process/list_process.mod.o: $(deps_/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/list_process/list_process.mod.o)
$(deps_/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/print_vmarea/print_vmarea.mod.o):
$(deps_/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/list_process/list_process.mod.o):
File diff suppressed because it is too large. Load diff
@@ -1,2 +1,2 @@
/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/print_vmarea/print_vmarea.ko
/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/print_vmarea/print_vmarea.o
/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/list_process/list_process.ko
/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/list_process/list_process.o
Whitespace-only changes.
@@ -0,0 +1,30 @@
#include <linux/module.h>
#include <linux/vermagic.h>
#include <linux/compiler.h>
MODULE_INFO(vermagic, VERMAGIC_STRING);
__visible struct module __this_module
__attribute__((section(".gnu.linkonce.this_module"))) = {
.name = KBUILD_MODNAME,
.init = init_module,
#ifdef CONFIG_MODULE_UNLOAD
.exit = cleanup_module,
#endif
.arch = MODULE_ARCH_INIT,
};
static const struct modversion_info ____versions[]
__used
__attribute__((section("__versions"))) = {
{ 0x146be775, __VMLINUX_SYMBOL_STR(module_layout) },
{ 0x47c8baf4, __VMLINUX_SYMBOL_STR(param_ops_uint) },
{ 0xa5cc83f6, __VMLINUX_SYMBOL_STR(init_task) },
{ 0x27e1a049, __VMLINUX_SYMBOL_STR(printk) },
};
static const char __module_depends[]
__used
__attribute__((section(".modinfo"))) =
"depends=";
@@ -0,0 +1 @@
kernel//home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/list_process/list_process.ko
@@ -1 +0,0 @@
cmd_/home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/print_vmarea/print_vmarea.ko := aarch64-linux-gnu-ld -EL -r -T /usr/src/linux-headers-3.14.0-20150821.kylin.3.desktop/scripts/module-common.lds --build-id -o /home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/print_vmarea/print_vmarea.ko /home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/print_vmarea/print_vmarea.o /home/gatieme/Work/GitHub/LDD-LinuxDeviceDrivers/study/kernel/01-process/01-task/print_vmarea/print_vmarea.mod.o
@@ -47,8 +47,8 @@ struct dentry* file_entry(struct file *pfile)
void print_vm_file(struct vm_area_struct *vmarea)
{
struct file *vmfile = vmarea->vm_file;
struct dentry *den = file_entry(vmfile);
struct file *vmfile = NULL;
struct dentry *den = NULL;
struct dentry *pPath = NULL;
@@ -61,6 +61,8 @@ void print_vm_file(struct vm_area_struct *vmarea)
}
else // the vm_files
{
vmfile = vmarea->vm_file;
den = file_entry(vmfile);
// i find in linux-kernel-3.16
// http://lxr.free-electrons.com/source/include/linux/fs.h?v=3.16#L753
// struct path f_path;
@@ -89,9 +91,9 @@ void print_vm_file(struct vm_area_struct *vmarea)
{
break;
}
}
printk("%s\n", file);
/*
do
{
end = file + strlen(file) - 1;
@@ -106,6 +108,7 @@ void print_vm_file(struct vm_area_struct *vmarea)
printk("/%s", start);
*start = '\0';
} while(start > file);
*/
}
}
}