diff options
| author | Ian Moffett <ian@osmora.org> | 2025-11-21 13:44:40 -0500 |
|---|---|---|
| committer | Ian Moffett <ian@osmora.org> | 2025-11-21 13:44:40 -0500 |
| commit | fe5a7b301f4700c806570fbea0e564a180d8a5a9 (patch) | |
| tree | 1304ae420e883891aa804340fbc7b584463e9bea /sys/kern | |
| parent | d4f54c32f593e1d34663f4e287b452c83da19ba1 (diff) | |
kern: vfs: Add vnode VOP wrappers
Signed-off-by: Ian Moffett <ian@osmora.org>
Diffstat (limited to 'sys/kern')
| -rw-r--r-- | sys/kern/vfs_subr.c | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c index 3fd8503..2c08f36 100644 --- a/sys/kern/vfs_subr.c +++ b/sys/kern/vfs_subr.c @@ -89,3 +89,53 @@ vnode_release(struct vnode *vp) kfree(vp); return 0; } + +ssize_t +vnode_read(struct vnode *vp, void *buf, size_t size, off_t off) +{ + struct vop_buf_args args; + struct vops *vops; + + if (vp == NULL || buf == NULL) { + return -EINVAL; + } + + if (size == 0) { + return -EINVAL; + } + + vops = &vp->vops; + if (vops->read == NULL) { + return -ENOTSUP; + } + + args.buffer = buf; + args.len = size; + args.offset = off; + return vops->read(&args); +} + +ssize_t +vnode_write(struct vnode *vp, const void *buf, size_t size, off_t off) +{ + struct vop_buf_args args; + struct vops *vops; + + if (vp == NULL || buf == NULL) { + return -EINVAL; + } + + if (size == 0) { + return -EINVAL; + } + + vops = &vp->vops; + if (vops->write == NULL) { + return -ENOTSUP; + } + + args.buffer = (void *)buf; + args.len = size; + args.offset = off; + return vops->write(&args); +} |
