Lines Matching refs:dev

7 static struct devman_device *_find_dev(struct devman_device *dev, int
9 static int devman_dev_add_info(struct devman_device *dev, struct
14 static int devman_del_device(struct devman_device *dev);
45 devman_generate_path(char* buf, int len, struct devman_device *dev) in devman_generate_path() argument
51 if (dev != NULL) { in devman_generate_path()
52 res = devman_generate_path(buf, len, dev->parent); in devman_generate_path()
56 name = get_inode_name(dev->inode.inode); in devman_generate_path()
75 devman_device_add_event(struct devman_device* dev) in devman_device_add_event() argument
91 res = devman_generate_path(event->data, DEVMAN_STRING_LEN - 11 , dev); in devman_device_add_event()
98 snprintf(buf, 12, " 0x%08x", dev->dev_id); in devman_device_add_event()
108 devman_device_remove_event(struct devman_device* dev) in devman_device_remove_event() argument
124 res = devman_generate_path(event->data, DEVMAN_STRING_LEN-11, dev); in devman_device_remove_event()
131 snprintf(buf, 12, " 0x%08x", dev->dev_id); in devman_device_remove_event()
227 struct devman_device *dev; in do_add_device() local
257 dev = devman_dev_add_child(parent, devinf); in do_add_device()
259 if (dev == NULL) { in do_add_device()
266 dev->state = DEVMAN_DEVICE_UNBOUND; in do_add_device()
268 dev->owner = msg->m_source; in do_add_device()
270 msg->DEVMAN_DEVICE_ID = dev->dev_id; in do_add_device()
272 devman_device_add_event(dev); in do_add_device()
283 _find_dev(struct devman_device *dev, int dev_id) in _find_dev() argument
287 if(dev->dev_id == dev_id) in _find_dev()
288 return dev; in _find_dev()
290 TAILQ_FOREACH(_dev, &dev->children, siblings) { in _find_dev()
315 (struct devman_device *dev, char * name, char *data) in devman_dev_add_static_info() argument
322 st_inode->dev = dev; in devman_dev_add_static_info()
332 inode->inode = add_inode(dev->inode.inode, name, in devman_dev_add_static_info()
336 TAILQ_INSERT_HEAD(&dev->infos, inode, inode_list); in devman_dev_add_static_info()
354 struct devman_device * dev = malloc(sizeof(struct devman_device)); in devman_dev_add_child() local
355 if (dev == NULL) { in devman_dev_add_child()
361 free(dev); in devman_dev_add_child()
365 dev->ref_count = 1; in devman_dev_add_child()
368 dev->parent = parent; in devman_dev_add_child()
369 dev->info = devinf; in devman_dev_add_child()
371 dev->dev_id = next_device_id++; in devman_dev_add_child()
373 dev->inode.inode = in devman_dev_add_child()
375 NO_INDEX, &default_dir_stat, 0, &dev->inode); in devman_dev_add_child()
377 TAILQ_INIT(&dev->children); in devman_dev_add_child()
378 TAILQ_INIT(&dev->infos); in devman_dev_add_child()
385 devman_dev_add_info(dev, &entries[i], buffer); in devman_dev_add_child()
389 snprintf(tmp_buf, DEVMAN_STRING_LEN, "%d",dev->dev_id); in devman_dev_add_child()
390 devman_dev_add_static_info(dev, "devman_id", tmp_buf); in devman_dev_add_child()
392 TAILQ_INSERT_HEAD(&parent->children, dev, siblings); in devman_dev_add_child()
397 return dev; in devman_dev_add_child()
405 (struct devman_device *dev, struct devman_device_info_entry *entry, char *buf) in devman_dev_add_info() argument
410 return devman_dev_add_static_info(dev, in devman_dev_add_info()
431 struct devman_device *dev = _find_dev(&root_dev, dev_id); in do_del_device() local
433 if (dev == NULL ) { in do_del_device()
439 if (dev->parent->owner != ep) { in do_del_device()
445 devman_device_remove_event(dev); in do_del_device()
446 if (dev->state == DEVMAN_DEVICE_BOUND) { in do_del_device()
447 dev->state = DEVMAN_DEVICE_ZOMBIE; in do_del_device()
449 devman_put_device(dev); in do_del_device()
460 void devman_get_device(struct devman_device *dev) in devman_get_device() argument
462 if (dev == NULL || dev == &root_dev) { in devman_get_device()
465 dev->ref_count++; in devman_get_device()
471 void devman_put_device(struct devman_device *dev) in devman_put_device() argument
473 if (dev == NULL || dev == &root_dev ) { in devman_put_device()
476 dev->ref_count--; in devman_put_device()
477 if (dev->ref_count == 0) { in devman_put_device()
478 devman_del_device(dev); in devman_put_device()
485 static int devman_del_device(struct devman_device *dev) in devman_del_device() argument
493 TAILQ_FOREACH_SAFE(inode, &dev->infos, inode_list, _inode) { in devman_del_device()
497 TAILQ_REMOVE(&dev->infos, inode, inode_list); in devman_del_device()
507 delete_inode(dev->inode.inode); in devman_del_device()
510 TAILQ_REMOVE(&dev->parent->children, dev, siblings); in devman_del_device()
512 devman_put_device(dev->parent); in devman_del_device()
515 free(dev->info); in devman_del_device()
518 free(dev); in devman_del_device()