Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(356)

Side by Side Diff: src/platform/vboot_reference/cgptlib/cgptlib.c

Issue 2083020: support 'cgpt repair' (Closed) Base URL: ssh://git@chromiumos-git/chromeos
Patch Set: Created 10 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | src/platform/vboot_reference/utility/cgpt/Makefile » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 <string.h> 7 #include <string.h>
8 #include "cgptlib_internal.h" 8 #include "cgptlib_internal.h"
9 #include "crc32.h" 9 #include "crc32.h"
10 #include "gpt.h" 10 #include "gpt.h"
11 #include "quick_sort.h" 11 #include "quick_sort.h"
12 #include "utility.h" 12 #include "utility.h"
13 13
14 /* Macro to invalidate a GPT header/entries */ 14 /* Macro to invalidate a GPT header/entries */
15 #define INVALIDATE_HEADER(valid_headers, index) \ 15 #define INVALIDATE_HEADER(valid_headers, index) \
16 do { \ 16 do { \
17 debug("- INVALIDATE_HEADER() at %s():%d\n", __FUNCTION__, __LINE__); \ 17 debug("- INVALIDATE_HEADER() at %s():%d\n", __FUNCTION__, __LINE__); \
18 valid_headers &= ~(1<<index); \ 18 valid_headers &= ~(1<<index); \
19 } while (0) 19 } while (0)
20 #define INVALIDATE_ENTRIES(valid_entries, index) \ 20 #define INVALIDATE_ENTRIES(valid_entries, index) \
21 do { \ 21 do { \
22 debug("- INVALIDATE_ENTRIES() at %s():%d\n", __FUNCTION__, __LINE__); \ 22 debug("- INVALIDATE_ENTRIES() at %s():%d\n", __FUNCTION__, __LINE__); \
23 valid_entries &= ~(1<<index); \ 23 valid_entries &= ~(1<<index); \
24 } while (0) 24 } while (0)
25 25
26 const char *GptError(int errno) { 26 const char *GptError(int errno) {
27 const char *error_string[] = { 27 const char *error_string[] = {
28 /* GPT_SUCCESS */ "Success", 28 /* GPT_SUCCESS */ "Success",
29 /* GPT_ERROR_NO_VALID_KERNEL */ "No valid kernel entry", 29 /* GPT_ERROR_NO_VALID_KERNEL */ "No valid kernel entry",
30 /* GPT_ERROR_INVALID_HEADERS */ "Invalid headers", 30 /* GPT_ERROR_INVALID_HEADERS */ "Both primary and secondary headers are "
31 /* GPT_ERROR_INVALID_ENTRIES */ "Invalid entries", 31 "invalid.",
32 /* GPT_ERROR_INVALID_ENTRIES */ "Both primary and secondary entries are "
33 "invalid.",
32 /* GPT_ERROR_INVALID_SECTOR_SIZE */ "Invalid sector size", 34 /* GPT_ERROR_INVALID_SECTOR_SIZE */ "Invalid sector size",
33 /* GPT_ERROR_INVALID_SECTOR_NUMBER */ "Invalid sector number", 35 /* GPT_ERROR_INVALID_SECTOR_NUMBER */ "Invalid sector number",
34 /* GPT_ERROR_INVALID_UPDATE_TYPE */ "Invalid update type", 36 /* GPT_ERROR_INVALID_UPDATE_TYPE */ "Invalid update type",
35 }; 37 };
36 return error_string[errno]; 38 return error_string[errno];
37 } 39 }
38 40
39 /* Checks if sector_bytes and drive_sectors are valid values. */ 41 /* Checks if sector_bytes and drive_sectors are valid values. */
40 int CheckParameters(GptData *gpt) { 42 int CheckParameters(GptData *gpt) {
41 /* Currently, we only support 512-byte sector. In the future, we may support 43 /* Currently, we only support 512-byte sector. In the future, we may support
(...skipping 717 matching lines...) Expand 10 before | Expand all | Expand 10 after
759 RepairEntries(gpt, MASK_PRIMARY); 761 RepairEntries(gpt, MASK_PRIMARY);
760 /* Actually two entries are dirty now. 762 /* Actually two entries are dirty now.
761 * Also two headers are dirty because entries_crc32 has been updated. */ 763 * Also two headers are dirty because entries_crc32 has been updated. */
762 gpt->modified |= (GPT_MODIFIED_HEADER1 | GPT_MODIFIED_ENTRIES1 | 764 gpt->modified |= (GPT_MODIFIED_HEADER1 | GPT_MODIFIED_ENTRIES1 |
763 GPT_MODIFIED_HEADER2 | GPT_MODIFIED_ENTRIES2); 765 GPT_MODIFIED_HEADER2 | GPT_MODIFIED_ENTRIES2);
764 UpdateCrc(gpt); 766 UpdateCrc(gpt);
765 } 767 }
766 768
767 return GPT_SUCCESS; 769 return GPT_SUCCESS;
768 } 770 }
OLDNEW
« no previous file with comments | « no previous file | src/platform/vboot_reference/utility/cgpt/Makefile » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698