#ifndef _JOVE_OBJECT_H #define _JOVE_OBJECT_H #include #include #include "api/object.h" typedef uint8_t path_byte_t; typedef struct jove_ObjectDirectoryEntry { obj_type_t type; union { struct { unsigned char lock; char extra; }; unsigned short flg; }; uintmax_t data; } objdir_entry_t; typedef struct jove_ObjectDirectory { union { objdir_entry_t self; objdir_entry_t entries[OBJECT_DIRECTORY_MAX_ENTRIES]; }; } objdir_t; #define KODE_EX_MESSAGE_MAPPED 0b1 objdir_entry_t *objdir_seek(objdir_t *dir, uint8_t *path, unsigned long pathw); unsigned long objdir_pathw(objdir_t *dir, uint8_t *path); void *ko_entry_data(objdir_entry_t *entry); uintptr_t ko_data_toentry(uintptr_t vptr); int ko_message_unmap(objdir_entry_t *message, uintptr_t *saveptr); int ko_message_remap(objdir_entry_t *message); void ko_message_move(objdir_entry_t *message, uintptr_t vptr); int ko_untyped_split(objdir_entry_t *untyped, objdir_entry_t *dest, size_t bytes); int ko_untyped_retype_objdir(objdir_entry_t *target); int ko_untyped_retype_memory_mapping(objdir_entry_t *target); int ko_untyped_retype_tcb(objdir_entry_t *target); int ko_untyped_retype_message(objdir_entry_t *target, uintptr_t vptr); #endif