Changeset 271e24a in mainline for uspace/lib/gpt
- Timestamp:
- 2013-03-24T00:12:25Z (13 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 30440ed
- Parents:
- ec50ac4a
- Location:
- uspace/lib/gpt
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/gpt/Makefile
rec50ac4a r271e24a 32 32 33 33 SOURCES = \ 34 libgpt.c 34 libgpt.c \ 35 global.c 35 36 36 37 include $(USPACE_PREFIX)/Makefile.common -
uspace/lib/gpt/libgpt.c
rec50ac4a r271e24a 52 52 53 53 static int load_and_check_header(service_id_t handle, aoff64_t addr, size_t b_size, gpt_header_t * header); 54 static gpt_part s_t * alloc_part_array(uint32_t num);55 static int extend_part_array(gpt_part s_t * p);56 static int reduce_part_array(gpt_part s_t * p);54 static gpt_partitions_t * alloc_part_array(uint32_t num); 55 static int extend_part_array(gpt_partitions_t * p); 56 static int reduce_part_array(gpt_partitions_t * p); 57 57 static long long nearest_larger_int(double a); 58 58 … … 162 162 * error code is stored in errno 163 163 */ 164 gpt_part s_t * gpt_read_partitions(gpt_t * gpt)164 gpt_partitions_t * gpt_read_partitions(gpt_t * gpt) 165 165 { 166 166 int rc; 167 167 unsigned int i; 168 gpt_part s_t * res;168 gpt_partitions_t * res; 169 169 uint32_t num_ent = uint32_t_le2host(gpt->raw_data->num_entries); 170 170 uint32_t ent_size = uint32_t_le2host(gpt->raw_data->entry_size); … … 242 242 * @return returns EOK on succes, specific error code otherwise 243 243 */ 244 int gpt_write_partitions(gpt_part s_t * parts, gpt_t * gpt, service_id_t dev_handle)244 int gpt_write_partitions(gpt_partitions_t * parts, gpt_t * gpt, service_id_t dev_handle) 245 245 { 246 246 int rc; … … 283 283 } 284 284 285 gpt_parts_t * gpt_add_partition(gpt_parts_t * parts, g_part_t * partition) 286 { 287 288 } 289 290 gpt_parts_t * gpt_remove_partition(gpt_parts_t * parts, int idx) 291 { 292 285 gpt_partitions_t * gpt_add_partition(gpt_partitions_t * parts, gpt_part_t * partition) 286 { 287 288 extend_part_array(parts); 289 return parts; 290 } 291 292 gpt_partitions_t * gpt_remove_partition(gpt_partitions_t * parts, size_t idx) 293 { 294 reduce_part_array(parts); 295 return parts; 293 296 } 294 297 … … 304 307 * @param parts partition list to be freed 305 308 */ 306 void gpt_free_partitions(gpt_part s_t * parts)309 void gpt_free_partitions(gpt_partitions_t * parts) 307 310 { 308 311 free(parts->part_array); … … 316 319 * 317 320 */ 318 void gpt_set_part_type(g _part_t * p, int type)321 void gpt_set_part_type(gpt_part_t * p, int type) 319 322 { 320 323 /* Beware: first 3 blocks are byteswapped! */ … … 386 389 } 387 390 388 static gpt_part s_t * alloc_part_array(uint32_t num)389 { 390 gpt_part s_t * res = malloc(sizeof(gpt_parts_t));391 static gpt_partitions_t * alloc_part_array(uint32_t num) 392 { 393 gpt_partitions_t * res = malloc(sizeof(gpt_partitions_t)); 391 394 if (res == NULL) { 392 395 errno = ENOMEM; … … 408 411 } 409 412 410 static int extend_part_array(gpt_part s_t * p)413 static int extend_part_array(gpt_partitions_t * p) 411 414 { 412 415 unsigned int nsize = p->arr_size * 2; … … 425 428 } 426 429 427 static int reduce_part_array(gpt_part s_t * p)430 static int reduce_part_array(gpt_partitions_t * p) 428 431 { 429 432 if(p->arr_size > GPT_MIN_PART_NUM) { -
uspace/lib/gpt/libgpt.h
rec50ac4a r271e24a 36 36 #define __GPT_H__ 37 37 38 #define NAME "libgpt"38 #define LIBGPT_NAME "libgpt" 39 39 40 #include <loc.h> 40 41 #include <sys/types.h> 41 42 … … 50 51 51 52 /** GPT header signature ("EFI PART" in ASCII) */ 52 const uint8_t efi_signature[8] = { 53 0x45, 0x46, 0x49, 0x20, 0x50, 0x41, 0x52, 0x54 54 }; 53 extern const uint8_t efi_signature[8]; 55 54 56 55 /** GPT header … … 102 101 /** Raw data access */ 103 102 gpt_entry_t raw_data; //TODO: a pointer or just a member? 104 }g _part_t;103 }gpt_part_t; 105 104 106 105 typedef struct gpt_parts { … … 111 110 /** Resizable partition array */ 112 111 gpt_entry_t * part_array; 113 } gpt_parts_t; 112 } gpt_partitions_t; 113 114 115 typedef struct gpt_table { 116 gpt_t * gpt; 117 gpt_partitions_t * parts; 118 } gpt_table_t; 114 119 115 120 struct partition_type { … … 118 123 }; 119 124 120 struct partition_type gpt_ptypes[] = { 121 { "Unused entry", "00000000-0000-0000-0000-000000000000" }, 122 { "MBR partition scheme", "024DEE41-33E7-11D3-9D69-0008C781F39F" }, 123 { "EFI System", "C12A7328-F81F-11D2-BA4B-00A0C93EC93B" }, 124 { "BIOS Boot", "21686148-6449-6E6F-744E-656564454649" }, 125 { "Windows Reserved", "E3C9E316-0B5C-4DB8-817D-F92DF00215AE" }, 126 { "Windows Basic data", "EBD0A0A2-B9E5-4433-87C0-68B6B72699C7" }, 127 { "Windows LDM metadata", "5808C8AA-7E8F-42E0-85D2-E1E90434CFB3" }, 128 { "Windows LDM data", "AF9B60A0-1431-4F62-BC68-3311714A69AD" }, 129 { "Windows Recovery Environment", "DE94BBA4-06D1-4D40-A16A-BFD50179D6AC" }, 130 { "Windows IBM GPFS", "37AFFC90-EF7D-4E96-91C3-2D7AE055B174" }, 131 { "Windows Cluster metadata", "DB97DBA9-0840-4BAE-97F0-FFB9A327C7E1" }, 132 { "HP-UX Data", "75894C1E-3AEB-11D3-B7C1-7B03A0000000" }, 133 { "HP-UX Service", "E2A1E728-32E3-11D6-A682-7B03A0000000" }, 134 { "Linux filesystem data", "EBD0A0A2-B9E5-4433-87C0-68B6B72699C7" }, 135 { "Linux filesystem data", "0FC63DAF-8483-4772-8E79-3D69D8477DE4" }, 136 { "Linux RAID", "A19D880F-05FC-4D3B-A006-743F0F84911E" }, 137 { "Linux Swap", "0657FD6D-A4AB-43C4-84E5-0933C84B4F4F" }, 138 { "Linux LVM", "E6D6D379-F507-44C2-A23C-238F2A3DF928" }, 139 { "Linux Reserved", "8DA63339-0007-60C0-C436-083AC8230908" }, 140 { "FreeBSD Boot", "83BD6B9D-7F41-11DC-BE0B-001560B84F0F" }, 141 { "FreeBSD Data", "516E7CB4-6ECF-11D6-8FF8-00022D09712B" }, 142 { "FreeBSD Swap", "516E7CB5-6ECF-11D6-8FF8-00022D09712B" }, 143 { "FreeBSD UFS", "516E7CB6-6ECF-11D6-8FF8-00022D09712B" }, 144 { "FreeBSD Vinum VM", "516E7CB8-6ECF-11D6-8FF8-00022D09712B" }, 145 { "FreeBSD ZFS", "516E7CBA-6ECF-11D6-8FF8-00022D09712B" }, 146 { "Mac OS X HFS+", "48465300-0000-11AA-AA11-00306543ECAC" }, 147 { "Mac OS X UFS", "55465300-0000-11AA-AA11-00306543ECAC" }, 148 { "Mac OS X ZFS", "6A898CC3-1DD2-11B2-99A6-080020736631" }, 149 { "Mac OS X RAID", "52414944-0000-11AA-AA11-00306543ECAC" }, 150 { "Mac OS X RAID, offline", "52414944-5F4F-11AA-AA11-00306543ECAC" }, 151 { "Mac OS X Boot", "426F6F74-0000-11AA-AA11-00306543ECAC" }, 152 { "Mac OS X Label", "4C616265-6C00-11AA-AA11-00306543ECAC" }, 153 { "Mac OS X TV Recovery", "5265636F-7665-11AA-AA11-00306543ECAC" }, 154 { "Mac OS X Core Storage", "53746F72-6167-11AA-AA11-00306543ECAC" }, 155 { "Solaris Boot", "6A82CB45-1DD2-11B2-99A6-080020736631" }, 156 { "Solaris Root", "6A85CF4D-1DD2-11B2-99A6-080020736631" }, 157 { "Solaris Swap", "6A87C46F-1DD2-11B2-99A6-080020736631" }, 158 { "Solaris Backup", "6A8B642B-1DD2-11B2-99A6-080020736631" }, 159 { "Solaris /usr", "6A898CC3-1DD2-11B2-99A6-080020736631" }, 160 { "Solaris /var", "6A8EF2E9-1DD2-11B2-99A6-080020736631" }, 161 { "Solaris /home", "6A90BA39-1DD2-11B2-99A6-080020736631" }, 162 { "Solaris Alternate sector", "6A9283A5-1DD2-11B2-99A6-080020736631" }, 163 { "Solaris Reserved", "6A945A3B-1DD2-11B2-99A6-080020736631" }, 164 { "Solaris Reserved", "6A9630D1-1DD2-11B2-99A6-080020736631" }, 165 { "Solaris Reserved", "6A980767-1DD2-11B2-99A6-080020736631" }, 166 { "Solaris Reserved", "6A96237F-1DD2-11B2-99A6-080020736631" }, 167 { "Solaris Reserved", "6A8D2AC7-1DD2-11B2-99A6-080020736631" }, 168 { "NetBSD Swap", "49F48D32-B10E-11DC-B99B-0019D1879648" }, 169 { "NetBSD FFS", "49F48D5A-B10E-11DC-B99B-0019D1879648" }, 170 { "NetBSD LFS", "49F48D82-B10E-11DC-B99B-0019D1879648" }, 171 { "NetBSD RAID", "49F48DAA-B10E-11DC-B99B-0019D1879648" }, 172 { "NetBSD Concatenated", "2DB519C4-B10F-11DC-B99B-0019D1879648" }, 173 { "NetBSD Encrypted", "2DB519EC-B10F-11DC-B99B-0019D1879648" }, 174 { "ChromeOS ChromeOS kernel", "FE3A2A5D-4F32-41A7-B725-ACCC3285A309" }, 175 { "ChromeOS rootfs", "3CB8E202-3B7E-47DD-8A3C-7FF2A13CFCEC" }, 176 { "ChromeOS future use", "2E0A753D-9E48-43B0-8337-B15192CB1B5E" }, 177 { "MidnightBSD Boot", "85D5E45E-237C-11E1-B4B3-E89A8F7FC3A7" }, 178 { "MidnightBSD Data", "85D5E45A-237C-11E1-B4B3-E89A8F7FC3A7" }, 179 { "MidnightBSD Swap", "85D5E45B-237C-11E1-B4B3-E89A8F7FC3A7" }, 180 { "MidnightBSD UFS", "0394Ef8B-237E-11E1-B4B3-E89A8F7FC3A7" }, 181 { "MidnightBSD Vinum VM", "85D5E45C-237C-11E1-B4B3-E89A8F7FC3A7" }, 182 { "MidnightBSD ZFS", "85D5E45D-237C-11E1-B4B3-E89A8F7FC3A7" } 183 }; 125 extern const struct partition_type gpt_ptypes[]; 126 184 127 185 128 … … 187 130 extern int gpt_write_gpt_header(gpt_t * header, service_id_t dev_handle); 188 131 189 extern gpt_part s_t * gpt_read_partitions(gpt_t * gpt);190 extern int gpt_write_partitions(gpt_parts_t * parts, gpt_t * header, service_id_t dev_handle);191 extern int gpt_add_partition(gpt_parts_t * parts, g_part_t * partition);192 extern void gpt_remove_partition(gpt_parts_t * parts, int idx);193 extern void gpt_set_part_type(g_part_t * p, int type);194 extern void gpt_set_part_name(gpt_entry_t * p, char * name[], size_t length);132 extern gpt_partitions_t * gpt_read_partitions(gpt_t * gpt); 133 extern int gpt_write_partitions(gpt_partitions_t * parts, gpt_t * header, service_id_t dev_handle); 134 extern gpt_partitions_t * gpt_add_partition(gpt_partitions_t * parts, gpt_part_t * partition); 135 extern gpt_partitions_t * gpt_remove_partition(gpt_partitions_t * parts, size_t idx); 136 extern void gpt_set_part_type(gpt_part_t * p, int type); 137 extern void gpt_set_part_name(gpt_entry_t * p, char * name[], size_t length); 195 138 196 139 extern void gpt_free_gpt(gpt_t * gpt); 197 extern void gpt_free_partitions(gpt_part s_t * parts);140 extern void gpt_free_partitions(gpt_partitions_t * parts); 198 141 199 142 #endif 143
Note:
See TracChangeset
for help on using the changeset viewer.
