Thread (112 messages) 112 messages, 9 authors, 2016-05-29
STALE3680d REVIEWED: 1 (0M)

[PATCH kexec-tools 11/32] kexec: add mem_regions sorting implementation

From: Pratyush Anand <hidden>
Date: 2016-05-25 08:00:27
Also in: kexec

On Tue, May 3, 2016 at 3:52 PM, Russell King [off-list ref] wrote:
Add a mem_regions sorting implementation taken from the arm code.

Signed-off-by: Russell King <redacted>
Reviewed-by: Pratyush Anand <redacted>
quoted hunk ↗ jump to hunk
---
 kexec/mem_regions.c | 27 +++++++++++++++++++++++++++
 kexec/mem_regions.h |  2 ++
 2 files changed, 29 insertions(+)
diff --git a/kexec/mem_regions.c b/kexec/mem_regions.c
index a4952ff..804984a 100644
--- a/kexec/mem_regions.c
+++ b/kexec/mem_regions.c
@@ -1,6 +1,33 @@
+#include <stdlib.h>
+
 #include "kexec.h"
 #include "mem_regions.h"

+static int mem_range_cmp(const void *a1, const void *a2)
+{
+       const struct memory_range *r1 = a1;
+       const struct memory_range *r2 = a2;
+
+       if (r1->start > r2->start)
+               return 1;
+       if (r1->start < r2->start)
+               return -1;
+
+       return 0;
+}
+
+/**
+ * mem_regions_sort() - sort ranges into ascending address order
+ * @ranges: ranges to sort
+ *
+ * Sort the memory regions into ascending address order.
+ */
+void mem_regions_sort(struct memory_ranges *ranges)
+{
+       qsort(ranges->ranges, ranges->size, sizeof(ranges->ranges),
+             mem_range_cmp);
+}
+
 /**
  * mem_regions_add() - add a memory region to a set of ranges
  * @ranges: ranges to add the memory region to
diff --git a/kexec/mem_regions.h b/kexec/mem_regions.h
index b9cfba1..da7b5e8 100644
--- a/kexec/mem_regions.h
+++ b/kexec/mem_regions.h
@@ -3,6 +3,8 @@

 struct memory_ranges;

+void mem_regions_sort(struct memory_ranges *ranges);
+
 int mem_regions_add(struct memory_ranges *ranges, unsigned long long base,
                     unsigned long long length, int type);

--
1.9.1
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help