| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- /**
- * Copyright (c) 2023 Raspberry Pi (Trading) Ltd.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
- #include <stdio.h>
- #include "pico/stdlib.h"
- #include "pico/multicore.h"
- #include "pico/test.h"
- PICOTEST_MODULE_NAME("pico_stdio_test", "pico_stdio test harness");
- static volatile bool deadlock_test_done;
- static void deadlock_test_core1(void) {
- busy_wait_ms(250);
- for(int i=0;i<1000;i++) {
- if (deadlock_test_done) break;
- printf("Hello from core 1 - %d\n", i);
- busy_wait_ms(23);
- }
- }
- static volatile bool deadlock_test_irq_called;
- static int64_t deadlock_test_alarm(alarm_id_t id, void *param) {
- static int foo;
- printf("Here is a printf from the IRQ %d\n", ++foo);
- deadlock_test_irq_called = true;
- return 100;
- }
- int main() {
- stdio_init_all();
- for(int i=0;i<10;i++) {
- printf("Hello %d\n", i);
- }
- printf("pico_stdio_test begins\n");
- PICOTEST_START();
- // Check default config has valid data in it
- PICOTEST_START_SECTION("STDIO deadlock test");
- multicore_launch_core1(deadlock_test_core1);
- alarm_id_t alarm_id = add_alarm_in_ms(500, deadlock_test_alarm, NULL, false);
- PICOTEST_CHECK(getchar_timeout_us(2000000) < 0, "someone pressed a key!");
- deadlock_test_done = true;
- cancel_alarm(alarm_id);
- sleep_ms(100);
- PICOTEST_CHECK(deadlock_test_irq_called, "deadlock_test_irq was not called");
- PICOTEST_END_SECTION();
- PICOTEST_END_TEST();
- }
|