From e9ed3dbbff5902d4a1b3dfb92edb47589e5b8f67 Mon Sep 17 00:00:00 2001 From: gatieme Date: Tue, 17 May 2016 14:32:48 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E4=BA=86find-task=E9=A9=B1?= =?UTF-8?q?=E5=8A=A8...?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- study/kernel/process/task/find_task/Makefile | 2 +- .../kernel/process/task/find_task/find_task.c | 6 ++-- .../process/task/find_task/print_task.c | 5 ++-- .../process/task/find_task/print_task.h | 22 +++++++++++--- .../process/task/find_task/print_vmarea.c | 29 +++++++++---------- .../process/task/find_task/print_vmarea.h | 9 ++++++ 6 files changed, 48 insertions(+), 25 deletions(-) create mode 100644 study/kernel/process/task/find_task/print_vmarea.h diff --git a/study/kernel/process/task/find_task/Makefile b/study/kernel/process/task/find_task/Makefile index 88561dc..693233a 100644 --- a/study/kernel/process/task/find_task/Makefile +++ b/study/kernel/process/task/find_task/Makefile @@ -7,7 +7,7 @@ ifneq ($(KERNELRELEASE),) MODULE_NAME := find-task RESMAIN_CORE_OBJS := find_task.o -RESMAIN_GLUE_OBJS := get_task.o +RESMAIN_GLUE_OBJS := print_task.o print_vmarea.o diff --git a/study/kernel/process/task/find_task/find_task.c b/study/kernel/process/task/find_task/find_task.c index 2643bfd..9910495 100644 --- a/study/kernel/process/task/find_task/find_task.c +++ b/study/kernel/process/task/find_task/find_task.c @@ -12,7 +12,8 @@ #include -#include "get_task.h" + +#include "print_task.h" /* * macro for find_task_by_pid in the process list @@ -37,7 +38,6 @@ module_param(PID, uint, 0400); -void print_vm_list(struct task_struct *task); void getTaskinfo(struct task_struct *task) @@ -156,7 +156,7 @@ static int init_find_task(void) break; } } - print_vm_list(pTask); + print_task(pTask); return 0; } diff --git a/study/kernel/process/task/find_task/print_task.c b/study/kernel/process/task/find_task/print_task.c index 3cab90b..a6a481c 100644 --- a/study/kernel/process/task/find_task/print_task.c +++ b/study/kernel/process/task/find_task/print_task.c @@ -13,14 +13,15 @@ #include #include +#include "print_vmarea.h" + void print_task(struct task_struct *task) { - struct vm_area_struct *tmp = task->mm->mmap; printk("process : %s, pid : %d\n", task->comm, task->pid); - printf_task_vmarea(task->mm->mmap); + print_task_vmarea(task); } diff --git a/study/kernel/process/task/find_task/print_task.h b/study/kernel/process/task/find_task/print_task.h index 523128f..579dee4 100644 --- a/study/kernel/process/task/find_task/print_task.h +++ b/study/kernel/process/task/find_task/print_task.h @@ -1,8 +1,22 @@ -#ifndef __GET_TASK_H_INCLUDE__ -#define __GET_TASK_H_INCLUDE__ +#ifndef __PRINT_TASK_H_INCLUDE__ +#define __PRINT_TASK_H_INCLUDE__ -void print_vm_list(struct task_struct *task); +#include +#include +#include + +#include +#include +#include +#include + +#include "print_vmarea.h" -#endif +void print_task(struct task_struct *task); + + + + +#endif // #define __PRINT_TASK_H_INCLUDE__ diff --git a/study/kernel/process/task/find_task/print_vmarea.c b/study/kernel/process/task/find_task/print_vmarea.c index e47b305..abab65f 100644 --- a/study/kernel/process/task/find_task/print_vmarea.c +++ b/study/kernel/process/task/find_task/print_vmarea.c @@ -31,53 +31,52 @@ static void print_vmarea(struct vm_area_struct *vmarea) static void print_vmarea_by_list(struct task_struct *task) { - struct vm_area_struct *tmp = task->mm->mmap; + struct vm_area_struct *vmarea = task->mm->mmap; printk("process : %s, pid : %d\n", task->comm, task->pid); - while (tmp != NULL) + while (vmarea != NULL) { - print_vm_area(tmp); - tmp = tmp->vm_next; + print_vmarea(vmarea); + vmarea = vmarea->vm_next; } } static void visit_rbtree_node(struct rb_node *root) { - struct vm_area_struct *vmarea NULL; + struct vm_area_struct *vmarea = NULL; vmarea = container_of(root,struct vm_area_struct,vm_rb); - print_vm_area(tmp); + print_vmarea(vmarea); } static void preorder_rbtree(struct rb_node *root) { if (root != NULL) { - visit(root); - print_rb_tree(root->rb_left); - print_rb_tree(root->rb_right); + visit_rbtree_node(root); + preorder_rbtree(root->rb_left); + preorder_rbtree(root->rb_right); } } static void print_vmarea_by_rbtree(struct task_struct *task) { - struct task_struct *p; - struct pid *k; struct rb_node *root = NULL; root = task->mm->mm_rb.rb_node; - print_rb_tree(root); + + preorder_rbtree(root); } -static void print_stack_vmarea(struct task_struct *task) +void print_task_vmarea(struct task_struct *task) { printk(KERN_ALERT "print vmarea_list"); - print_vmarea_list(task); + print_vmarea_by_list(task); printk(KERN_ALERT "print vmarea_rbtree"); - print_vmarea_rbtree(task); + print_vmarea_by_rbtree(task); } diff --git a/study/kernel/process/task/find_task/print_vmarea.h b/study/kernel/process/task/find_task/print_vmarea.h new file mode 100644 index 0000000..a927c56 --- /dev/null +++ b/study/kernel/process/task/find_task/print_vmarea.h @@ -0,0 +1,9 @@ +#ifndef __PRINT_VMAREA_H_INCLUDE__ +#define __PRINT_VMAREA_H_INCLUDE__ + + + +void print_task_vmarea(struct task_struct *task); + + +#endif // #define __PRINT_VMAREA_H_INCLUDE__