runtime/example/host/src/trampoline.c

24 lines
788 B
C
Raw Normal View History

2025-01-04 05:34:24 -05:00
#include <string.h>
#include <stdio.h>
2025-02-14 23:10:29 -05:00
#include <unistd.h>
2025-01-04 05:34:24 -05:00
#include <trampoline/types.h>
// writer: Function That Can Write To Guest Memory
// id: Command ID
// args: Pointer To Command Arguments
// Return Value: Returned To The Guest (Unless Early Return Is Enabled)
uint32_t trampoline(trampoline_writer_t writer, uint32_t id, const unsigned char *args) {
2025-02-14 23:10:29 -05:00
if (id == 100 /* Defined In ../../guest/src/example.c */) {
// Early Return Allowed
fprintf(stderr, "Early Return Call Started\n");
sleep(1);
fprintf(stderr, "Early Return Call Done\n");
return 0;
} else {
// Normal Call
const char *str = (const char *) args;
fprintf(stderr, "Host Has Received: %u: %s\n", id, str);
return strlen(str) * 2;
}
2025-01-04 05:34:24 -05:00
}