Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 7 additions & 2 deletions blk/components/blk_components.mk
Original file line number Diff line number Diff line change
Expand Up @@ -22,18 +22,23 @@ ${CHECK_BLK_FLAGS_MD5}:
touch $@


blk_virt.elf: blk_virt.o
blk_virt.elf: blk_virt.o blk_partitioning.o
$(LD) $(LDFLAGS) $^ $(LIBS) -o $@

blk_virt.o: ${CHECK_BLK_FLAGS_MD5}
blk_virt.o: ${SDDF}/blk/components/virt.c
${CC} ${CFLAGS} -I${SDDF}/blk/components ${CFLAGS_blk} -o $@ -c $<

blk_partitioning.o: ${CHECK_BLK_FLAGS_MD5}
blk_partitioning.o: ${SDDF}/blk/components/partitioning.c
${CC} ${CFLAGS} ${CFLAGS_blk} -o $@ -c $<

clean::
rm -f blk_virt.[od] .blk_cflags-*
rm -f blk_virt.[od] blk_partitioning.[od] .blk_cflags-*

clobber::
rm -f ${BLK_IMAGES}


-include blk_virt.d
-include blk_partitioning.d
46 changes: 46 additions & 0 deletions blk/components/gpt.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
/*
* Copyright 2024, UNSW
* SPDX-License-Identifier: BSD-2-Clause
*/

#pragma once

#include <stdint.h>

/**
* GUID Partition Table
*
* https://en.wikipedia.org/wiki/GUID_Partition_Table
* */

#define GPT_MAX_PARTITIONS 128
#define GPT_SECTOR_SIZE 512
#define GPT_PARTITION_INFO_CODE 0x1
#define GPT_PARTITION_INFO_MIRROR_CODE 0x2
#define GPT_HEADER_SIGNATURE "EFI PART"

struct gpt_partition_header {
char signature[8];
uint32_t revision;
uint32_t header_size;
uint32_t crc32_header;
uint32_t reserved;
uint64_t lba_header;
uint64_t lba_alt_header;
uint64_t block_first;
uint64_t block_last;
uint8_t guid[16];
uint64_t lba_start;
uint32_t num_entries;
uint32_t entry_size;
uint32_t crc32_entry_array;
} __attribute__((packed));

struct gpt_partition_entry {
uint8_t guid_type[16];
uint8_t guid_unique[16];
uint64_t lba_start;
uint64_t lba_end;
uint64_t attributes;
char name[72];
} __attribute__((packed));
Original file line number Diff line number Diff line change
Expand Up @@ -33,3 +33,4 @@ struct msdos_mbr {
} __attribute__((packed));

#define MSDOS_MBR_PARTITION_TYPE_EMPTY 0x00
#define MSDOS_MBR_PARTITION_TYPE_GPT 0xEE
Loading