Files
GKERN/common/glyph_types.h
T

49 lines
2.0 KiB
C

#ifndef GLYPH_TYPES_H
#define GLYPH_TYPES_H
#include <stdint.h>
#include <stdbool.h>
#include <stddef.h>
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