kernel/inc/drivers/fs/gpt.h

48 lines
1.4 KiB
C

// This file is part of noxos and licensed under the MIT open source license
#ifndef NOXOS_GPT_H
#define NOXOS_GPT_H
#include "utils/stdtypes.h"
#define GPT_PARTITION_TYPE_GUID_MATCH(g, t) ((g[0] == g_gpt_partition_type_guides[t][0]) && (g[1] == g_gpt_partition_type_guides[t][1]))
typedef enum {
GPT_PARTITION_GUID_UNUSED,
GPT_PARTITION_GUID_BASIC_DATA,
GPT_PARTITION_GUID_EFI_SYSTEM,
GPT_PARTITION_GUID_ENUM_END
} gpt_partition_type_guids_E;
typedef struct {
uint8_t signature [8];
uint32_t revision;
uint32_t header_size;
uint32_t checksum_crc32;
uint32_t reserved;
uint64_t current_lba;
uint64_t backup_lba;
uint64_t first_usable_lba;
uint64_t last_usable_lba;
uint64_t disk_guid [2];
uint64_t starting_lba;
uint32_t num_partitions;
uint32_t partition_entry_size;
uint32_t partition_entry_crc32;
uint8_t reserved2 [0x1A4];
}__attribute__((packed)) gpt_table_header_T;
typedef struct {
uint64_t partition_type_guid [2];
uint64_t partition_guid [2];
uint64_t starting_lba;
uint64_t ending_lba;
uint64_t attributes;
uint8_t name [72];
}__attribute__((packed)) gpt_partition_entry_T;
extern uint64_t g_gpt_partition_type_guides[GPT_PARTITION_GUID_ENUM_END][2];
#endif //NOXOS_GPT_H