initial
This commit is contained in:
		
						commit
						ce607a0452
					
				
							
								
								
									
										9
									
								
								CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,9 @@
 | 
				
			|||||||
 | 
					cmake_minimum_required(VERSION 3.22)
 | 
				
			||||||
 | 
					project(libembpart C)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set(CMAKE_C_STANDARD 11)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					add_library(embpart embpart.c
 | 
				
			||||||
 | 
					        mbr/mbr.c
 | 
				
			||||||
 | 
					        mbr/mbr.h
 | 
				
			||||||
 | 
					        ../test/main.c)
 | 
				
			||||||
							
								
								
									
										7
									
								
								embpart.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								embpart.c
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,7 @@
 | 
				
			|||||||
 | 
					#include "embpart.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <stdio.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void hello(void) {
 | 
				
			||||||
 | 
					    printf("Hello, World!\n");
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										6
									
								
								embpart.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								embpart.h
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					#ifndef EMBPART_EMBPART_H
 | 
				
			||||||
 | 
					#define EMBPART_EMBPART_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "mbr/mbr.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif //EMBPART_EMBPART_H
 | 
				
			||||||
							
								
								
									
										7
									
								
								mbr/mbr.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								mbr/mbr.c
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,7 @@
 | 
				
			|||||||
 | 
					#include "mbr.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define MBR_PART_TABLE_OFFSET (446)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const PartEntry *mbr_get_partitions(const uint8_t *mbr_sec) {
 | 
				
			||||||
 | 
					    return (PartEntry *)(mbr_sec + MBR_PART_TABLE_OFFSET);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										24
									
								
								mbr/mbr.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								mbr/mbr.h
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,24 @@
 | 
				
			|||||||
 | 
					#ifndef EMBPART_MBR_H
 | 
				
			||||||
 | 
					#define EMBPART_MBR_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <stdint.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// partition entry
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					    uint8_t status; // partition status
 | 
				
			||||||
 | 
					    uint8_t chsa_fa[3]; // CHS address of first absolute sector in partition
 | 
				
			||||||
 | 
					    uint8_t part_type; // partition type
 | 
				
			||||||
 | 
					    uint8_t chsa_la[3]; // CHS address of last absolute sector in partition
 | 
				
			||||||
 | 
					    uint32_t lba_fa; // LBA of first absolute sector
 | 
				
			||||||
 | 
					    uint32_t sector_count; // number of sectors the partition includes
 | 
				
			||||||
 | 
					} PartEntry;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Get pointer to partition table
 | 
				
			||||||
 | 
					 * @param mbr_sec pointer to the sector containing the MBR, MUST BE DWORD ALIGNED
 | 
				
			||||||
 | 
					 * @return pointer to first partition entry
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					const PartEntry * mbr_get_partitions(const uint8_t * mbr_sec);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif //EMBPART_MBR_H
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user