The Pedigree Project 0.1
modules/system/init-module-contract-fixture/main.cc
1/* Copyright (c) 2026, Pedigree Developers. */
2#include "pedigree/kernel/Log.h"
3
4#include "modules/Module.h"
5
6namespace {
7unsigned int phase;
8void initialise() {
9 phase = 1;
10}
11bool entry() {
12 if (phase != 1)
13 return false;
14 phase = 2;
15 NOTICE("INIT-MODULE-FIXTURE: active");
16 return true;
17}
18void exit() {
19 phase = 3;
20 NOTICE("INIT-MODULE-FIXTURE: exit");
21}
22void finalise() {
23 if (phase == 3)
24 NOTICE("INIT-MODULE-FIXTURE: destructor");
25 else
26 ERROR("INIT-MODULE-FIXTURE: FAIL lifecycle order");
27 phase = 4;
28}
29void (*const constructor)() SECTION(".ctors") USED = initialise;
30void (*const destructor)() SECTION(".dtors") USED = finalise;
31} // namespace
32MODULE_INFO("init-module-contract", &entry, &exit);