yams/tools/fuzzing/fuzz_abi_test_plugin.c
trvon 207532f46a
merge: integrate main into experimental (preserve PBI-081 simplification)
Merge main's 93 commits into experimental, preserving architectural updates
decisions:

- Keep ResourceGovernor as centralized pool registry (experimental's PBI-081 Phase 2)
- Translate all PoolManager API calls to ResourceGovernor equivalents
- Remove PoolManager.{h,cpp} from build (absorbed into ResourceGovernor)
- Preserve main's enhancements: RepairService, IOCoordinator, GradientLimiter,
  embed_preparer, GPU info, plugin trust, 60+ new test files
- Take main's version for 28 of 31 conflicts (more comprehensive rewrites)
- Keep experimental's ResourceGovernor.h (expanded pool API)
- Manual merge for .vscode/settings.json (use workspace-relative paths)
2026-02-19 10:01:01 -05:00

75 lines
2 KiB
C

#include <stdlib.h>
#include <string.h>
#include <yams/plugins/abi.h>
static const char* kName = "yams_fuzz_abi_test";
static const char* kVersion = "0.0.1";
static const char* kManifest = "{"
"\"name\":\"yams_fuzz_abi_test\","
"\"version\":\"0.0.1\","
"\"abi\":1,"
"\"interfaces\":[{\"id\":\"fuzz_iface_v1\",\"version\":1}]"
"}";
struct FuzzIfaceV1 {
int (*ping)(int x);
};
static int iface_ping(int x) {
return x ^ 0x5A5A;
}
static struct FuzzIfaceV1 kIface = {iface_ping};
YAMS_PLUGIN_API int yams_plugin_get_abi_version(void) {
return YAMS_PLUGIN_ABI_VERSION;
}
YAMS_PLUGIN_API const char* yams_plugin_get_name(void) {
return kName;
}
YAMS_PLUGIN_API const char* yams_plugin_get_version(void) {
return kVersion;
}
YAMS_PLUGIN_API const char* yams_plugin_get_manifest_json(void) {
return kManifest;
}
YAMS_PLUGIN_API int yams_plugin_init(const char* config_json, const void* host_context) {
(void)config_json;
(void)host_context;
return YAMS_PLUGIN_OK;
}
YAMS_PLUGIN_API void yams_plugin_shutdown(void) {}
YAMS_PLUGIN_API int yams_plugin_get_interface(const char* iface_id, uint32_t version,
void** out_iface) {
if (!iface_id || !out_iface) {
return YAMS_PLUGIN_ERR_INVALID;
}
if (version == 1 && strcmp(iface_id, "fuzz_iface_v1") == 0) {
*out_iface = &kIface;
return YAMS_PLUGIN_OK;
}
*out_iface = NULL;
return YAMS_PLUGIN_ERR_NOT_FOUND;
}
YAMS_PLUGIN_API int yams_plugin_get_health_json(char** out_json) {
if (!out_json) {
return YAMS_PLUGIN_ERR_INVALID;
}
const char* payload = "{\"ok\":true,\"plugin\":\"yams_fuzz_abi_test\"}";
size_t n = strlen(payload) + 1;
char* p = (char*)malloc(n);
if (!p) {
return YAMS_PLUGIN_ERR_INIT_FAILED;
}
memcpy(p, payload, n);
*out_json = p;
return YAMS_PLUGIN_OK;
}