void save_stack_trace_tsk()

in kernel/stacktrace.c [68:91]


void save_stack_trace_tsk(struct task_struct *tsk, struct stack_trace *trace)
{
	unsigned long *sp = NULL;

	if (!try_get_task_stack(tsk))
		return;

	if (tsk == current)
		sp = (unsigned long *) &sp;
	else {
		unsigned long ksp;

		/* Locate stack from kernel context */
		ksp = task_thread_info(tsk)->ksp;
		ksp += STACK_FRAME_OVERHEAD;	/* redzone */
		ksp += sizeof(struct pt_regs);

		sp = (unsigned long *) ksp;
	}

	unwind_stack(trace, sp, save_stack_address_nosched);

	put_task_stack(tsk);
}