| 66 | } |
| 67 | |
| 68 | void *dtb_node_load_from_memory(void *dtb_ptr, rt_bool_t is_clone) |
| 69 | { |
| 70 | void *fdt = NULL; |
| 71 | |
| 72 | if (dtb_ptr == NULL) |
| 73 | { |
| 74 | fdt_exec_status = FDT_RET_GET_EMPTY; |
| 75 | goto end; |
| 76 | } |
| 77 | |
| 78 | if (dtb_node_check(dtb_ptr) == RT_FALSE) |
| 79 | { |
| 80 | fdt_exec_status = FDT_RET_GET_EMPTY; |
| 81 | fdt = NULL; |
| 82 | goto end; |
| 83 | } |
| 84 | |
| 85 | if (is_clone) |
| 86 | { |
| 87 | size_t dtb_sz = fdt_totalsize(dtb_ptr); |
| 88 | if (dtb_sz > 0) |
| 89 | { |
| 90 | if ((fdt = (size_t *)malloc(dtb_sz)) != NULL) |
| 91 | { |
| 92 | memcpy(fdt, dtb_ptr, dtb_sz); |
| 93 | } |
| 94 | else |
| 95 | { |
| 96 | fdt_exec_status = FDT_RET_NO_MEMORY; |
| 97 | } |
| 98 | } |
| 99 | } |
| 100 | else |
| 101 | { |
| 102 | fdt = dtb_ptr; |
| 103 | } |
| 104 | |
| 105 | end: |
| 106 | return fdt; |
| 107 | } |
no test coverage detected