<p>Patrick Rudolph has uploaded this change for <strong>review</strong>.</p><p><a href="https://review.coreboot.org/25582">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">lib/memrange: Introduce method to clone memrange<br><br>Add a new method to clone an existing memrange with all of its entries.<br>Required for new bootmem type LB_MEM_RAM_DONT_OVERLAP.<br><br>Change-Id: I64b27bf2611ca310385ef680f030a3e4aa0c2680<br>Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com><br>---<br>M src/include/memrange.h<br>M src/lib/memrange.c<br>2 files changed, 19 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://review.coreboot.org:29418/coreboot refs/changes/82/25582/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/include/memrange.h b/src/include/memrange.h</span><br><span>index 46a992a..7f42aa2 100644</span><br><span>--- a/src/include/memrange.h</span><br><span>+++ b/src/include/memrange.h</span><br><span>@@ -98,6 +98,9 @@</span><br><span>               unsigned long mask, unsigned long match,</span><br><span>                     unsigned long tag);</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* Clone a memrange. The new memrange has the same entries as the old one. */</span><br><span style="color: hsl(120, 100%, 40%);">+void memranges_clone(struct memranges *newranges, struct memranges *oldranges);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /* Remove and free all entries within the memranges structure. */</span><br><span> void memranges_teardown(struct memranges *ranges);</span><br><span> </span><br><span>diff --git a/src/lib/memrange.c b/src/lib/memrange.c</span><br><span>index d3cda12..96d7524 100644</span><br><span>--- a/src/lib/memrange.c</span><br><span>+++ b/src/lib/memrange.c</span><br><span>@@ -310,6 +310,22 @@</span><br><span>     memranges_add_resources(ranges, mask, match, tag);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* Clone a memrange. The new memrange has the same entries as the old one. */</span><br><span style="color: hsl(120, 100%, 40%);">+void memranges_clone(struct memranges *newranges, struct memranges *oldranges)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+ struct range_entry *r, *cur;</span><br><span style="color: hsl(120, 100%, 40%);">+  struct range_entry **prev_ptr;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      memranges_init_empty(newranges, NULL, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   prev_ptr = &newranges->entries;</span><br><span style="color: hsl(120, 100%, 40%);">+        memranges_each_entry(r, oldranges) {</span><br><span style="color: hsl(120, 100%, 40%);">+          cur = range_list_add(newranges, prev_ptr, r->begin, r->end,</span><br><span style="color: hsl(120, 100%, 40%);">+                                  r->tag);</span><br><span style="color: hsl(120, 100%, 40%);">+              prev_ptr = &cur->next;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> void memranges_teardown(struct memranges *ranges)</span><br><span> {</span><br><span>     while (ranges->entries != NULL) {</span><br><span></span><br></pre><p>To view, visit <a href="https://review.coreboot.org/25582">change 25582</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://review.coreboot.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://review.coreboot.org/25582"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: coreboot </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: I64b27bf2611ca310385ef680f030a3e4aa0c2680 </div>
<div style="display:none"> Gerrit-Change-Number: 25582 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Patrick Rudolph <patrick.rudolph@9elements.com> </div>