mirror of
https://github.com/Mathewnd/Astral.git
synced 2026-11-01 23:18:21 +00:00
vfs: mmap and munmap
This commit is contained in:
@@ -14,6 +14,8 @@ typedef struct {
|
|||||||
int (*read)(int minor, void *buffer, size_t size, uintmax_t offset, int flags, size_t *readc);
|
int (*read)(int minor, void *buffer, size_t size, uintmax_t offset, int flags, size_t *readc);
|
||||||
int (*write)(int minor, void *buffer, size_t size, uintmax_t offset, int flags, size_t *writec);
|
int (*write)(int minor, void *buffer, size_t size, uintmax_t offset, int flags, size_t *writec);
|
||||||
int (*poll)(int minor, int events);
|
int (*poll)(int minor, int events);
|
||||||
|
int (*mmap)(int minor, void *addr, uintmax_t offset, int flags);
|
||||||
|
int (*munmap)(int minor, void *addr, uintmax_t offset, int flags);
|
||||||
} devops_t;
|
} devops_t;
|
||||||
|
|
||||||
typedef struct devnode_t {
|
typedef struct devnode_t {
|
||||||
|
|||||||
@@ -51,6 +51,8 @@ typedef struct vfs_t {
|
|||||||
#define V_FFLAGS_READ 1
|
#define V_FFLAGS_READ 1
|
||||||
#define V_FFLAGS_WRITE 2
|
#define V_FFLAGS_WRITE 2
|
||||||
#define V_FFLAGS_NONBLOCKING 4
|
#define V_FFLAGS_NONBLOCKING 4
|
||||||
|
#define V_FFLAGS_SHARED 8
|
||||||
|
#define V_FFLAGS_EXEC 16
|
||||||
|
|
||||||
typedef struct vnode_t {
|
typedef struct vnode_t {
|
||||||
struct vops_t *ops;
|
struct vops_t *ops;
|
||||||
@@ -85,6 +87,8 @@ typedef struct vops_t {
|
|||||||
int (*symlink)(vnode_t *parent, char *name, vattr_t *attr, char *path, cred_t *cred);
|
int (*symlink)(vnode_t *parent, char *name, vattr_t *attr, char *path, cred_t *cred);
|
||||||
int (*readlink)(vnode_t *parent, char **link, cred_t *cred);
|
int (*readlink)(vnode_t *parent, char **link, cred_t *cred);
|
||||||
int (*inactive)(vnode_t *node);
|
int (*inactive)(vnode_t *node);
|
||||||
|
int (*mmap)(vnode_t *node, void *addr, uintmax_t offset, int flags, cred_t *cred);
|
||||||
|
int (*munmap)(vnode_t *node, void *addr, uintmax_t offset, int flags, cred_t *cred);
|
||||||
} vops_t;
|
} vops_t;
|
||||||
|
|
||||||
#define VFS_MOUNT(vfs, mp, b, d) (vfs)->ops->mount(vfs, mp, b, d)
|
#define VFS_MOUNT(vfs, mp, b, d) (vfs)->ops->mount(vfs, mp, b, d)
|
||||||
@@ -109,6 +113,8 @@ typedef struct vops_t {
|
|||||||
#define VOP_LINK(v, d, n, c) (v)->ops->link(v, d, n, c)
|
#define VOP_LINK(v, d, n, c) (v)->ops->link(v, d, n, c)
|
||||||
#define VOP_SYMLINK(v, n, a, p, c) (v)->ops->symlink(v, n, a, p, c)
|
#define VOP_SYMLINK(v, n, a, p, c) (v)->ops->symlink(v, n, a, p, c)
|
||||||
#define VOP_READLINK(v, l, c) (v)->ops->readlink(v, l, c)
|
#define VOP_READLINK(v, l, c) (v)->ops->readlink(v, l, c)
|
||||||
|
#define VOP_MMAP(v, a, o, f, c) (v)->ops->mmap(v, a, o, f, c)
|
||||||
|
#define VOP_MUNMAP(v, a, o, f, c) (v)->ops->munmap(v, a, o, f, c)
|
||||||
|
|
||||||
// lock not needed unless atomicity is desired
|
// lock not needed unless atomicity is desired
|
||||||
#define VOP_POLL(v, p) (v)->ops->poll(v, p);
|
#define VOP_POLL(v, p) (v)->ops->poll(v, p);
|
||||||
|
|||||||
Reference in New Issue
Block a user