| /* | |
| * Copyright 2017, Data61 | |
| * Commonwealth Scientific and Industrial Research Organisation (CSIRO) | |
| * ABN 41 687 119 230. | |
| * | |
| * This software may be distributed and modified according to the terms of | |
| * the BSD 2-Clause license. Note that NO WARRANTY is provided. | |
| * See "LICENSE_BSD2.txt" for details. | |
| * | |
| * @TAG(DATA61_BSD) | |
| */ | |
| #pragma once | |
| /* Include Kconfig variables. */ | |
| #include <autoconf.h> | |
| #include <sel4test/gen_config.h> | |
| #include <stdbool.h> | |
| typedef enum test_result { | |
| /* test passed */ | |
| SUCCESS, | |
| /* test failed */ | |
| FAILURE, | |
| /* test corrupted environment, abort tests */ | |
| ABORT, | |
| /* Start of the free slot/ID to be used to request | |
| * operations from sel4test-test to sel4test-driver | |
| * using the same end point | |
| */ | |
| SEL4TEST_RESULT_FREE | |
| } test_result_t; | |
| /* Communication codes/requests between a server and a client */ | |
| typedef enum _sel4test_communication_codes { | |
| SEL4TEST_TIME_MIN = SEL4TEST_RESULT_FREE, | |
| /* Client: requests a timeout from the server | |
| * Server: Notify clients after the elapsed requested time. | |
| * Previous timeout requests will be overwritten (if ongoing) with | |
| * new timeout requests. | |
| */ | |
| SEL4TEST_TIME_TIMEOUT, | |
| /* Client: requests a timer reset and cancel previous requests | |
| * Server: Cleans up the resources used from previous requests | |
| * and stop notifying clients. | |
| */ | |
| SEL4TEST_TIME_RESET, | |
| SEL4TEST_TIME_TIMESTAMP, | |
| SEL4TEST_TIME_MAX, | |
| SEL4TEST_PROTOBUF_RPC = SEL4TEST_TIME_MAX, | |
| SEL4TEST_OUTPUT_MAX | |
| } sel4test_output_t; | |
| /* A buffered printf to avoid corrupting xml output */ | |
| void sel4test_printf(const char *out); | |
| /* enable printf buffering */ | |
| void sel4test_start_printf_buffer(void); | |
| /* dump the current buffer and disable printf buffering */ | |
| void sel4test_end_printf_buffer(void); | |
| /* reset the test environment for the next test */ | |
| void sel4test_reset(void); | |
| /** | |
| * Report an error in a test case. | |
| * Can report multiple errors. | |
| * This will fail a test case. | |
| */ | |
| void _sel4test_report_error(const char *error, const char *file, int line); | |
| /* | |
| * Mark the current test as failed. Should | |
| * only be called once per test case | |
| */ | |
| void _sel4test_failure(const char *failure, const char *file, int line); | |
| /* | |
| * Mark the current test as fatally failed. The test will be terminated and | |
| * will not proceed beyond this point. | |
| */ | |
| void _sel4test_abort(const char *failure, const char *file, int line); | |
| /* | |
| * Indicates if current test passed. | |
| */ | |
| test_result_t sel4test_get_result(void); | |
| static inline bool sel4test_isTimerRPC(int output) | |
| { | |
| return (output > SEL4TEST_TIME_MIN && output < SEL4TEST_TIME_MAX); | |
| } |