summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Staaf <robotboy@chromium.org>2011-02-17 09:22:32 -0800
committerAnton Staaf <robotboy@chromium.org>2011-02-17 09:22:32 -0800
commit73664ab25edf4df76e39d016a1ac4cdcd684b61d (patch)
tree47e26c7602b711eaa08a93fb60aa06987c2fb6b5
parentfd81bb6a706a105f0e5dbea6f6e18b1d701d5e33 (diff)
downloadnvidia-cbootimage-73664ab25edf4df76e39d016a1ac4cdcd684b61d.tar.gz
Factor out the context specific functions into their own file.
These will be reused by my BCT display tool. Change-Id: I88d595412ec439a96231b81253eb04ed4bfd377d BUG=chromium-os:10502 TEST=run cbootimage on test config. Review URL: http://codereview.chromium.org/6469010
-rw-r--r--GNUmakefile1
-rw-r--r--cbootimage.c59
-rw-r--r--context.c83
-rw-r--r--context.h31
4 files changed, 116 insertions, 58 deletions
diff --git a/GNUmakefile b/GNUmakefile
index 6233fcd..f5b1e51 100644
--- a/GNUmakefile
+++ b/GNUmakefile
@@ -6,6 +6,7 @@ C_FILES += parse.c
C_FILES += set.c
C_FILES += crypto.c
C_FILES += aes_ref.c
+C_FILES += context.c
OBJS := $(patsubst %.c,%.o,$(notdir $(C_FILES)))
diff --git a/cbootimage.c b/cbootimage.c
index 798ce04..1792749 100644
--- a/cbootimage.c
+++ b/cbootimage.c
@@ -30,6 +30,7 @@
#include "data_layout.h"
#include "parse.h"
#include "set.h"
+#include "context.h"
/*
* Global data
@@ -43,64 +44,6 @@ static int help_only = 0; // Only print help & exit
*/
int main(int argc, char *argv[]);
-static int
-query_alloc(build_image_context *context,
- nvbct_lib_id size_id,
- u_int8_t **dst)
-{
- u_int32_t size;
-
- /* Note: 3rd argument not used in this particular query. */
- if (context->bctlib.get_value(size_id,
- &size, context->bct) != 0)
- return -ENODATA;
- *dst = malloc(size);
-
- if (*dst == NULL)
- return -ENOMEM;
-
- memset(*dst, 0, size);
-
- return 0;
-}
-
-static void
-cleanup_context(build_image_context *context)
-{
- destroy_block_list(context->memory);
- destroy_addon_list(context->addon_tbl.addon_item_list);
- free(context->bct);
-}
-
-static int
-init_context(build_image_context *context)
-{
- int e = 0;
-
- /* Set defaults */
- context->memory = new_block_list();
- context->journal_blk = 1; /* Default to 1st block */
-
- /* Allocate space for the bct.
- * Note that this is different from the old code which pointed directly
- * into a memory image.
- */
- e = query_alloc(context, nvbct_lib_id_bct_size, &(context->bct));
- if (e != 0)
- goto fail;
-
- context_set_value(context, token_page_size, 2048);
- context_set_value(context, token_redundancy, 1);
- context_set_value(context, token_version, 1);
-
- return 0;
-
- fail:
- cleanup_context(context);
-
- return e;
-}
-
int
write_image_file(build_image_context *context)
{
diff --git a/context.c b/context.c
new file mode 100644
index 0000000..771b7fe
--- /dev/null
+++ b/context.c
@@ -0,0 +1,83 @@
+/**
+ * Copyright (c) 2011 NVIDIA Corporation. All rights reserved.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include "cbootimage.h"
+#include "data_layout.h"
+#include "set.h"
+
+static int
+query_alloc(build_image_context *context,
+ nvbct_lib_id size_id,
+ u_int8_t **dst)
+{
+ u_int32_t size;
+
+ /* Note: 3rd argument not used in this particular query. */
+ if (context->bctlib.get_value(size_id,
+ &size, context->bct) != 0)
+ return -ENODATA;
+ *dst = malloc(size);
+
+ if (*dst == NULL)
+ return -ENOMEM;
+
+ memset(*dst, 0, size);
+
+ return 0;
+}
+
+void
+cleanup_context(build_image_context *context)
+{
+ destroy_block_list(context->memory);
+ destroy_addon_list(context->addon_tbl.addon_item_list);
+ free(context->bct);
+}
+
+int
+init_context(build_image_context *context)
+{
+ int e = 0;
+
+ /* Set defaults */
+ context->memory = new_block_list();
+ context->journal_blk = 1; /* Default to 1st block */
+
+ /* Allocate space for the bct.
+ * Note that this is different from the old code which pointed directly
+ * into a memory image.
+ */
+ e = query_alloc(context, nvbct_lib_id_bct_size, &(context->bct));
+ if (e != 0)
+ goto fail;
+
+ context_set_value(context, token_page_size, 2048);
+ context_set_value(context, token_redundancy, 1);
+ context_set_value(context, token_version, 1);
+
+ return 0;
+
+ fail:
+ cleanup_context(context);
+
+ return e;
+}
diff --git a/context.h b/context.h
new file mode 100644
index 0000000..b758055
--- /dev/null
+++ b/context.h
@@ -0,0 +1,31 @@
+/**
+ * Copyright (c) 2011 NVIDIA Corporation. All rights reserved.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#ifndef INCLUDED_CONTEXT_H
+#define INCLUDED_CONTEXT_H
+
+#include "cbootimage.h"
+
+int init_context(build_image_context *context);
+void cleanup_context(build_image_context *context);
+
+#endif /* #ifndef INCLUDED_CONTEXT_H */