Files
zinnia/include/zinnia/module.h
T
2026-09-20 05:27:41 +02:00

25 lines
639 B
C

#pragma once
#include <zinnia/compiler.h>
#include <zinnia/utils.h>
#include <stdint.h>
#define MODULE_PROPERTY(name, data) \
[[__used, __section(".mod." name)]] \
static const char UNIQUE_IDENT(_name)[] = data;
#define MODULE(desc, author, license, version, entry) \
void __module_start(struct module* _module) { \
entry(_module); \
} \
MODULE_PROPERTY("author", author); \
MODULE_PROPERTY("desc", desc); \
MODULE_PROPERTY("version", version); \
MODULE_PROPERTY("license", license);
struct module {
const char* name;
struct module* owner;
};
#define THIS_MODULE (struct module*)nullptr