。。。

This commit is contained in:
gatieme
2016-07-19 15:56:48 +08:00
parent 0108ed450a
commit 7de520f0b3
12 changed files with 13 additions and 24 deletions
Binary file not shown.
@@ -1,19 +0,0 @@
/*************************************************************************
> File Name: 1.c
> Author: gatieme
> Created Time: Thu 02 Jun 2016 01:09:41 PM CST
************************************************************************/
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
long a = 10;
long *pa = &a;
printf("0x%x, 0x%x\n", ++a, a);
printf("%p\n", pa);
printf("%p\n", ++pa);
}
@@ -54,12 +54,13 @@ union thread_union* get_thread_union(struct thread_info *threadinfo)
unsigned long show_kstack(union thread_union *threadunion)
{
unsigned long kstack = (unsigned long)threadunion->stack;
unsigned long kstack_thread = (unsigned long)threadunion->stack;
unsigned long kstack_task = (unsigned long)threadunion->thread_info.task->stack;
printk(KERN_INFO "THREAD_SIZE : %d == %dKB", THREAD_SIZE, THREAD_SIZE / 1024);
printk(KERN_INFO "union_stack : %p\n", (unsigned long)kstack);
printk(KERN_INFO "union_stack align : %p\n", ((unsigned long)kstack & ~(THREAD_SIZE - 1)));
printk(KERN_INFO "kstack start : %p\n", (void *)(((unsigned long) kstack & ~(THREAD_SIZE - 1)) + THREAD_SIZE - 1));
printk(KERN_INFO "kstack end : %p\n", (void *)(((unsigned long) kstack & ~(THREAD_SIZE - 1)) + sizeof(struct thread_info)));
printk(KERN_INFO "union_stack : %p %p\n", (unsigned long)kstack_thread, kstack_task);
printk(KERN_INFO "union_stack align : %p\n", ((unsigned long)kstack_thread & ~(THREAD_SIZE - 1)));
printk(KERN_INFO "kstack start : %p\n", (void *)(((unsigned long) kstack_thread & ~(THREAD_SIZE - 1)) + THREAD_SIZE - 1));
printk(KERN_INFO "kstack end : %p\n", (void *)(((unsigned long) kstack_thread & ~(THREAD_SIZE - 1)) + sizeof(struct thread_info)));
}
static void print_thread_info(int pid)
@@ -75,8 +76,15 @@ static void print_thread_info(int pid)
printk(KERN_INFO "process : %s, pid : %d\n", ptask->comm, ptask->pid);
/* ptask->stack point to thread_unuion */
threadinfo = get_thread_info(ptask);
/* union thread_union
* {
* struct thread_info thread_info;
* unsigned long stack[THREAD_SIZE/sizeof(long)];
* };
*/
threadunion = get_thread_union(threadinfo);
show_kstack(threadunion);