devfs: createdir and remove

This commit is contained in:
Matheus
2024-05-03 15:10:55 -03:00
parent 33c8a4d107
commit 7b3c657f34
2 changed files with 10 additions and 1 deletions
+7 -1
View File
@@ -218,6 +218,7 @@ int devfs_inactive(vnode_t *node) {
if (devnode->master)
VOP_RELEASE(master);
// only called when the master is inactive
if (devnode->devops && devnode->devops->inactive)
devnode->devops->inactive(devnode->attr.rdevminor);
@@ -356,7 +357,7 @@ static vops_t vnops = {
.link = devfs_enodev,
.symlink = devfs_enodev,
.readlink = devfs_enodev,
.inactive = devfs_enodev,
.inactive = devfs_inactive,
.mmap = devfs_mmap,
.munmap = devfs_munmap,
.getdents = devfs_getdents,
@@ -497,3 +498,8 @@ void devfs_remove(char *name, int major, int minor) {
VOP_RELEASE(vnode);
VOP_RELEASE(vnode);
}
int devfs_createdir(char *name) {
vattr_t attr = {0};
return vfs_create((vnode_t *)devfsroot, name, &attr, V_TYPE_DIR, NULL);
}
+3
View File
@@ -17,6 +17,7 @@
#define DEV_MAJOR_URANDOM 9
#define DEV_MAJOR_NET 10
#define DEV_MAJOR_MOUSE 11
#define DEV_MAJOR_PTY 12
typedef struct {
int (*open)(int minor, vnode_t **vnode, int flags);
@@ -45,5 +46,7 @@ void devfs_init();
int devfs_getnode(vnode_t *physical, int major, int minor, vnode_t **node);
int devfs_register(devops_t *devops, char *name, int type, int major, int minor, mode_t mode);
int devfs_getbyname(char *name, vnode_t **ret);
int devfs_createdir(char *name);
void devfs_remove(char *name, int major, int minor);
#endif