| OLD | NEW |
| 1 /* Copyright (c) 2010 The Chromium OS Authors. All rights reserved. | 1 /* Copyright (c) 2010 The Chromium OS Authors. All rights reserved. |
| 2 * Use of this source code is governed by a BSD-style license that can be | 2 * Use of this source code is governed by a BSD-style license that can be |
| 3 * found in the LICENSE file. | 3 * found in the LICENSE file. |
| 4 */ | 4 */ |
| 5 | 5 |
| 6 #include "cgptlib.h" | 6 #include "cgptlib.h" |
| 7 #include "cgptlib_internal.h" | 7 #include "cgptlib_internal.h" |
| 8 #include "crc32.h" | 8 #include "crc32.h" |
| 9 #include "gpt.h" | 9 #include "gpt.h" |
| 10 #include "utility.h" | 10 #include "utility.h" |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 69 if ((h->number_of_entries < MIN_NUMBER_OF_ENTRIES) || | 69 if ((h->number_of_entries < MIN_NUMBER_OF_ENTRIES) || |
| 70 (h->number_of_entries > MAX_NUMBER_OF_ENTRIES) || | 70 (h->number_of_entries > MAX_NUMBER_OF_ENTRIES) || |
| 71 (h->number_of_entries * h->size_of_entry != TOTAL_ENTRIES_SIZE)) | 71 (h->number_of_entries * h->size_of_entry != TOTAL_ENTRIES_SIZE)) |
| 72 return 1; | 72 return 1; |
| 73 | 73 |
| 74 /* Check locations for the header and its entries. The primary | 74 /* Check locations for the header and its entries. The primary |
| 75 * immediately follows the PMBR, and is followed by its entries. | 75 * immediately follows the PMBR, and is followed by its entries. |
| 76 * The secondary is at the end of the drive, preceded by its | 76 * The secondary is at the end of the drive, preceded by its |
| 77 * entries. */ | 77 * entries. */ |
| 78 if (is_secondary) { | 78 if (is_secondary) { |
| 79 if ((h->my_lba != drive_sectors - 1) || (h->alternate_lba != 1)) | 79 if (h->my_lba != drive_sectors - 1) |
| 80 return 1; | 80 return 1; |
| 81 if (h->entries_lba != h->my_lba - GPT_ENTRIES_SECTORS) | 81 if (h->entries_lba != h->my_lba - GPT_ENTRIES_SECTORS) |
| 82 return 1; | 82 return 1; |
| 83 } else { | 83 } else { |
| 84 if ((h->my_lba != 1) || (h->alternate_lba != drive_sectors - 1)) | 84 if (h->my_lba != 1) |
| 85 return 1; | 85 return 1; |
| 86 if (h->entries_lba != h->my_lba + 1) | 86 if (h->entries_lba != h->my_lba + 1) |
| 87 return 1; | 87 return 1; |
| 88 } | 88 } |
| 89 | 89 |
| 90 /* FirstUsableLBA must be after the end of the primary GPT table | 90 /* FirstUsableLBA must be after the end of the primary GPT table |
| 91 * array. LastUsableLBA must be before the start of the secondary | 91 * array. LastUsableLBA must be before the start of the secondary |
| 92 * GPT table array. FirstUsableLBA <= LastUsableLBA. */ | 92 * GPT table array. FirstUsableLBA <= LastUsableLBA. */ |
| 93 if (h->first_usable_lba < 2 + GPT_ENTRIES_SECTORS) | 93 if (h->first_usable_lba < 2 + GPT_ENTRIES_SECTORS) |
| 94 return 1; | 94 return 1; |
| (...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 339 e->attributes |= ((uint64_t)priority << CGPT_ATTRIBUTE_PRIORITY_OFFSET) & | 339 e->attributes |= ((uint64_t)priority << CGPT_ATTRIBUTE_PRIORITY_OFFSET) & |
| 340 CGPT_ATTRIBUTE_PRIORITY_MASK; | 340 CGPT_ATTRIBUTE_PRIORITY_MASK; |
| 341 } | 341 } |
| 342 | 342 |
| 343 | 343 |
| 344 void SetEntryTries(GptEntry* e, int tries) { | 344 void SetEntryTries(GptEntry* e, int tries) { |
| 345 e->attributes &= ~CGPT_ATTRIBUTE_TRIES_MASK; | 345 e->attributes &= ~CGPT_ATTRIBUTE_TRIES_MASK; |
| 346 e->attributes |= ((uint64_t)tries << CGPT_ATTRIBUTE_TRIES_OFFSET) & | 346 e->attributes |= ((uint64_t)tries << CGPT_ATTRIBUTE_TRIES_OFFSET) & |
| 347 CGPT_ATTRIBUTE_TRIES_MASK; | 347 CGPT_ATTRIBUTE_TRIES_MASK; |
| 348 } | 348 } |
| OLD | NEW |