From 2bc5b66d7f6c441bf6183a6f769a95de6f90297b Mon Sep 17 00:00:00 2001 From: Thierry Reding Date: Tue, 26 Mar 2019 16:33:00 +0100 Subject: libfdt: Add new maximum phandle lookup function The fdt_get_max_phandle() function has some shortcomings. On one hand it returns just a uint32_t which means to check for the "negative" error code a caller has to explicitly check against the error code (uint32_t)-1. In addition, the -1 is the only error code that can be returned, so a caller cannot tell the difference between the various failures. Fix this by adding a new fdt_find_max_phandle() function that returns an error code on failure and 0 on success, just like other APIs, and stores the maximum phandle value in an output argument on success. This also refactors fdt_get_max_phandle() to use the new function. Add a note pointing out that the new fdt_find_max_phandle() function should be preferred over fdt_get_max_phandle(). Signed-off-by: Thierry Reding Message-Id: <20190326153302.17109-1-thierry.reding@gmail.com> [dwg: Reword for some inaccuracies in the commit message] Signed-off-by: David Gibson --- tests/get_phandle.c | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'tests') diff --git a/tests/get_phandle.c b/tests/get_phandle.c index 22bd7b8..6973ee4 100644 --- a/tests/get_phandle.c +++ b/tests/get_phandle.c @@ -46,6 +46,7 @@ int main(int argc, char *argv[]) { uint32_t max; void *fdt; + int err; test_init(argc, argv); fdt = load_blob_arg(argc, argv); @@ -54,6 +55,14 @@ int main(int argc, char *argv[]) check_phandle(fdt, "/subnode@2", PHANDLE_1); check_phandle(fdt, "/subnode@2/subsubnode@0", PHANDLE_2); + err = fdt_find_max_phandle(fdt, &max); + if (err < 0) + FAIL("fdt_find_max_phandle returned %d instead of 0\n", err); + + if (max != PHANDLE_2) + FAIL("fdt_find_max_phandle found 0x%x instead of 0x%x", max, + PHANDLE_2); + max = fdt_get_max_phandle(fdt); if (max != PHANDLE_2) FAIL("fdt_get_max_phandle returned 0x%x instead of 0x%x\n", -- cgit v1.1