* Renamed publish_node() to new_node().

* Introduced a new publish_node() which then actually publishs the node,
  similar to the VFS's new_vnode(), and publish_vnode() semantics.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24762 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Axel Dörfler
2008-04-03 08:24:50 +00:00
parent a5140cad6a
commit 025b367502
+15 -9
View File
@@ -1176,7 +1176,7 @@ out:
static status_t static status_t
publish_node(struct devfs *fs, const char *path, struct devfs_vnode **_node, new_node(struct devfs *fs, const char *path, struct devfs_vnode **_node,
struct devfs_vnode **_dir) struct devfs_vnode **_dir)
{ {
ASSERT_LOCKED_MUTEX(&fs->lock); ASSERT_LOCKED_MUTEX(&fs->lock);
@@ -1242,7 +1242,7 @@ publish_node(struct devfs *fs, const char *path, struct devfs_vnode **_node,
vnode->stream.u.dir.dir_head = NULL; vnode->stream.u.dir.dir_head = NULL;
list_init(&vnode->stream.u.dir.cookies); list_init(&vnode->stream.u.dir.cookies);
hash_insert(sDeviceFileSystem->vnode_hash, vnode); hash_insert(fs->vnode_hash, vnode);
devfs_insert_in_dir(dir, vnode); devfs_insert_in_dir(dir, vnode);
} else { } else {
// this is the last component // this is the last component
@@ -1265,6 +1265,14 @@ out:
} }
static void
publish_node(devfs *fs, devfs_vnode *dirNode, struct devfs_vnode *node)
{
hash_insert(fs->vnode_hash, node);
devfs_insert_in_dir(dirNode, node);
}
static status_t static status_t
publish_device(struct devfs *fs, const char *path, device_node_info *deviceNode, publish_device(struct devfs *fs, const char *path, device_node_info *deviceNode,
pnp_devfs_driver_info *info, driver_entry *driver, device_hooks *ops, pnp_devfs_driver_info *info, driver_entry *driver, device_hooks *ops,
@@ -1300,7 +1308,7 @@ publish_device(struct devfs *fs, const char *path, device_node_info *deviceNode,
RecursiveLocker locker(&fs->lock); RecursiveLocker locker(&fs->lock);
status = publish_node(fs, path, &node, &dirNode); status = new_node(fs, path, &node, &dirNode);
if (status != B_OK) if (status != B_OK)
return status; return status;
@@ -1330,8 +1338,7 @@ publish_device(struct devfs *fs, const char *path, device_node_info *deviceNode,
} }
// the node is now fully valid and we may insert it into the dir // the node is now fully valid and we may insert it into the dir
hash_insert(sDeviceFileSystem->vnode_hash, node); publish_node(fs, dirNode, node);
devfs_insert_in_dir(dirNode, node);
return B_OK; return B_OK;
} }
@@ -1803,7 +1810,7 @@ devfs_open(fs_volume _fs, fs_vnode _vnode, int openMode, fs_cookie *_cookie)
// TODO: we might want to check if the current node does still exist // TODO: we might want to check if the current node does still exist
// (it should fail in the driver's open(), though, if it doesn't) // (it should fail in the driver's open(), though, if it doesn't)
if (driver != NULL if (driver != NULL
&& (driver->devices_used == 0) && driver->devices_used == 0
&& (driver->image < 0 || driver->binary_updated)) { && (driver->image < 0 || driver->binary_updated)) {
status = reload_driver(driver); status = reload_driver(driver);
if (status < B_OK) if (status < B_OK)
@@ -2889,7 +2896,7 @@ devfs_publish_file_device(const char *path, const char *filePath)
RecursiveLocker locker(&sDeviceFileSystem->lock); RecursiveLocker locker(&sDeviceFileSystem->lock);
status = publish_node(sDeviceFileSystem, path, &node, &dirNode); status = new_node(sDeviceFileSystem, path, &node, &dirNode);
if (status != B_OK) if (status != B_OK)
return status; return status;
@@ -2899,8 +2906,7 @@ devfs_publish_file_device(const char *path, const char *filePath)
node->stream.u.symlink.length = strlen(filePath); node->stream.u.symlink.length = strlen(filePath);
// the node is now fully valid and we may insert it into the dir // the node is now fully valid and we may insert it into the dir
hash_insert(sDeviceFileSystem->vnode_hash, node); publish_node(sDeviceFileSystem, dirNode, node);
devfs_insert_in_dir(dirNode, node);
return B_OK; return B_OK;
} }