The Pedigree Project 0.1
modules/system/module-runtime-fixture/main.cc
1/* Copyright (c) 2026, Pedigree Developers. */
2#include "modules/Module.h"
3
4extern "C" void module_runtime_test_event(unsigned int event);
5extern "C" bool module_runtime_test_entry();
6
7#if defined(PEDIGREE_RUNTIME_CONSUMER)
8extern "C" unsigned int module_runtime_fixture_value();
9#else
10extern "C" EXPORTED_PUBLIC unsigned int module_runtime_fixture_value() {
11 return 42;
12}
13#endif
14
15namespace {
16void initialise() {
17 module_runtime_test_event(1);
18}
19bool entry() {
20 module_runtime_test_event(2);
21#if defined(PEDIGREE_RUNTIME_CONSUMER)
22 if (module_runtime_fixture_value() != 42)
23 return false;
24#endif
25 return module_runtime_test_entry();
26}
27void exit() {
28 module_runtime_test_event(3);
29}
30void finalise() {
31 module_runtime_test_event(4);
32}
33void (*const constructor)() SECTION(".ctors") USED = initialise;
34void (*const destructor)() SECTION(".dtors") USED = finalise;
35} // namespace
36
37#if defined(PEDIGREE_RUNTIME_UNDECLARED)
38MODULE_INFO("runtime-undeclared", &entry, &exit, "module-runtime-tests");
39#elif defined(PEDIGREE_RUNTIME_CONSUMER)
40MODULE_INFO("runtime-consumer", &entry, &exit, "module-runtime-tests", "runtime-fixture-0");
41#else
42MODULE_INFO("runtime-fixture-0", &entry, &exit, "module-runtime-tests");
43#endif