OLD | NEW |
1 /** | 1 /** |
2 * Copyright (c) 2011 NVIDIA Corporation. All rights reserved. | 2 * Copyright (c) 2011 NVIDIA Corporation. All rights reserved. |
3 * | 3 * |
4 * See file CREDITS for list of people who contributed to this | 4 * See file CREDITS for list of people who contributed to this |
5 * project. | 5 * project. |
6 * | 6 * |
7 * This program is free software; you can redistribute it and/or | 7 * This program is free software; you can redistribute it and/or |
8 * modify it under the terms of the GNU General Public License as | 8 * modify it under the terms of the GNU General Public License as |
9 * published by the Free Software Foundation; either version 2 of | 9 * published by the Free Software Foundation; either version 2 of |
10 * the License, or (at your option) any later version. | 10 * the License, or (at your option) any later version. |
(...skipping 12 matching lines...) Expand all Loading... |
23 /* | 23 /* |
24 * cbootimage.c - Implementation of the cbootimage tool. | 24 * cbootimage.c - Implementation of the cbootimage tool. |
25 */ | 25 */ |
26 | 26 |
27 #include "cbootimage.h" | 27 #include "cbootimage.h" |
28 #include "nvbctlib.h" | 28 #include "nvbctlib.h" |
29 #include "crypto.h" | 29 #include "crypto.h" |
30 #include "data_layout.h" | 30 #include "data_layout.h" |
31 #include "parse.h" | 31 #include "parse.h" |
32 #include "set.h" | 32 #include "set.h" |
| 33 #include "context.h" |
33 | 34 |
34 /* | 35 /* |
35 * Global data | 36 * Global data |
36 */ | 37 */ |
37 int enable_debug = 0; | 38 int enable_debug = 0; |
38 | 39 |
39 static int help_only = 0; // Only print help & exit | 40 static int help_only = 0; // Only print help & exit |
40 | 41 |
41 /* | 42 /* |
42 * Function prototypes | 43 * Function prototypes |
43 */ | 44 */ |
44 int main(int argc, char *argv[]); | 45 int main(int argc, char *argv[]); |
45 | 46 |
46 static int | |
47 query_alloc(build_image_context *context, | |
48 nvbct_lib_id size_id, | |
49 u_int8_t **dst) | |
50 { | |
51 u_int32_t size; | |
52 | |
53 /* Note: 3rd argument not used in this particular query. */ | |
54 if (context->bctlib.get_value(size_id, | |
55 &size, context->bct) != 0) | |
56 return -ENODATA; | |
57 *dst = malloc(size); | |
58 | |
59 if (*dst == NULL) | |
60 return -ENOMEM; | |
61 | |
62 memset(*dst, 0, size); | |
63 | |
64 return 0; | |
65 } | |
66 | |
67 static void | |
68 cleanup_context(build_image_context *context) | |
69 { | |
70 destroy_block_list(context->memory); | |
71 destroy_addon_list(context->addon_tbl.addon_item_list); | |
72 free(context->bct); | |
73 } | |
74 | |
75 static int | |
76 init_context(build_image_context *context) | |
77 { | |
78 int e = 0; | |
79 | |
80 /* Set defaults */ | |
81 context->memory = new_block_list(); | |
82 context->journal_blk = 1; /* Default to 1st block */ | |
83 | |
84 /* Allocate space for the bct. | |
85 * Note that this is different from the old code which pointed directly | |
86 * into a memory image. | |
87 */ | |
88 e = query_alloc(context, nvbct_lib_id_bct_size, &(context->bct)); | |
89 if (e != 0) | |
90 goto fail; | |
91 | |
92 context_set_value(context, token_page_size, 2048); | |
93 context_set_value(context, token_redundancy, 1); | |
94 context_set_value(context, token_version, 1); | |
95 | |
96 return 0; | |
97 | |
98 fail: | |
99 cleanup_context(context); | |
100 | |
101 return e; | |
102 } | |
103 | |
104 int | 47 int |
105 write_image_file(build_image_context *context) | 48 write_image_file(build_image_context *context) |
106 { | 49 { |
107 assert(context != NULL); | 50 assert(context != NULL); |
108 | 51 |
109 return write_block_raw(context); | 52 return write_block_raw(context); |
110 } | 53 } |
111 | 54 |
112 static void | 55 static void |
113 usage(void) | 56 usage(void) |
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
249 fail: | 192 fail: |
250 /* Close the file(s). */ | 193 /* Close the file(s). */ |
251 if (context.raw_file) | 194 if (context.raw_file) |
252 fclose(context.raw_file); | 195 fclose(context.raw_file); |
253 | 196 |
254 /* Clean up memory. */ | 197 /* Clean up memory. */ |
255 cleanup_context(&context); | 198 cleanup_context(&context); |
256 | 199 |
257 return e; | 200 return e; |
258 } | 201 } |
OLD | NEW |