static INT32 wpiStackTask(INT32 taskId) { taskDelay(1); //tt(taskId); REG_SET regs; taskRegsGet(taskId, ®s); trcStack(®s, (FUNCPTR) wpiCleanTracePrint, taskId); // The task should be resumed because it had to be suspended to get the stack trace. taskResume(taskId); return 0; }
void ACE_Stack_Trace::generate_trace (ssize_t starting_frame_offset, size_t num_frames) { const size_t MAX_FRAMES = 128; const ssize_t INITIAL_FRAME = 3; if (num_frames == 0) num_frames = MAX_FRAMES; size_t starting_frame = determine_starting_frame (INITIAL_FRAME, starting_frame_offset); ACE_Stack_Trace_stackstate state (&this->buf_[0], this->buflen_, num_frames, starting_frame); REG_SET regs; taskRegsGet ((int)taskIdSelf(), ®s); // Maybe we should take a lock here to guard stateptr? ACE_Stack_Trace_stateptr = &state; trcStack (®s, (FUNCPTR)ACE_Stack_Trace_Add_Frame_To_Buf, taskIdSelf ()); }