Lines Matching refs:u

140 	struct unwindme *u = unwindme;  in pgm_pre_handler()  local
142 u->ret = test_unwind(NULL, (u->flags & UWM_REGS) ? regs : NULL, in pgm_pre_handler()
143 (u->flags & UWM_SP) ? u->sp : 0); in pgm_pre_handler()
149 static noinline int unwindme_func4(struct unwindme *u) in unwindme_func4() argument
151 if (!(u->flags & UWM_CALLER)) in unwindme_func4()
152 u->sp = current_frame_address(); in unwindme_func4()
153 if (u->flags & UWM_THREAD) { in unwindme_func4()
154 complete(&u->task_ready); in unwindme_func4()
155 wait_event(u->task_wq, kthread_should_park()); in unwindme_func4()
159 } else if (u->flags & UWM_PGM) { in unwindme_func4()
163 unwindme = u; in unwindme_func4()
184 return u->ret; in unwindme_func4()
193 (u->flags & UWM_REGS) ? &regs : NULL, in unwindme_func4()
194 (u->flags & UWM_SP) ? u->sp : 0); in unwindme_func4()
199 static noinline int unwindme_func3(struct unwindme *u) in unwindme_func3() argument
201 u->sp = current_frame_address(); in unwindme_func3()
202 return unwindme_func4(u); in unwindme_func3()
206 static noinline int unwindme_func2(struct unwindme *u) in unwindme_func2() argument
211 if (u->flags & UWM_SWITCH_STACK) { in unwindme_func2()
215 int, unwindme_func3, struct unwindme *, u); in unwindme_func2()
220 return unwindme_func3(u); in unwindme_func2()
225 static noinline int unwindme_func1(void *u) in unwindme_func1() argument
227 return unwindme_func2((struct unwindme *)u); in unwindme_func1()
232 struct unwindme *u = READ_ONCE(unwindme); in unwindme_timer_fn() local
234 if (u) { in unwindme_timer_fn()
236 u->task = NULL; in unwindme_timer_fn()
237 u->ret = unwindme_func1(u); in unwindme_timer_fn()
238 complete(&u->task_ready); in unwindme_timer_fn()
244 static int test_unwind_irq(struct unwindme *u) in test_unwind_irq() argument
246 unwindme = u; in test_unwind_irq()
247 init_completion(&u->task_ready); in test_unwind_irq()
250 wait_for_completion(&u->task_ready); in test_unwind_irq()
251 return u->ret; in test_unwind_irq()
255 static int test_unwind_task(struct unwindme *u) in test_unwind_task() argument
261 init_completion(&u->task_ready); in test_unwind_task()
262 init_waitqueue_head(&u->task_wq); in test_unwind_task()
268 task = kthread_run(unwindme_func1, u, "%s", __func__); in test_unwind_task()
277 wait_for_completion(&u->task_ready); in test_unwind_task()
280 ret = test_unwind(task, NULL, (u->flags & UWM_SP) ? u->sp : 0); in test_unwind_task()
287 struct unwindme u; in test_unwind_flags() local
289 u.flags = flags; in test_unwind_flags()
290 if (u.flags & UWM_THREAD) in test_unwind_flags()
291 return test_unwind_task(&u); in test_unwind_flags()
292 else if (u.flags & UWM_IRQ) in test_unwind_flags()
293 return test_unwind_irq(&u); in test_unwind_flags()
295 return unwindme_func1(&u); in test_unwind_flags()