Lines Matching refs:u
142 struct unwindme *u = unwindme; in pgm_pre_handler() local
144 u->ret = test_unwind(NULL, (u->flags & UWM_REGS) ? regs : NULL, in pgm_pre_handler()
145 (u->flags & UWM_SP) ? u->sp : 0); in pgm_pre_handler()
151 static noinline int unwindme_func4(struct unwindme *u) in unwindme_func4() argument
153 if (!(u->flags & UWM_CALLER)) in unwindme_func4()
154 u->sp = current_frame_address(); in unwindme_func4()
155 if (u->flags & UWM_THREAD) { in unwindme_func4()
156 complete(&u->task_ready); in unwindme_func4()
157 wait_event(u->task_wq, kthread_should_park()); in unwindme_func4()
161 } else if (u->flags & UWM_PGM) { in unwindme_func4()
165 unwindme = u; in unwindme_func4()
187 return u->ret; in unwindme_func4()
196 (u->flags & UWM_REGS) ? ®s : NULL, in unwindme_func4()
197 (u->flags & UWM_SP) ? u->sp : 0); in unwindme_func4()
202 static noinline int unwindme_func3(struct unwindme *u) in unwindme_func3() argument
204 u->sp = current_frame_address(); in unwindme_func3()
205 return unwindme_func4(u); in unwindme_func3()
209 static noinline int unwindme_func2(struct unwindme *u) in unwindme_func2() argument
214 if (u->flags & UWM_SWITCH_STACK) { in unwindme_func2()
218 int, unwindme_func3, struct unwindme *, u); in unwindme_func2()
223 return unwindme_func3(u); in unwindme_func2()
228 static noinline int unwindme_func1(void *u) in unwindme_func1() argument
230 return unwindme_func2((struct unwindme *)u); in unwindme_func1()
235 struct unwindme *u = READ_ONCE(unwindme); in unwindme_timer_fn() local
237 if (u) { in unwindme_timer_fn()
239 u->task = NULL; in unwindme_timer_fn()
240 u->ret = unwindme_func1(u); in unwindme_timer_fn()
241 complete(&u->task_ready); in unwindme_timer_fn()
247 static int test_unwind_irq(struct unwindme *u) in test_unwind_irq() argument
249 unwindme = u; in test_unwind_irq()
250 init_completion(&u->task_ready); in test_unwind_irq()
253 wait_for_completion(&u->task_ready); in test_unwind_irq()
254 return u->ret; in test_unwind_irq()
258 static int test_unwind_task(struct kunit *test, struct unwindme *u) in test_unwind_task() argument
264 init_completion(&u->task_ready); in test_unwind_task()
265 init_waitqueue_head(&u->task_wq); in test_unwind_task()
271 task = kthread_run(unwindme_func1, u, "%s", __func__); in test_unwind_task()
280 wait_for_completion(&u->task_ready); in test_unwind_task()
283 ret = test_unwind(task, NULL, (u->flags & UWM_SP) ? u->sp : 0); in test_unwind_task()
356 struct unwindme u; in test_unwind_flags() local
361 u.flags = params->flags; in test_unwind_flags()
362 if (u.flags & UWM_THREAD) in test_unwind_flags()
363 KUNIT_EXPECT_EQ(test, 0, test_unwind_task(test, &u)); in test_unwind_flags()
364 else if (u.flags & UWM_IRQ) in test_unwind_flags()
365 KUNIT_EXPECT_EQ(test, 0, test_unwind_irq(&u)); in test_unwind_flags()
367 KUNIT_EXPECT_EQ(test, 0, unwindme_func1(&u)); in test_unwind_flags()