#ifndef GLYPH_TYPES_H #define GLYPH_TYPES_H #include #include #include typedef uint64_t TraitMask; typedef uint32_t HandleId; typedef enum { HANDLE_UNKNOWN = 0, HANDLE_MEMORY_REGION = 1, HANDLE_GVM = 2, HANDLE_CHANNEL = 3, HANDLE_FILE = 4 } HandleKind; typedef struct { HandleKind kind; uint32_t payload; } Handle; typedef struct { HandleId id; uint8_t *bytes; uint32_t size; TraitMask traits; float resonance; float stability; uint32_t lineage_id; bool sealed; uint32_t mutation_count; } MemoryRegion; typedef struct { HandleId dst; HandleId src; uint32_t tag; uint8_t *data; uint32_t data_len; } Message; typedef struct { uint8_t family_id; uint8_t sub_id; uint8_t mode; uint8_t opclass; uint16_t opcode_local; } GlyphInstr; typedef enum { EXT_NONE = 0, EXT_STORE = 1, EXT_CMP_PROFILE = 2, EXT_TRAITS = 3, EXT_MISC = 4 } ExtKind; typedef struct { ExtKind kind; union { struct { uint32_t size; uint32_t integrity; TraitMask traits; } store; struct { uint32_t profile_id; HandleId dst_handle; } cmp_profile; struct { TraitMask mask; } trait; struct { uint32_t a; uint32_t b; } misc; } data; } ExtSlot; #define MODE_USER 0 #define MODE_KERNEL 1 #define MODE_SYSTEM 2 #define MODE_RESERVED 3 #define OPCLASS_MEM 0 #define OPCLASS_CMP 1 #define OPCLASS_CTL 2 #define OPCLASS_IPC 3 #define OPCLASS_SYS 4 #define OPCLASS_APP 5 #define OPCLASS_EXT 6 #define OPCLASS_EXT2 7 #define FAMILY_MEM_START 0 #define FAMILY_MEM_END 7 #define FAMILY_CMP_START 8 #define FAMILY_CMP_END 15 #define FAMILY_CTL_START 16 #define FAMILY_CTL_END 23 #define FAMILY_IPC_START 24 #define FAMILY_IPC_END 31 #define FAMILY_SYS_START 32 #define FAMILY_SYS_END 47 #define FAMILY_APP_START 48 #define FAMILY_APP_END 63 #define GOBJ_MAGIC "GLYPHOBJ" #define GOBJ_VERSION 1 typedef struct { char magic[8]; uint32_t version; uint32_t code_len; uint32_t ext_len; } GobjHeader; #define MAX_HANDLES 256 #define MAX_REGIONS 64 #define MAX_MAILBOX 128 #define MAX_EXT_SLOTS 1024 #define MAX_CODE_SIZE 65536 #define MAX_CALL_DEPTH 64 #endif