Voxia OS
v0.0.1
Hobby Project Operating System Targeting x86-64
Loading...
Searching...
No Matches
vnode.h
Go to the documentation of this file.
1
#ifndef __VFS__VNODE_H__
2
#define __VFS__VNODE_H__
3
4
#include "
vfs/dentry.h
"
5
#include "
vfs/dev.h
"
6
#include "
vfs/filesystem.h
"
7
#include <
llist.h
>
8
#include <
type.h
>
9
#include <
vector.h
>
10
11
enum
{
12
VNODE_TYPE_FILE
= 1,
13
VNODE_TYPE_DIR
= 2,
14
VNODE_TYPE_DEV
= 3,
15
VNODE_TYPE_CHR
= 4,
16
VNODE_TYPE_BLK
= 5,
17
VNODE_TYPE_FIFO
= 6,
18
VNODE_TYPE_SOCK
= 7,
19
VNODE_TYPE_LNK
= 8
20
};
21
22
#ifdef __cplusplus
23
extern
"C"
{
24
#endif
25
26
27
typedef
struct
vnode
vnode_t
;
28
typedef
struct
{
29
int (*
ioctl
)(
vnode_t
*
vnode
,
uint32_t
req,
void
* arg);
30
int (*
read
)(
vnode_t
*
vnode
,
void
* buf,
size_t
len
,
size_t
offset
);
31
long (*
write
)(
vnode_t
*
vnode
,
void
* buf,
size_t
len
,
size_t
offset
);
32
}
vops_file_t
;
33
34
typedef
struct
{
35
int (*
readlink
)(
vnode_t
*
vnode
,
char
* buf,
size_t
bufsize);
36
}
vops_lnk_t
;
37
38
39
typedef
struct
thread
thread_t
;
40
typedef
struct
vops_blk
{
41
int (*
ioctl
)(
vnode_t
*
vnode
,
uint32_t
req,
void
* arg);
42
int (*
open
)(
vnode_t
*
vnode
,
int
op_mode,
thread_t
*
thread
);
43
int (*
read
)(
vnode_t
*
vnode
,
uintptr_t
addr
,
void
* buf,
size_t
count
);
44
int (*
write
)(
vnode_t
*
vnode
,
uintptr_t
addr
,
void
* buf,
size_t
count
);
45
int (*
close
)(
vnode_t
*
vnode
);
46
void
*
v_data
;
47
}
vops_blk_t
;
48
49
typedef
uint64_t
vnode_id_t
;
50
51
/*
52
General VNode
53
*/
54
struct
device_id
{
55
uint32_t
major
;
56
uint32_t
minor
;
57
};
58
59
struct
vnode
{
60
atomic_t
refcount
;
61
vnode_id_t
id
;
62
uint8_t
type
;
63
size_t
size
;
64
void
*
ops
;
65
uint16_t
permission
;
66
67
struct
fs_instance
*
fs_instance
;
68
cdev_ptr_t
mountedhere
;
69
cdev_ptr_t
mount
;
70
71
union
{
72
void
*
vnode_private
;
73
struct
device_id
device
;
74
};
75
}
__attribute__
((aligned(64)));
76
77
typedef
struct
vnode
*
vnode_ptr_t
;
78
79
vnode_ptr_t
KERNEL_API
create_vnode();
80
void
vxFreeVnode
(
vnode_ptr_t
vnode
);
81
82
#ifdef __cplusplus
83
}
84
#endif
85
86
#endif
// __VFS__VNODE_H__
count
int count
Definition
cache.h:2
dentry.h
vnode_ptr_t
struct vnode * vnode_ptr_t
Definition
dentry.h:115
dev.h
cdev_ptr_t
cdev_t * cdev_ptr_t
Definition
dev.h:70
addr
volatile uint64_t addr
Definition
e1000.hpp:0
filesystem.h
vnode_t
struct vnode vnode_t
Definition
filesystem.h:10
thread_t
struct thread thread_t
Definition
thread.h:29
__attribute__
typedef __attribute__
Definition
msi.c:47
llist.h
len
size_t len
Definition
oct2bin.h:7
atomic_t
Definition
type.h:79
device_id
Definition
vnode.h:54
device_id::major
uint32_t major
Definition
vnode.h:55
device_id::minor
uint32_t minor
Definition
vnode.h:56
thread
Definition
thread.h:30
vnode
Definition
vnode.h:59
vnode::device
struct device_id device
Definition
vnode.h:73
vnode::ops
void * ops
Definition
vnode.h:64
vnode::vnode_private
void * vnode_private
Definition
vnode.h:72
vnode::refcount
atomic_t refcount
Definition
vnode.h:60
vnode::id
vnode_id_t id
Definition
vnode.h:61
vnode::type
uint8_t type
Definition
vnode.h:62
vnode::permission
uint16_t permission
Definition
vnode.h:65
vnode::fs_instance
struct fs_instance * fs_instance
Definition
vnode.h:67
vnode::size
size_t size
Definition
vnode.h:63
vnode::mount
cdev_ptr_t mount
Definition
vnode.h:69
vnode::mountedhere
cdev_ptr_t mountedhere
Definition
vnode.h:68
vops_blk
Definition
vnode.h:40
vops_blk::v_data
void * v_data
Definition
vnode.h:46
vops_blk::close
int(* close)(vnode_t *vnode)
Definition
vnode.h:45
vops_blk::write
int(* write)(vnode_t *vnode, uintptr_t addr, void *buf, size_t count)
Definition
vnode.h:44
vops_blk::open
int(* open)(vnode_t *vnode, int op_mode, thread_t *thread)
Definition
vnode.h:42
vops_blk::read
int(* read)(vnode_t *vnode, uintptr_t addr, void *buf, size_t count)
Definition
vnode.h:43
vops_blk::ioctl
int(* ioctl)(vnode_t *vnode, uint32_t req, void *arg)
Definition
vnode.h:41
vops_file_t
Definition
vnode.h:28
vops_file_t::write
long(* write)(vnode_t *vnode, void *buf, size_t len, size_t offset)
Definition
vnode.h:31
vops_file_t::ioctl
int(* ioctl)(vnode_t *vnode, uint32_t req, void *arg)
Definition
vnode.h:29
vops_file_t::read
int(* read)(vnode_t *vnode, void *buf, size_t len, size_t offset)
Definition
vnode.h:30
vops_lnk_t
Definition
vnode.h:34
vops_lnk_t::readlink
int(* readlink)(vnode_t *vnode, char *buf, size_t bufsize)
Definition
vnode.h:35
type.h
uint16_t
unsigned short uint16_t
Definition
type.h:13
uint32_t
unsigned int uint32_t
Definition
type.h:19
KERNEL_API
#define KERNEL_API
Definition
type.h:93
uintptr_t
unsigned long uintptr_t
Definition
type.h:73
uint64_t
unsigned long uint64_t
Definition
type.h:25
uint8_t
unsigned char uint8_t
Definition
type.h:7
vector.h
offset
uint32_t offset
Definition
virtio.h:6
VNODE_TYPE_FILE
@ VNODE_TYPE_FILE
Definition
vnode.h:12
VNODE_TYPE_LNK
@ VNODE_TYPE_LNK
Definition
vnode.h:19
VNODE_TYPE_DIR
@ VNODE_TYPE_DIR
Definition
vnode.h:13
VNODE_TYPE_FIFO
@ VNODE_TYPE_FIFO
Definition
vnode.h:17
VNODE_TYPE_CHR
@ VNODE_TYPE_CHR
Definition
vnode.h:15
VNODE_TYPE_BLK
@ VNODE_TYPE_BLK
Definition
vnode.h:16
VNODE_TYPE_SOCK
@ VNODE_TYPE_SOCK
Definition
vnode.h:18
VNODE_TYPE_DEV
@ VNODE_TYPE_DEV
Definition
vnode.h:14
vops_blk_t
struct vops_blk vops_blk_t
vxFreeVnode
void vxFreeVnode(vnode_ptr_t vnode)
vnode_id_t
uint64_t vnode_id_t
Definition
vnode.h:49
include
vfs
vnode.h
Generated on Sat May 30 2026 11:09:57 for Voxia OS by
1.13.2