Lines Matching refs:dir

78 		} dir;
217 scan_for_drivers_if_needed(devfs_vnode* dir)
219 ASSERT(S_ISDIR(dir->stream.type));
221 MutexLocker _(dir->stream.u.dir.scan_lock);
223 if (dir->stream.u.dir.scanned >= scan_mode())
230 get_device_name(dir, path.LockBuffer(), path.BufferSize());
241 dir->stream.u.dir.scanned = scan_mode();
250 mutex_init(&vnode->stream.u.dir.scan_lock, "devfs scan");
251 vnode->stream.u.dir.dir_head = NULL;
252 list_init(&vnode->stream.u.dir.cookies);
290 && vnode->stream.u.dir.dir_head != NULL)
308 mutex_destroy(&vnode->stream.u.dir.scan_lock);
320 update_dir_cookies(struct devfs_vnode* dir, struct devfs_vnode* vnode)
325 &dir->stream.u.dir.cookies, cookie)) != NULL) {
333 devfs_find_in_dir(struct devfs_vnode* dir, const char* path)
337 if (!S_ISDIR(dir->stream.type))
341 return dir;
343 return dir->parent;
345 for (vnode = dir->stream.u.dir.dir_head; vnode; vnode = vnode->dir_next) {
357 devfs_insert_in_dir(struct devfs_vnode* dir, struct devfs_vnode* vnode,
360 if (!S_ISDIR(dir->stream.type))
365 devfs_vnode* node = dir->stream.u.dir.dir_head;
373 vnode->dir_next = dir->stream.u.dir.dir_head;
374 dir->stream.u.dir.dir_head = vnode;
381 vnode->parent = dir;
382 dir->modification_time = current_timespec();
385 notify_entry_created(sDeviceFileSystem->id, dir->id, vnode->name,
387 notify_stat_changed(sDeviceFileSystem->id, get_parent_id(dir), dir->id,
395 devfs_remove_from_dir(struct devfs_vnode* dir, struct devfs_vnode* removeNode,
398 struct devfs_vnode* vnode = dir->stream.u.dir.dir_head;
404 update_dir_cookies(dir, vnode);
409 dir->stream.u.dir.dir_head = vnode->dir_next;
411 dir->modification_time = current_timespec();
414 notify_entry_removed(sDeviceFileSystem->id, dir->id, vnode->name,
416 notify_stat_changed(sDeviceFileSystem->id, get_parent_id(dir),
417 dir->id, B_STAT_MODIFICATION_TIME);
601 struct devfs_vnode* dir = fs->root_vnode;
618 vnode = devfs_find_in_dir(dir, &temp[last]);
622 dir = vnode;
630 vnode = devfs_create_vnode(fs, dir, &temp[last]);
639 publish_node(sDeviceFileSystem, dir, vnode);
642 dir = vnode;
666 struct devfs_vnode* dir = fs->root_vnode;
686 vnode = devfs_find_in_dir(dir, &temp[last]);
690 // this is a dir we're okay
693 dir = vnode;
698 // or we aren't but hit a non-dir node.
703 vnode = devfs_create_vnode(fs, dir, &temp[last]);
712 // this is a dir
714 publish_node(fs, dir, vnode);
723 *_dir = dir;
728 dir = vnode;
774 // the node is now fully valid and we may insert it into the dir
835 kprintf(" dir next: %p\n", vnode->dir_next);
838 kprintf(" dir scanned: %" B_PRId32 "\n", vnode->stream.u.dir.scanned);
841 devfs_vnode* children = vnode->stream.u.dir.dir_head;
940 // create a dir stream for it to hold
1002 struct devfs_vnode* dir = (struct devfs_vnode*)_dir->private_node;
1006 TRACE(("devfs_lookup: entry dir %p, name '%s'\n", dir, name));
1008 if (!S_ISDIR(dir->stream.type))
1012 scan_for_drivers_if_needed(dir);
1017 vnode = devfs_find_in_dir(dir, name);
1098 // can't remove node if it's linked to the dir
1099 panic("devfs_removevnode: vnode %p asked to be removed is present in dir\n", vnode);
1281 struct devfs_vnode* dir = (struct devfs_vnode*)_dir->private_node;
1283 struct devfs_vnode* vnode = devfs_find_in_dir(dir, name);
1288 vnode = devfs_create_vnode(fs, dir, name);
1295 publish_node(sDeviceFileSystem, dir, vnode);
1322 cookie->current = vnode->stream.u.dir.dir_head;
1325 list_add_item(&vnode->stream.u.dir.cookies, cookie);
1343 list_remove_item(&vnode->stream.u.dir.cookies, cookie);
1374 nextChildNode = vnode->stream.u.dir.dir_head;
1380 nextChildNode = vnode->stream.u.dir.dir_head;
1431 cookie->current = vnode->stream.u.dir.dir_head;