#include "NativePal.h"
// Only native values cross this boundary. The zero-library kernel has separate
// metadata and helper symbols; its objects never enter Microsoft's managed heap.
extern "C" {
void* xfe_runtime_virtual_reserve(uint64_t,uint64_t);
int xfe_runtime_virtual_commit(void*,uint64_t);
int xfe_runtime_virtual_decommit(void*,uint64_t);
int xfe_runtime_virtual_release(void*,uint64_t);
int xfe_runtime_virtual_protect(void*,uint64_t,uint32_t);
uint64_t xfe_runtime_physical_bytes();
uint64_t xfe_runtime_free_physical_bytes();
uint64_t xfe_runtime_mono_ns();
uint64_t xfe_runtime_utc_filetime();
uint64_t xfe_runtime_thread_id();
int xfe_runtime_stack_bounds(void**,void**);
int xfe_runtime_thread_start(XfeRuntimeThreadEntry,void*,uint64_t);
void xfe_runtime_thread_sleep(uint32_t);
void xfe_runtime_thread_yield();
void* xfe_runtime_event_create(int,int);
int xfe_runtime_event_close(void*);
int xfe_runtime_event_set(void*);
int xfe_runtime_event_reset(void*);
uint32_t xfe_runtime_event_wait(void*,uint32_t);
uint32_t xfe_runtime_event_wait_any(void**,uint32_t,uint32_t);
void xfe_runtime_thread_attach(void*);
int xfe_runtime_thread_gc_hijack(void*);
void xfe_runtime_write(const char*,uint64_t);
[[noreturn]] void xfe_runtime_halt(const char*);
}
extern "C" int XfeRuntimeInstallKernelPal()
{
static const XfeRuntimePal kernel={
1,sizeof(XfeRuntimePal),
&xfe_runtime_virtual_reserve,&xfe_runtime_virtual_commit,
&xfe_runtime_virtual_decommit,&xfe_runtime_virtual_release,
&xfe_runtime_virtual_protect,&xfe_runtime_physical_bytes,
&xfe_runtime_free_physical_bytes,&xfe_runtime_mono_ns,
&xfe_runtime_utc_filetime,
&xfe_runtime_thread_id,&xfe_runtime_stack_bounds,
&xfe_runtime_thread_start,&xfe_runtime_thread_sleep,
&xfe_runtime_thread_yield,&xfe_runtime_event_create,
&xfe_runtime_event_close,&xfe_runtime_event_set,
&xfe_runtime_event_reset,&xfe_runtime_event_wait,
&xfe_runtime_event_wait_any,&xfe_runtime_thread_attach,
&xfe_runtime_thread_gc_hijack,&xfe_runtime_write,&xfe_runtime_halt
};
return XfeRuntimeInstallPal(&kernel);
}
extern "C" int xfe_kernel_run_runtime()
{
if(!XfeRuntimeInstallKernelPal())return -8;
return XfeRuntimeStart();
}
#include "NativePal.h"
// Only native values cross this boundary. The zero-library kernel has separate
// metadata and helper symbols; its objects never enter Microsoft's managed heap.
extern "C" {
void* xfe_runtime_virtual_reserve(uint64_t,uint64_t);
int xfe_runtime_virtual_commit(void*,uint64_t);
int xfe_runtime_virtual_decommit(void*,uint64_t);
int xfe_runtime_virtual_release(void*,uint64_t);
int xfe_runtime_virtual_protect(void*,uint64_t,uint32_t);
uint64_t xfe_runtime_physical_bytes();
uint64_t xfe_runtime_free_physical_bytes();
uint64_t xfe_runtime_mono_ns();
uint64_t xfe_runtime_utc_filetime();
uint64_t xfe_runtime_thread_id();
int xfe_runtime_stack_bounds(void**,void**);
int xfe_runtime_thread_start(XfeRuntimeThreadEntry,void*,uint64_t);
void xfe_runtime_thread_sleep(uint32_t);
void xfe_runtime_thread_yield();
void* xfe_runtime_event_create(int,int);
int xfe_runtime_event_close(void*);
int xfe_runtime_event_set(void*);
int xfe_runtime_event_reset(void*);
uint32_t xfe_runtime_event_wait(void*,uint32_t);
uint32_t xfe_runtime_event_wait_any(void**,uint32_t,uint32_t);
void xfe_runtime_thread_attach(void*);
int xfe_runtime_thread_gc_hijack(void*);
void xfe_runtime_write(const char*,uint64_t);
[[noreturn]] void xfe_runtime_halt(const char*);
}
extern "C" int XfeRuntimeInstallKernelPal()
{
static const XfeRuntimePal kernel={
1,sizeof(XfeRuntimePal),
&xfe_runtime_virtual_reserve,&xfe_runtime_virtual_commit,
&xfe_runtime_virtual_decommit,&xfe_runtime_virtual_release,
&xfe_runtime_virtual_protect,&xfe_runtime_physical_bytes,
&xfe_runtime_free_physical_bytes,&xfe_runtime_mono_ns,
&xfe_runtime_utc_filetime,
&xfe_runtime_thread_id,&xfe_runtime_stack_bounds,
&xfe_runtime_thread_start,&xfe_runtime_thread_sleep,
&xfe_runtime_thread_yield,&xfe_runtime_event_create,
&xfe_runtime_event_close,&xfe_runtime_event_set,
&xfe_runtime_event_reset,&xfe_runtime_event_wait,
&xfe_runtime_event_wait_any,&xfe_runtime_thread_attach,
&xfe_runtime_thread_gc_hijack,&xfe_runtime_write,&xfe_runtime_halt
};
return XfeRuntimeInstallPal(&kernel);
}
extern "C" int xfe_kernel_run_runtime()
{
if(!XfeRuntimeInstallKernelPal())return -8;
return XfeRuntimeStart();
}