From f040d95b847c4f7d1fa4c3c6309127b8c1ffd8b3 Mon Sep 17 00:00:00 2001 From: David Gibson Date: Mon, 24 Oct 2005 18:18:38 +1000 Subject: Rework tracking of reserve entries during processing. This is initial work to allow more powerful handling of reserve entries. --- livetree.c | 44 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 2 deletions(-) (limited to 'livetree.c') diff --git a/livetree.c b/livetree.c index 6a1f4f9..ef54174 100644 --- a/livetree.c +++ b/livetree.c @@ -108,6 +108,46 @@ void add_child(struct node *parent, struct node *child) *p = child; } +struct reserve_info *build_reserve_entry(u64 address, u64 size, char *label) +{ + struct reserve_info *new = xmalloc(sizeof(*new)); + + new->re.address = address; + new->re.size = size; + + new->next = NULL; + + new->label = label; + + return new; +} + +struct reserve_info *chain_reserve_entry(struct reserve_info *first, + struct reserve_info *list) +{ + assert(first->next == NULL); + + first->next = list; + return first; +} + +struct reserve_info *add_reserve_entry(struct reserve_info *list, + struct reserve_info *new) +{ + struct reserve_info *last; + + new->next = NULL; + + if (! list) + return new; + + for (last = list; last->next; last = last->next) + ; + + last->next = new; + + return list; +} /* * Tree accessor functions @@ -682,13 +722,13 @@ int check_device_tree(struct node *dt) return 1; } -struct boot_info *build_boot_info(struct data mem_reserve_data, +struct boot_info *build_boot_info(struct reserve_info *reservelist, struct node *tree) { struct boot_info *bi; bi = xmalloc(sizeof(*bi)); - bi->mem_reserve_data = mem_reserve_data; + bi->reservelist = reservelist; bi->dt = tree; return bi; -- cgit v1.2.1