void dump_all_task_info()
{
	struct task_struct *frst_tsk;
	struct task_struct *curr_tsk;
	struct task_struct *frst_thr;
	struct task_struct *curr_thr;

	printk ( "\n" );
	printk ( " current proc: %d %s\n", current->pid, current->comm );
	printk ( "-----------------------------------------------------------------------------------\n" );
	printk ( "    pid     uTime     sTime              exec(ns)     stat     cpu     task_struct\n" );
	printk ( "-----------------------------------------------------------------------------------\n" );

	//process
	frst_tsk = &init_task;
	curr_tsk = frst_tsk;
	while(curr_tsk != NULL )
	{
		dump_one_task_info( curr_tsk, true);
		//threads
		if( curr_tsk->thread_group.next != NULL)
		{
			frst_thr = container_of( curr_tsk->thread_group.next, struct task_struct, thread_group );
			curr_thr = frst_thr;
			if( frst_thr != curr_tsk)
			{
				while( curr_thr != curr_tsk)
				{
					dump_one_task_info( curr_thr, false);
					curr_thr = container_of( curr_thr->thread_group.next, struct task_struct, thread_group);
					if( curr_thr == curr_tsk)  break;
				}
			}
		}
		curr_tsk = container_of( curr_tsk->tasks.next, struct task_struct, tasks);
		if(curr_tsk == frst_tsk) break;
	}
Esempio n. 2
0
void dump_task_info(void)
{
	struct task_struct *g, *p;

	pr_info("\n");
	pr_info("current proc: %d %s\n", current->pid, current->comm);
	pr_info("-----------------------------------------------------------------------------------\n");
	pr_info("      pid     uTime    sTime    exec(ns)    stat   cpu   task_struct\n");
	pr_info("-----------------------------------------------------------------------------------\n");

	do_each_thread(g, p) {
		if (p->state == TASK_RUNNING ||
			p->state == TASK_UNINTERRUPTIBLE)
			dump_one_task_info(p);
	} while_each_thread(g, p);

	pr_info("-----------------------------------------------------------------------------------\n");
}