Changeset 0876062 in mainline
- Timestamp:
- 2011-03-30T13:19:28Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 3fddb55
- Parents:
- 4265fd4
- Location:
- uspace/srv/devman
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/devman/devman.c
r4265fd4 r0876062 1165 1165 } 1166 1166 1167 /** Find function with a specified name belonging to given device. 1168 * 1169 * Device tree rwlock should be held at least for reading. 1170 * 1171 * @param dev Device the function belongs to. 1172 * @param name Function name (not path). 1173 * @return Function node. 1174 * @retval NULL No function with given name. 1175 */ 1176 fun_node_t *find_fun_node_in_device(dev_node_t *dev, const char *name) 1177 { 1178 assert(dev != NULL); 1179 assert(name != NULL); 1180 1181 fun_node_t *fun; 1182 link_t *link; 1183 1184 for (link = dev->functions.next; 1185 link != &dev->functions; 1186 link = link->next) { 1187 fun = list_get_instance(link, fun_node_t, dev_functions); 1188 1189 if (str_cmp(name, fun->name) == 0) 1190 return fun; 1191 } 1192 1193 return NULL; 1194 } 1195 1167 1196 /** Find child function node with a specified name. 1168 1197 * … … 1175 1204 fun_node_t *find_node_child(fun_node_t *pfun, const char *name) 1176 1205 { 1177 fun_node_t *fun; 1178 link_t *link; 1179 1180 link = pfun->child->functions.next; 1181 1182 while (link != &pfun->child->functions) { 1183 fun = list_get_instance(link, fun_node_t, dev_functions); 1184 1185 if (str_cmp(name, fun->name) == 0) 1186 return fun; 1187 1188 link = link->next; 1189 } 1190 1191 return NULL; 1206 return find_fun_node_in_device(pfun->child, name); 1192 1207 } 1193 1208 -
uspace/srv/devman/devman.h
r4265fd4 r0876062 338 338 extern fun_node_t *find_fun_node(dev_tree_t *tree, devman_handle_t handle); 339 339 extern fun_node_t *find_fun_node_by_path(dev_tree_t *, char *); 340 extern fun_node_t *find_fun_node_in_device(dev_node_t *, const char *); 340 341 341 342 /* Device tree */ -
uspace/srv/devman/main.c
r4265fd4 r0876062 243 243 } 244 244 245 /* Check that function with same name is not there already. */ 246 if (find_fun_node_in_device(pdev, fun_name) != NULL) { 247 fibril_rwlock_write_unlock(&tree->rwlock); 248 async_answer_0(callid, EEXISTS); 249 printf(NAME ": Warning, driver tried to register `%s' twice.\n", 250 fun_name); 251 free(fun_name); 252 return; 253 } 254 245 255 fun_node_t *fun = create_fun_node(); 246 256 if (!insert_fun_node(&device_tree, fun, fun_name, pdev)) {
Note:
See TracChangeset
for help on using the changeset viewer.