From 73664ab25edf4df76e39d016a1ac4cdcd684b61d Mon Sep 17 00:00:00 2001 From: Anton Staaf Date: Thu, 17 Feb 2011 09:22:32 -0800 Subject: 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 --- GNUmakefile | 1 + cbootimage.c | 59 +----------------------------------------- context.c | 83 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ context.h | 31 +++++++++++++++++++++++ 4 files changed, 116 insertions(+), 58 deletions(-) create mode 100644 context.c create mode 100644 context.h 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 */ -- cgit v1.2.1