读书人

kernel中遍历全部进程

发布时间: 2013-10-19 20:58:22 作者: rapoo

kernel中遍历所有进程

看下具体的宏定义实现:

#define for_each_process(p) \for (p = &init_task ; (p = next_task(p)) != &init_task ; )


在看下具体例子,打印所有进程的函数调用栈:

static void wdt_report_info (void){    struct task_struct *task ;    task = &init_task ;        printk ("Qwdt: -- watchdog time out\n") ;    for_each_process (task)    {        if (task->state == 0)        {            printk ("PID: %d, name: %s\n backtrace:\n", task->pid, task->comm) ;            show_stack (task, NULL) ;            printk ("\n") ;        }    }    printk ("backtrace of current task:\n") ;    show_stack (NULL, NULL) ; }


读书人网 >编程

热点推荐