Changeset 28ecadb in mainline for kernel/genarch/src/ofw/ofw_tree.c
- Timestamp:
- 2006-09-22T21:44:54Z (18 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 5d684e4
- Parents:
- 16529d5
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/genarch/src/ofw/ofw_tree.c
r16529d5 r28ecadb 52 52 } 53 53 54 /** Get OpenFirmware node property. 55 * 56 * @param node Node in which to lookup the property. 57 * @param name Name of the property. 58 * 59 * @return Pointer to the property structure or NULL if no such property. 60 */ 61 ofw_tree_property_t *ofw_tree_getprop(const ofw_tree_node_t *node, const char *name) 62 { 63 int i; 64 65 for (i = 0; i < node->properties; i++) { 66 if (strcmp(node->property[i].name, name) == 0) 67 return &node->property[i]; 68 } 69 70 return NULL; 71 } 72 54 73 /** Return value of the 'name' property. 55 74 * … … 60 79 const char *ofw_tree_node_name(const ofw_tree_node_t *node) 61 80 { 62 int i;81 ofw_tree_property_t *prop; 63 82 64 for (i = 0; i < node->properties; i++) { 65 if (strncmp(node->property[i].name, "name", strlen("name")) == 0) { 66 if (node->property[i].size < 2) 67 panic("Invalid name property.\n"); 68 return node->property[i].value; 69 } 70 } 83 prop = ofw_tree_getprop(node, "name"); 84 if (!prop) 85 panic("Node without name property.\n"); 86 87 if (prop->size < 2) 88 panic("Invalid name property.\n"); 71 89 72 panic("Node without name property.\n");90 return prop->value; 73 91 } 74 92 … … 76 94 * 77 95 * @param node Node whose child is being looked up. 78 * @param da_name Disambigued name of the child being looked up.96 * @param name Name of the child being looked up. 79 97 * 80 98 * @return NULL if there is no such child or pointer to the matching child node. 81 99 */ 82 static ofw_tree_node_t *ofw_tree_find_child(ofw_tree_node_t *node, const char * da_name)100 static ofw_tree_node_t *ofw_tree_find_child(ofw_tree_node_t *node, const char *name) 83 101 { 84 102 ofw_tree_node_t *cur; 85 103 104 /* 105 * Try to find the disambigued name. 106 */ 86 107 for (cur = node->child; cur; cur = cur->peer) { 87 if (str ncmp(cur->da_name, da_name, strlen(da_name)) == 0)108 if (strcmp(cur->da_name, name) == 0) 88 109 return cur; 89 110 } 90 111 112 /* 113 * Disambigued name not found. 114 * Lets try our luck with possibly ambiguous "name" property. 115 * 116 * We need to do this because paths stored in "/aliases" 117 * are not always fully-qualified. 118 */ 119 for (cur = node->child; cur; cur = cur->peer) { 120 if (strcmp(ofw_tree_node_name(cur), name) == 0) 121 return cur; 122 } 123 91 124 return NULL; 92 125 }
Note:
See TracChangeset
for help on using the changeset viewer.