XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFESystem

【Rust】XFE系统,基于Rust和汇编

公开
关注 0 Fork 0 Star 0
UTF-8
#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();
}