[PATCH 04/10] pylibfdt: Add support for reading the memory reserve map

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]



Add a way to access this information from Python.

Signed-off-by: Simon Glass <sjg@xxxxxxxxxxxx>
---

 pylibfdt/libfdt.i       | 34 ++++++++++++++++++++++++++++++++++
 tests/pylibfdt_tests.py |  8 ++++++++
 2 files changed, 42 insertions(+)

diff --git a/pylibfdt/libfdt.i b/pylibfdt/libfdt.i
index e837168..c0cd096 100644
--- a/pylibfdt/libfdt.i
+++ b/pylibfdt/libfdt.i
@@ -313,6 +313,25 @@ class Fdt:
         """
         return check_err(fdt_size_dt_struct(self._fdt))
 
+    def num_mem_rsv(self, quiet=()):
+        """Return the number of memory reserve-map records
+
+        Returns:
+            Number of memory reserve-map records
+        """
+        return check_err(fdt_num_mem_rsv(self._fdt), quiet)
+
+    def get_mem_rsv(self, index, quiet=()):
+        """Return the indexed memory reserve-map record
+
+        Args:
+            index: Record to return (0=first)
+
+        Returns:
+            Number of memory reserve-map records
+        """
+        return check_err(fdt_get_mem_rsv(self._fdt, index), quiet)
+
     def subnode_offset(self, parentoffset, name, quiet=()):
         """Get the offset of a named subnode
 
@@ -618,6 +637,21 @@ typedef int fdt32_t;
 
 %apply int *depth { int *depth };
 
+/* typemaps for fdt_get_mem_rsv */
+%typemap(in, numinputs=0) uint64_t * (uint64_t temp) {
+   $1 = &temp;
+}
+
+%typemap(argout) uint64_t * {
+        PyObject *val = PyLong_FromUnsignedLong(*arg$argnum);
+        if (!result) {
+           if (PyTuple_GET_SIZE(resultobj) == 0)
+              resultobj = val;
+           else
+              resultobj = SWIG_Python_AppendOutput(resultobj, val);
+        }
+}
+
 /* We have both struct fdt_property and a function fdt_property() */
 %warnfilter(302) fdt_property;
 
diff --git a/tests/pylibfdt_tests.py b/tests/pylibfdt_tests.py
index 8316499..ca27b0b 100644
--- a/tests/pylibfdt_tests.py
+++ b/tests/pylibfdt_tests.py
@@ -369,5 +369,13 @@ class PyLibfdtTests(unittest.TestCase):
                           self.get_prop("prop-uint64").as_uint64())
         self.assertEquals(-2, self.get_prop("prop-int64").as_int64())
 
+    def testReserveMap(self):
+        """Test that we can access the memory reserve map"""
+        self.assertEquals(2, self.fdt.num_mem_rsv())
+        self.assertEquals([ 0xdeadbeef00000000, 0x100000],
+                          self.fdt.get_mem_rsv(0))
+        self.assertEquals([123456789, 010000], self.fdt.get_mem_rsv(1))
+
+
 if __name__ == "__main__":
     unittest.main()
-- 
2.17.0.441.gb46fe60e1d-goog

--
To unsubscribe from this list: send the line "unsubscribe devicetree-compiler" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Device Tree]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux