Lines Matching +full:- +full:n
10 * See the COPYING.LIB file in the top-level directory.
18 #include "qemu/error-report.h"
19 #include "qemu/coroutine-core.h"
20 #include "qemu/main-loop.h"
26 int n; member
34 while (data->active > 0) { in wait_until_inactive()
43 int n; member
50 int n; member
59 if (++data->n < data->max) { in bh_test_cb()
60 qemu_bh_schedule(data->bh); in bh_test_cb()
67 if (++data->n < data->max) { in timer_test_cb()
68 timer_mod(&data->timer, in timer_test_cb()
69 qemu_clock_get_ns(data->clock_type) + data->ns); in timer_test_cb()
80 if (++data->n < data->max) { in bh_delete_cb()
81 qemu_bh_schedule(data->bh); in bh_delete_cb()
83 qemu_bh_delete(data->bh); in bh_delete_cb()
84 data->bh = NULL; in bh_delete_cb()
92 data->n++; in event_ready_cb()
93 if (data->active > 0) { in event_ready_cb()
94 data->active--; in event_ready_cb()
96 if (data->auto_set && data->active) { in event_ready_cb()
111 BHTestData data = { .n = 0 }; in test_bh_schedule()
115 g_assert_cmpint(data.n, ==, 0); in test_bh_schedule()
118 g_assert_cmpint(data.n, ==, 1); in test_bh_schedule()
121 g_assert_cmpint(data.n, ==, 1); in test_bh_schedule()
127 BHTestData data = { .n = 0, .max = 10 }; in test_bh_schedule10()
131 g_assert_cmpint(data.n, ==, 0); in test_bh_schedule10()
134 g_assert_cmpint(data.n, ==, 1); in test_bh_schedule10()
137 g_assert_cmpint(data.n, ==, 2); in test_bh_schedule10()
139 while (data.n < 10) { in test_bh_schedule10()
142 g_assert_cmpint(data.n, ==, 10); in test_bh_schedule10()
145 g_assert_cmpint(data.n, ==, 10); in test_bh_schedule10()
151 BHTestData data = { .n = 0 }; in test_bh_cancel()
155 g_assert_cmpint(data.n, ==, 0); in test_bh_cancel()
158 g_assert_cmpint(data.n, ==, 0); in test_bh_cancel()
161 g_assert_cmpint(data.n, ==, 0); in test_bh_cancel()
167 BHTestData data = { .n = 0 }; in test_bh_delete()
171 g_assert_cmpint(data.n, ==, 0); in test_bh_delete()
174 g_assert_cmpint(data.n, ==, 0); in test_bh_delete()
177 g_assert_cmpint(data.n, ==, 0); in test_bh_delete()
182 BHTestData data1 = { .n = 0, .max = 1 }; in test_bh_delete_from_cb()
187 g_assert_cmpint(data1.n, ==, 0); in test_bh_delete_from_cb()
189 while (data1.n < data1.max) { in test_bh_delete_from_cb()
192 g_assert_cmpint(data1.n, ==, data1.max); in test_bh_delete_from_cb()
200 BHTestData data1 = { .n = 0, .max = 1 }; in test_bh_delete_from_cb_many()
201 BHTestData data2 = { .n = 0, .max = 3 }; in test_bh_delete_from_cb_many()
202 BHTestData data3 = { .n = 0, .max = 2 }; in test_bh_delete_from_cb_many()
203 BHTestData data4 = { .n = 0, .max = 4 }; in test_bh_delete_from_cb_many()
214 g_assert_cmpint(data1.n, ==, 0); in test_bh_delete_from_cb_many()
215 g_assert_cmpint(data2.n, ==, 0); in test_bh_delete_from_cb_many()
216 g_assert_cmpint(data3.n, ==, 0); in test_bh_delete_from_cb_many()
217 g_assert_cmpint(data4.n, ==, 0); in test_bh_delete_from_cb_many()
220 g_assert_cmpint(data1.n, ==, 1); in test_bh_delete_from_cb_many()
221 g_assert_cmpint(data2.n, ==, 1); in test_bh_delete_from_cb_many()
222 g_assert_cmpint(data3.n, ==, 1); in test_bh_delete_from_cb_many()
223 g_assert_cmpint(data4.n, ==, 1); in test_bh_delete_from_cb_many()
226 while (data1.n < data1.max || in test_bh_delete_from_cb_many()
227 data2.n < data2.max || in test_bh_delete_from_cb_many()
228 data3.n < data3.max || in test_bh_delete_from_cb_many()
229 data4.n < data4.max) { in test_bh_delete_from_cb_many()
232 g_assert_cmpint(data1.n, ==, data1.max); in test_bh_delete_from_cb_many()
233 g_assert_cmpint(data2.n, ==, data2.max); in test_bh_delete_from_cb_many()
234 g_assert_cmpint(data3.n, ==, data3.max); in test_bh_delete_from_cb_many()
235 g_assert_cmpint(data4.n, ==, data4.max); in test_bh_delete_from_cb_many()
244 BHTestData data = { .n = 0 }; in test_bh_flush()
248 g_assert_cmpint(data.n, ==, 0); in test_bh_flush()
251 g_assert_cmpint(data.n, ==, 1); in test_bh_flush()
254 g_assert_cmpint(data.n, ==, 1); in test_bh_flush()
260 EventNotifierTestData data = { .n = 0, .active = 0 }; in test_set_event_notifier()
264 g_assert_cmpint(data.n, ==, 0); in test_set_event_notifier()
268 g_assert_cmpint(data.n, ==, 0); in test_set_event_notifier()
274 EventNotifierTestData data = { .n = 0, .active = 1 }; in test_wait_event_notifier()
278 g_assert_cmpint(data.n, ==, 0); in test_wait_event_notifier()
283 g_assert_cmpint(data.n, ==, 1); in test_wait_event_notifier()
287 g_assert_cmpint(data.n, ==, 1); in test_wait_event_notifier()
292 g_assert_cmpint(data.n, ==, 1); in test_wait_event_notifier()
299 EventNotifierTestData data = { .n = 0, .active = 10, .auto_set = true }; in test_flush_event_notifier()
303 g_assert_cmpint(data.n, ==, 0); in test_flush_event_notifier()
308 g_assert_cmpint(data.n, ==, 1); in test_flush_event_notifier()
313 g_assert_cmpint(data.n, ==, 10); in test_flush_event_notifier()
324 EventNotifierTestData data = { .n = 0 }; in test_wait_event_notifier_noflush()
325 EventNotifierTestData dummy = { .n = 0, .active = 1 }; in test_wait_event_notifier_noflush()
331 g_assert_cmpint(data.n, ==, 0); in test_wait_event_notifier_noflush()
337 data.n = 0; in test_wait_event_notifier_noflush()
345 g_assert_cmpint(data.n, ==, 1); in test_wait_event_notifier_noflush()
347 g_assert_cmpint(data.n, ==, 1); in test_wait_event_notifier_noflush()
351 g_assert_cmpint(data.n, ==, 2); in test_wait_event_notifier_noflush()
353 g_assert_cmpint(data.n, ==, 2); in test_wait_event_notifier_noflush()
357 g_assert_cmpint(data.n, ==, 2); in test_wait_event_notifier_noflush()
358 g_assert_cmpint(dummy.n, ==, 1); in test_wait_event_notifier_noflush()
366 g_assert_cmpint(data.n, ==, 2); in test_wait_event_notifier_noflush()
373 TimerTestData data = { .n = 0, .ctx = ctx, .ns = SCALE_MS * 750LL, in test_timer_schedule()
391 g_assert_cmpint(data.n, ==, 0); in test_timer_schedule()
399 g_assert_cmpint(data.n, ==, 0); in test_timer_schedule()
402 g_assert_cmpint(data.n, ==, 0); in test_timer_schedule()
405 g_assert_cmpint(data.n, ==, 1); in test_timer_schedule()
411 g_assert_cmpint(data.n, ==, 1); in test_timer_schedule()
414 g_assert_cmpint(data.n, ==, 2); in test_timer_schedule()
419 g_assert_cmpint(data.n, ==, 2); in test_timer_schedule()
430 * - sometimes both the AioContext and the glib main loop wake
433 * - there is no exact replacement for a blocking wait.
436 * non-blocking loop like "while (g_main_context_iteration(NULL, false)"
450 BHTestData data = { .n = 0 }; in test_source_bh_schedule()
454 g_assert_cmpint(data.n, ==, 0); in test_source_bh_schedule()
457 g_assert_cmpint(data.n, ==, 1); in test_source_bh_schedule()
460 g_assert_cmpint(data.n, ==, 1); in test_source_bh_schedule()
466 BHTestData data = { .n = 0, .max = 10 }; in test_source_bh_schedule10()
470 g_assert_cmpint(data.n, ==, 0); in test_source_bh_schedule10()
473 g_assert_cmpint(data.n, ==, 1); in test_source_bh_schedule10()
476 g_assert_cmpint(data.n, ==, 2); in test_source_bh_schedule10()
479 g_assert_cmpint(data.n, ==, 10); in test_source_bh_schedule10()
482 g_assert_cmpint(data.n, ==, 10); in test_source_bh_schedule10()
488 BHTestData data = { .n = 0 }; in test_source_bh_cancel()
492 g_assert_cmpint(data.n, ==, 0); in test_source_bh_cancel()
495 g_assert_cmpint(data.n, ==, 0); in test_source_bh_cancel()
498 g_assert_cmpint(data.n, ==, 0); in test_source_bh_cancel()
504 BHTestData data = { .n = 0 }; in test_source_bh_delete()
508 g_assert_cmpint(data.n, ==, 0); in test_source_bh_delete()
511 g_assert_cmpint(data.n, ==, 0); in test_source_bh_delete()
514 g_assert_cmpint(data.n, ==, 0); in test_source_bh_delete()
519 BHTestData data1 = { .n = 0, .max = 1 }; in test_source_bh_delete_from_cb()
524 g_assert_cmpint(data1.n, ==, 0); in test_source_bh_delete_from_cb()
527 g_assert_cmpint(data1.n, ==, data1.max); in test_source_bh_delete_from_cb()
536 BHTestData data1 = { .n = 0, .max = 1 }; in test_source_bh_delete_from_cb_many()
537 BHTestData data2 = { .n = 0, .max = 3 }; in test_source_bh_delete_from_cb_many()
538 BHTestData data3 = { .n = 0, .max = 2 }; in test_source_bh_delete_from_cb_many()
539 BHTestData data4 = { .n = 0, .max = 4 }; in test_source_bh_delete_from_cb_many()
550 g_assert_cmpint(data1.n, ==, 0); in test_source_bh_delete_from_cb_many()
551 g_assert_cmpint(data2.n, ==, 0); in test_source_bh_delete_from_cb_many()
552 g_assert_cmpint(data3.n, ==, 0); in test_source_bh_delete_from_cb_many()
553 g_assert_cmpint(data4.n, ==, 0); in test_source_bh_delete_from_cb_many()
556 g_assert_cmpint(data1.n, ==, 1); in test_source_bh_delete_from_cb_many()
557 g_assert_cmpint(data2.n, ==, 1); in test_source_bh_delete_from_cb_many()
558 g_assert_cmpint(data3.n, ==, 1); in test_source_bh_delete_from_cb_many()
559 g_assert_cmpint(data4.n, ==, 1); in test_source_bh_delete_from_cb_many()
563 g_assert_cmpint(data1.n, ==, data1.max); in test_source_bh_delete_from_cb_many()
564 g_assert_cmpint(data2.n, ==, data2.max); in test_source_bh_delete_from_cb_many()
565 g_assert_cmpint(data3.n, ==, data3.max); in test_source_bh_delete_from_cb_many()
566 g_assert_cmpint(data4.n, ==, data4.max); in test_source_bh_delete_from_cb_many()
575 BHTestData data = { .n = 0 }; in test_source_bh_flush()
579 g_assert_cmpint(data.n, ==, 0); in test_source_bh_flush()
582 g_assert_cmpint(data.n, ==, 1); in test_source_bh_flush()
585 g_assert_cmpint(data.n, ==, 1); in test_source_bh_flush()
591 EventNotifierTestData data = { .n = 0, .active = 0 }; in test_source_set_event_notifier()
595 g_assert_cmpint(data.n, ==, 0); in test_source_set_event_notifier()
599 g_assert_cmpint(data.n, ==, 0); in test_source_set_event_notifier()
605 EventNotifierTestData data = { .n = 0, .active = 1 }; in test_source_wait_event_notifier()
609 g_assert_cmpint(data.n, ==, 0); in test_source_wait_event_notifier()
614 g_assert_cmpint(data.n, ==, 1); in test_source_wait_event_notifier()
618 g_assert_cmpint(data.n, ==, 1); in test_source_wait_event_notifier()
623 g_assert_cmpint(data.n, ==, 1); in test_source_wait_event_notifier()
630 EventNotifierTestData data = { .n = 0, .active = 10, .auto_set = true }; in test_source_flush_event_notifier()
634 g_assert_cmpint(data.n, ==, 0); in test_source_flush_event_notifier()
639 g_assert_cmpint(data.n, ==, 1); in test_source_flush_event_notifier()
644 g_assert_cmpint(data.n, ==, 10); in test_source_flush_event_notifier()
655 EventNotifierTestData data = { .n = 0 }; in test_source_wait_event_notifier_noflush()
656 EventNotifierTestData dummy = { .n = 0, .active = 1 }; in test_source_wait_event_notifier_noflush()
662 g_assert_cmpint(data.n, ==, 0); in test_source_wait_event_notifier_noflush()
668 data.n = 0; in test_source_wait_event_notifier_noflush()
676 g_assert_cmpint(data.n, ==, 1); in test_source_wait_event_notifier_noflush()
678 g_assert_cmpint(data.n, ==, 1); in test_source_wait_event_notifier_noflush()
682 g_assert_cmpint(data.n, ==, 2); in test_source_wait_event_notifier_noflush()
684 g_assert_cmpint(data.n, ==, 2); in test_source_wait_event_notifier_noflush()
688 g_assert_cmpint(data.n, ==, 2); in test_source_wait_event_notifier_noflush()
689 g_assert_cmpint(dummy.n, ==, 1); in test_source_wait_event_notifier_noflush()
697 g_assert_cmpint(data.n, ==, 2); in test_source_wait_event_notifier_noflush()
704 TimerTestData data = { .n = 0, .ctx = ctx, .ns = SCALE_MS * 750LL, in test_source_timer_schedule()
723 g_assert_cmpint(data.n, ==, 0); in test_source_timer_schedule()
726 g_assert_cmpint(data.n, ==, 0); in test_source_timer_schedule()
729 g_assert_cmpint(data.n, ==, 1); in test_source_timer_schedule()
732 while (data.n < 2) { in test_source_timer_schedule()
736 g_assert_cmpint(data.n, ==, 2); in test_source_timer_schedule()
763 for (data->i = 0; data->i < data->max; data->i++) { in chain()
765 aio_co_enter(ctx, data->other); in chain()
784 g_assert_cmpint(data_b.i, ==, data_b.max - 1); in test_queue_chaining()
842 g_test_add_func("/aio/bh/callback-delete/one", test_bh_delete_from_cb); in main()
843 g_test_add_func("/aio/bh/callback-delete/many", test_bh_delete_from_cb_many); in main()
845 g_test_add_func("/aio/event/add-remove", test_set_event_notifier); in main()
847 g_test_add_func("/aio/event/wait/no-flush-cb", test_wait_event_notifier_noflush); in main()
851 g_test_add_func("/aio/coroutine/queue-chaining", test_queue_chaining); in main()
852 g_test_add_func("/aio/coroutine/worker-thread-co-enter", test_worker_thread_co_enter); in main()
854 g_test_add_func("/aio-gsource/flush", test_source_flush); in main()
855 g_test_add_func("/aio-gsource/bh/schedule", test_source_bh_schedule); in main()
856 g_test_add_func("/aio-gsource/bh/schedule10", test_source_bh_schedule10); in main()
857 g_test_add_func("/aio-gsource/bh/cancel", test_source_bh_cancel); in main()
858 g_test_add_func("/aio-gsource/bh/delete", test_source_bh_delete); in main()
859 g_test_add_func("/aio-gsource/bh/callback-delete/one", test_source_bh_delete_from_cb); in main()
860 g_test_add_func("/aio-gsource/bh/callback-delete/many", test_source_bh_delete_from_cb_many); in main()
861 g_test_add_func("/aio-gsource/bh/flush", test_source_bh_flush); in main()
862 g_test_add_func("/aio-gsource/event/add-remove", test_source_set_event_notifier); in main()
863 g_test_add_func("/aio-gsource/event/wait", test_source_wait_event_notifier); in main()
864 … g_test_add_func("/aio-gsource/event/wait/no-flush-cb", test_source_wait_event_notifier_noflush); in main()
865 g_test_add_func("/aio-gsource/event/flush", test_source_flush_event_notifier); in main()
866 g_test_add_func("/aio-gsource/timer/schedule", test_source_timer_schedule); in main()