mirror of
https://github.com/Mathewnd/Astral.git
synced 2026-10-31 06:28:22 +00:00
devfs: createdir and remove
This commit is contained in:
@@ -218,6 +218,7 @@ int devfs_inactive(vnode_t *node) {
|
|||||||
if (devnode->master)
|
if (devnode->master)
|
||||||
VOP_RELEASE(master);
|
VOP_RELEASE(master);
|
||||||
|
|
||||||
|
// only called when the master is inactive
|
||||||
if (devnode->devops && devnode->devops->inactive)
|
if (devnode->devops && devnode->devops->inactive)
|
||||||
devnode->devops->inactive(devnode->attr.rdevminor);
|
devnode->devops->inactive(devnode->attr.rdevminor);
|
||||||
|
|
||||||
@@ -356,7 +357,7 @@ static vops_t vnops = {
|
|||||||
.link = devfs_enodev,
|
.link = devfs_enodev,
|
||||||
.symlink = devfs_enodev,
|
.symlink = devfs_enodev,
|
||||||
.readlink = devfs_enodev,
|
.readlink = devfs_enodev,
|
||||||
.inactive = devfs_enodev,
|
.inactive = devfs_inactive,
|
||||||
.mmap = devfs_mmap,
|
.mmap = devfs_mmap,
|
||||||
.munmap = devfs_munmap,
|
.munmap = devfs_munmap,
|
||||||
.getdents = devfs_getdents,
|
.getdents = devfs_getdents,
|
||||||
@@ -497,3 +498,8 @@ void devfs_remove(char *name, int major, int minor) {
|
|||||||
VOP_RELEASE(vnode);
|
VOP_RELEASE(vnode);
|
||||||
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);
|
||||||
|
}
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
#define DEV_MAJOR_URANDOM 9
|
#define DEV_MAJOR_URANDOM 9
|
||||||
#define DEV_MAJOR_NET 10
|
#define DEV_MAJOR_NET 10
|
||||||
#define DEV_MAJOR_MOUSE 11
|
#define DEV_MAJOR_MOUSE 11
|
||||||
|
#define DEV_MAJOR_PTY 12
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
int (*open)(int minor, vnode_t **vnode, int flags);
|
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_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_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_getbyname(char *name, vnode_t **ret);
|
||||||
|
int devfs_createdir(char *name);
|
||||||
|
void devfs_remove(char *name, int major, int minor);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user